Portable SQL/Common/DBMS Differences

From Linuxnetworks
< Portable SQL
Revision as of 14:18, 3 September 2006 by Nose (Talk | contribs)

Jump to: navigation, search


Differences between implementations

NULL in column definition

This table is originally from "Building Truly Portable Database Applications in PHP": NULL

Database Default value Definition allowed Notes
Firebird NULL no
MySQL NULL yes
Oracle NULL yes Empty strings considered NULL
PostgreSQL NULL yes
SQL Server NOT NULL yes
SQLite NULL yes
Sybase ASE NOT NULL yes

The "Definition allowed" column indicates if specifying NULL in table column definitions is allowed for CREATE TABLE statements - NOT NULL is always allowed. If "yes", the following statement doesn't generate an error:

CREATE TABLE mytable ( id INTEGER NULL )

Identifier case

This table is originally from "Building Truly Portable Database Applications in PHP": Column Name Case

Database Case Notes
Firebird upper preserved when using double quotes (")
MySQL preserved
Oracle upper
PostgreSQL lower
SQL Server preserved
SQLite preserved
Sybase ASE preserved

Since OpenDBX 1.1.4 the use of double quotes (") for identifiers (table and column names) is suggested. This complies to ANSI standards and is the only way to use reserved words and prevent clashes in the future if language constructs are extended by the database vendors.