There is a list of features that SQLite does *not* support at http://www.sqlite.org/omitted.html. If you find additional features that SQLite does not support, you may want to list them below. ---- *: SQL92 Character sets, collations, coercibility. *: Inserting blob using X'AABBCCDD' syntax. *: Stored Procedures *: Rollup and Cube - _Who can tell me what this means?_ _::: I don't know much about it myself, but a quick google on the subject gives me... http://www.winnetmag.com/SQLServer/Article/ArticleID/5104/5104.html and http://databases.about.com/library/weekly/aa070101a.htm _::: both of these imply that the CUBE operator causes new rows to be generated to give a wildcard value to non-numeric columns and summing the numeric columns which match those wildcards. The potential for generating a huge amount of data with cube is implicit, I think - hence its name. ROLLUP appears to be related but removes some of the wildcards; I couldn't determine what from the limited information in the articles. I could not find, on brief examination any more definitive reference. Anyone got something more definitive than those articles ? It seems to me that you can do with sum() everything you can do with CUBE. *: INSERT INTO with multiple rows (ie. INSERT INTO table VALUES (...), (...). etc) *: CREATE DATABASE, DROP DATABASE - _Does not seem meaningful for an embedded database engine like SQLite. To create a new database, just do sqlite_open(). To drop a database, delete the file._ *: ALTER VIEW, ALTER TRIGGER, ALTER TABLE *: Schemas - _Who can tell me what this means?_ *: TRUNCATE (MySQL, Postgresql and Oracle have it... but I dont know if this is a standard command) - _SQLite does this automatically when you do a DELETE without a WHERE clause._ *: ORDER BY myfield ASC NULLS LAST (Oracle) *: CREATE TRIGGER [BEFORE | AFTER | INSTEAD OF] (Oracle) *: UPDATE with a FROM clause (not sure if this is standard, Sybase and Microsoft have it). *: Multi-column IN clause (ie. SELECT * FROM tab WHERE (key1, key2) IN (SELECT...) *: CURRENT-Functions like CURRENT_DATE, CURRENT_TIME are missing *: INSERTing less values than columns does not fill the missing columns with the default values; if less values than columns in the table are supplied, all columns filled have to be named before the keyword values *: rename table command (mysql has) *: ESCAPE clause for LIKE *: DISTINCT ON (expr,...) - this is from Postgres, where expr,... must be the leftmost expressions from the ORDER BY clause *: MEDIAN and standard deviation... are they standard? Useful for sqlite standalone (for shell script users) *: enum column type (mysql does) *: join syntax (+) (-) like oracle has - _SQLite used to have this but it was removed because it is not standard SQL._ *: name columns in views (i.e. CREATE VIEW (foo, bar) AS SELECT qux, quo FROM baz;)