I think it's better to pick one database and try to design and code
to its strengths and weaknesses.
I've worked on several projects in which the overall architectural
plan involved writing a database abstraction layer to keep options
open as to the specific relational db - MySQL, Oracle, MS SQL, etc.
None of these projects has gone particularly well. I've worked on
other projects where the focus was on making things work well with
whatever database was chosen and not worrying so much about keeping
the options open, and these projects have gone much better. And in
neither case has the project actually ever switched databases, so the
effort spent in trying to preserve compatibility was wasted.
If you stick to the lowest common denominator in your SQL you won't
be taking advantage of any of the unique benefits which the different
servers bring. MySQL is my favorite database. For web work it has
several significant advantages over other databases - the LIMIT
clause alone is unique to MySQL and it's worth using MySQL just for
that. For example, if you use MS SQL and .Net, the entire results of
queries are sent from the DB server to the web server and pagination
is done on the web server. This moves a lot more data over network
connections, ties up more memory in the db and web server, and slows
things down. With the LIMIT clause, only the rows to be displayed on
the current page are sent over the wire. If you try to use only the
ANSI standard features of MySQL you will miss out on this advantage.
Here is an interesting article about Google's switch from MySQL to
Oracle for AdWords: http://xooglers.blogspot.com/2005/12/lets-get-
real-database.html I believe (can anyone from the big G confirm or
correct?) that AdWords has been moved back to MySQL.
Oracle has some neat features for handling trees and hierarchical
data (CONNECT BY etc) which won't work in any other version of SQL.
If you're going to use Oracle and you have data which is best
represented in trees, it would be a mistake to not use Oracle's built-
in tree features. Oracle is very nice, but it doesn't give you any
speed over MySQL and you can put a man on the moon for less money.
Microsoft SQL Server is very nice if you like that sort of thing and
Sybase is pretty much the same thing only the port numbers have been
changed to protect the innocent. I'm sure DB2 and Postgres and
Informix and all the others are very nice too.
Stored procedure syntax is significantly different among the major
dbs, so if you're going to limit yourself to standard sql there's no
point in using stored procedures. Which isn't really a bad thing on
On Mar 22, 2006, at 11:30 PM, David Griffiths wrote:
> That's a pretty difficult request:
> 1) What versions? MySQL 4.0 has no stored procedures, functions,
> views, subselects. 4.1 added subselects. 5.0 added the rest. Oracle
> 8i doesn't support ANSI-style outer joins (they use a proprietary
> 2) Different engines; MySQL supports federated, archive, MyISAM,
> InnoDB in 5.0 (there are probably a few others). Each engine has
> different DML (Data Manipulation Language - select, insert, update,
> delete) and DDL options (ALTER TABLE, CREATE TABLE, etc).
> 3) Built-in funtions vary widely (though there are some common
> ones, the format and structure can differ).
> That's just touching the surface (I have 5 minutes while a database
> machine reboots, so I thought I'd post a reply).
> I am not sure what you are after, but you might want to consider an
> existing ORM (Object-Relational) tool that does the SQL for you.
> Hibernate for Java is amazing, and NHibernate is now out for .NET
> (not sure if it's alpha, beta or production).
> If you are coding to experiment, I'd suggest you limit yourself to
> a few (MySQL-InnoDB is very popular, and Postgres). Both free, with
> lots of good online-documentation available.
> Check out this article:
> ChadDavis wrote:
>> Does anyone know of a resource ( on the web perhaps ) that
>> discusses the
>> core differences between the different database's sql. I'm trying to
>> code that produces the correct sql for a variety of databases. Such
>> as Oracle's SEQUENCES versus mysql's AUTO_INCREMENT are of interest.
>> I'm asking too much to find a summary of such differences. But
>> I'm only
>> interested in using mainstream sql functinality, nothing complicated.
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: http://lists.mysql.com/mysql?unsub=1