SQL Vs. Access for Learning Database Concepts?
Jonathan Hamilton asks: "I work at the School of Communications for a major state University. The IT Department for the University (the same people that won't let us have a firewall, and use IIS and Exchange) is trying to talk my boss into switching from using SQL for teaching database concepts to MS Access. My coworkers and I think they are nuts. I have googled for pages comparing the two and can't come up with anything. I know some of the reasons why it is a bad idea, but I can't find any references. Help!" The mantra here is: the best tool for the best job. Is Access a suitable tool for teaching database concepts to students? If not, what would you use instead, and why?
Somehow no one seems to know this: you can execute SQL queries from within the Access GUI.
While editing a query, just click the View menu and go to "SQL View".
So, you can start out with the basics of databases using just Access' GUI tools, and then graduate to SQL without having to switch environments.
This space intentionally left blank.
Use both, really. Having Access gives you rights to use it in conjunction with the MSDE, which is sql server with some limitations.
Access can also be a pass-thru front end to other ODBC enabled RDBMSs.
meh.
- Database Journal has an article comparing SQL Server 2000 and Access 2000, but the feature list shouldn't have changed much. The charts that you are interested in are at the bottom right before the conclusion.
- Here's a speed comparison between MySQL and Access.
- Here's a great comparison of many SQL technologies including Access.
You do realize that you can install MySQL on a server and use Access as the front end via ODBC, don't you. If you do that, you can teach both and show the reasons why a particular solution would fit particular needs in addition to teaching the bare DB concepts. To me, this is the most open ended solution without having to create problems with people at work.US Democracy:The best person for the job (among These pre-selected choices...)
Access has the most overhead according to this.
Here's a link to a discussion where the poster states that Access is not good for large installations...
You might check with IBM (DB2), Oracle, MySQL, or Postgres for help as well...I'm sure they'ld be more than happy to help.
Cross platform compatability. Students with Windoze, Linux, or Macs can run most SQL servers...not so with Access...
And then there's the corporate settings...most companies are using DB2, Oracle, MySql, or something that is ANSI-SQL compatible...not M$ SQL...
You also have more utilities and help available for SQL than Access...
There's GUI tools, schema browsers, etc all available for SQL...
If your school runs its website on a *NIX server, you could up-play the compatibility angle...you know, senior projects and such...
One major advantage of SQL is that all of the companies/organizations that I mentioned are free or have a free educational version...I doubt M$ does...
US Democracy:The best person for the job (among These pre-selected choices...)
I second this. In the into to DB class I took, we didnt even get to any languages at all without going through all the basics, normalizations, etc. Only at the VERY END of the class did we actually use databases, and for that we used oracle. (school had a large piece of sun iron running it, but the class was flexible about using mysql and other databases that understand SQL)
So take the parent posters theme to heart:
Teach the how and why first, then teach someones interpretation(implementation) of that.
This
For the visuals. Queries can be made by dragging and dropping columns from tables. Table creation without learning SQL syntax is simple as well. For that alone, I would recommend Access. It makes it easy to teach the concepts before being mired in syntax cruft.
That said, I would recommend using Access as a frontend to a real database via ODBC. Then you have the ease of use and baby steps at the beginning as well as the power, seamless transition to better functionality, and (perhaps most important) the hint that Access should rarely be used on its own for all but the most trivial of projects.
- I don't need to go outside, my CRT tan'll do me just fine.
Please explain this.
... is the outer query (or outer statement), and (SELECT column1 FROM t2) is the subquery. We say that the subquery is nested in the outer query, and in fact it's possible to nest subqueries within other subqueries, to a great depth. A subquery must always be inside parentheses.
From the page:
6.4.2 Subquery Syntax
A subquery is a SELECT statement inside another statement. For example:
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
In the above example, SELECT * FROM t1
Starting with version 4.1, MySQL supports all subquery forms and operations which the SQL standard requires, as well as a few features which are MySQL-specific.
I can't really figure out what's so "intuitive" about the Access Query builder. I've used SQL for 10 years, and I can't make any sense of how to use that thing. I guess it's designed by and for dumb people.
Also, the SQL it generates is Really Fucked Up -- it's about 10x as verbose as necessary and not formatted in a manner that can easily be read.
In short, I doubt you are going to learn much SQL using the query builder. Figure out the concepts first, and then it's a very simple language.
When a friend asked me to teach him a bit of SQL, I did just that.
To keep it from being boring, we also started doing small web applications with the databases and tables we built - it was actually quite a bit of fun.
We used MySQL, since it was a simple matter to set up on his Windows 2000 laptop for his practice. Apache and PERL are also braindead easy to set up and offer quite a bit of cross-platform usefulness.
I used to do a lot of Access, way back when. I'd recommend avoiding it, as I later spent a lot of time learning to do things properly. It's a nifty little program, but sort of a dead end. Being able to write SQL from the command line or from inside your program is a skill that will be well-worth the time spent climbing the learning curve.
-- My Weblog.
"Grab Firebird, Postgresql, maybe Mysql (kinda lacks some of the advanced sql features) ... and keep Access around for the graphics ideas (just to show students how a database can be exposed to users in a GUI, how tables are laid out, etc.)"
You don't need Access for that.
I certainly agree that the number one "feature", or that is, requirement, of a database is Protect the data at all costs! On that score alone, I'll concede that your point has a higher priority than mine.
But to me, a parallel requirement of a development environment is Protect the code at all costs. If a developer writes the SQL by tap-tap-tapping it out on his own, the tool should leave it the way the developer wrote it.
I don't accept as valid that the tool can go into MY code that I wrote with my own keyboard, days or weeks AFTER I test and deploy to production, and change that code in any way shape or form. Just like with data corruption, if the tool isn't protecting what I've put into it, then I can't KNOW that my system will continue to perform in the manner which I designed and tested it.
Pavlov wouldn't be so famous if he'd used a can opener instead of a bell.
I got part-way some of the higher-rated comments and haven't seen many people talk about a very important point:
Who's the audience and what's your goal?
At my university (medium-sized, well-known Canadian) first-year students have three places to 'start' in CS. New to computers, new to programming and some experience programming.
I've worked with the new to computers crowd, so there is my bias/experience. Database and theory were covered for two weeks in lectures and practical knowledge through three weeks of labs. We used Access - if we didn't, we would have needed triple the time to cover the basic (and maybe a little extra).
More first-year students take this course than there are CS student in the CS program. Their questions are "What is a primary key and why is it there?" NOT "why doesn't my outer join work?".
MySQL is not appropriate for this group. Given an entire course of databases, sure, but now you're targetting the CS major/minor crowd. How many arts/science students would take an entire course on DBs compared to a well-rounded, multiple application course?
Give the minors/majors a real DB. They HAVE to know this stuff at a rudimentary level or their CS degree isn't worth the paper it's printed on. Give the other students a once over with Access, tell them small companies and mom-and-pop stores use it for VERY small installations and point them to the DB course if they want to know more.