1 1 | (nulo) (nulo) | 1 (nulo) | (nulo) 1 | (nulo)(5 linhas)SQL Server 2000:CREATE TABLE tbl_unique (c1 int, c2 int, UNIQUE (c1, c2))INSERT INTO tbl_unique VALUES (1,1)INSERT INTO tbl_unique VALUES (1,NULL)INSERT INTO tbl_unique VALUES (NULL,1)INSERT INTO tbl_unique VALUES (NULL,NULL)INSERT INTO tbl_unique VALUES (1,NULL)Violation of UNIQUE KEY constraint 'UQ__tbl_unique__33D4B598'.Cannot insert duplicate key in object 'tbl_unique'.The statement has been terminated.SELECT * FROM tbl_uniquec1 c2----------- -----------NULL NULLNULL 11 NULL1 1(4 row(s) affected)Oracle 10g:SQL> SET NULL (nulo)SQL> CREATE TABLE tbl_unique (c1 int, c2 int, UNIQUE (c1, c2));SQL> INSERT INTO tbl_unique VALUES (1,1);SQL> INSERT INTO tbl_unique VALUES (1,NULL);SQL> INSERT INTO tbl_unique VALUES (NULL,1);SQL> INSERT INTO tbl_unique VALUES (NULL,NULL);SQL> INSERT INTO tbl_unique VALUES (1,NULL);INSERT INTO tbl_unique VALUES (1,NULL)*ERROR at line 1:ORA-00001: unique constraint (SCOTT.SYS_C005273) violatedSQL> SELECT * FROM tbl_unique; C1 C2---------- ---------- 1 1 1 (nulo)(nulo) 1(nulo) (nulo) Cadeia de caracteres vazia e valor nuloAbaixo sao mostrados exemplos de consulta a uma tabela contendo tanto o valor nulo quanto uma cadeia de caracteres vazia em uma coluna. Deve ser observado que apenas o Oracle 10g nao faz distincao entre a cadeia de caracteres vazia e o valor nulo. Foram utilizados os seguintes comandos para criar e inserir dados na tabela em todos os gerenciadores de banco de dados:CREATE TABLE c (c1 varchar(6), c2 varchar(6));INSERT INTO c VALUES ('x', 'x');INSERT INTO c VALUES ('VAZIA', '');INSERT INTO c VALUES ('NULA', null);PostgreSQL 8.0.0:=> \pset null '(nulo)'=> SELECT * FROM c WHERE c2 IS NULL; c1 | c2------+-------- NULA | (nulo)(1 linha)SQL Server 2000:SELECT * FROM c WHERE c2 IS NULLc1 c2------ ------NULA NULL(1 row(s) affected)Oracle 10g:SQL> SET NULL (nulo)SQL> SELECT * FROM c WHERE c2 IS NULL;C1 C2------ ------VAZIA (nulo)NULA (nulo)DB2 9.1:db2 > SELECT * FROM c WHERE c2 IS NULL;C1 C2------ ------NULA - Coluna sem restricao de nao nulo em chave primariaAbaixo sao mostrados exemplos de criacao de uma tabela definindo uma chave primaria em uma coluna que nao e definida como nao aceitando o valor nulo. O padrao SQL diz que, neste caso, a restricao de nao nulo e implicita, mas o DB2 nao implementa desta forma, enquanto o PostgreSQL, o SQL Server e o Oracle seguem o padrao. Tambem sao mostrados comandos para exibir a estrutura da tabela nestes gerenciadores de banco de dados.PostgreSQL 8.0.0:=> CREATE TABLE c (c1 int, PRIMARY KEY(c1));=> \d c Tabela "public.c" Coluna | Tipo | Modificadores--------+---------+--------------- c1 | integer | not nullIndices: "c_pkey"chave primaria, btree (c1)SQL Server 2000:CREATE TABLE c (c1 int, PRIMARY KEY(c1));sp_help cName Owner Type Created_datetime---- ----- ---------- -----------------------c dbo user table 2005-03-28 11:00:24.027Column_name Type Computed Length Prec Scale Nullable----------- ---- -------- ------ ----- ----- -------- ...c1 int no 4 10 0 noindex_name index_description index_keys--------------- ------------------------------------------------- ----------PK__c__403A8C7D clustered, unique, primary key located on PRIMARY c1Oracle 10g:SQL> CREATE TABLE c (c1 int, PRIMARY KEY(c1));SQL> DESCRIBE c Name Null? Type ---- -------- ---------- C1 NOT NULL NUMBER(38)SQL> SELECT index_name, index_type, tablespace_name, uniqueness 2 FROM user_indexes 3 WHERE table_name='C';INDEX_NAME INDEX_TYPE TABLESPACE_NAME UNIQUENES----------- ---------- --------------- ---------SYS_C005276 NORMAL USERS UNIQUEDB2 9.1:db2 => CREATE TABLE c (c1 int, PRIMARY KEY(c1));SQL0542N "C1" nao pode ser uma coluna de uma chave primaria ou exclusiva,porque pode conter valores