quarta-feira, 15 de junho de 2011

SQL - UNIQUE

A Constraint UNIQUE Permite indicar que os valores desse campo não se podem repetir.


Para não existir dados repetidos os SGBD's criam, campos UNIQUE, um índice único.


Se necessário, é possível a especificação da constraint UNIQUE relativa a dois ou mais campos.



A restrição UNIQUE identifica exclusivamente cada registro em uma tabela do banco de dados.


A única e restrições PRIMARY KEY fornece uma garantia exclusiva para uma coluna ou conjunto de colunas.
Uma restrição PRIMARY KEY automaticamente tem uma restrição UNIQUE definida sobre ela.
Observe que pode ter muitas restrições UNIQUE por tabela, mas só uma restrição PRIMARY KEY por tabela.

SQL restrição exclusiva em CREATE TABLE


CREATE TABLE Pessoas(
P_Id int NOT NULL,
Sobrenome varchar(255) NOT NULL,
Nome varchar(255),
Endereço varchar(255),
Cidade varchar(255),
UNIQUE (P_Id));

SQL - CHECK

A Constraint CHECK() permite realizar a validação dos dados introduzidos no campo através de uma condição.
São admitidos apenas os dados cujo resultado da validação seja verdadeira.

Exemplo:

CREATE TABLE TESTES
ID INTEGER NOT NULL,
NOME CHAR(60) NOT NULL CHECK (nome not like '%Reginaldo%'),
IDADE INTEGER NOT NULL CHECK (idade BETWEEN 0 And 150),
SEXO CHAR NOT NULL CHECK (Sexo IN ('M','F'));


É Possível a especificação da constraint relatia a dois ou mais campos.

SQL - NOT NULL

NOT NULL

A Constrain NOT NULL é a restrição de uso mas generalizado após impede a instrução de valores existentes.

Exemplo:
CREATE TABLE Testes
id INTEGER NOT NULL,
NOME CHAR (30) NOT NULL;

Como é que vamos selecionar somente os registos com valores nulos no campo "Endereço"?

Vamos ter de usar o operador IS NOT NULL:

SELECT Sobrenome,Nome,Endereço FROM Pessoas
WHERE Endereço IS NOT NULL

Resultado:

ApelidoNomeEndereço
SvendsonToveBorgvn 23

SQL - NULL

NULL
valores nulos representam falta de dados desconhecidos.
Por defeito, uma coluna de tabela pode conter valores NULL.

Valores NULL SQL

Se uma coluna em uma tabela é opcional, podemos inserir um registro novo ou actualização de um registo existente sem adicionar um valor para esta coluna. Isto significa que o campo será salvo com um valor NULL.
Valores NULL são tratados de forma diferente de outros valores.
NULL é usado como um espaço reservado para valores desconhecidos ou inaplicáveis.

SQL Trabalhando com Valores NULL

Observe as "pessoas" no tabela seguinte:

P_IdApelidoNomeEndereçoCidade
1HansenOla Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKari Stavanger

Suponha que o "endereço" na coluna "pessoas" na tabela é opcional. Isto significa que, se inserir um registo, sem valor para o "Endereço" da coluna, o "Endereço" da coluna será salvo com um valor NULL.

Como podemos testar valores nulos?
Não é possível para testar valores NULL com operadores de comparação, como =, <ou <>.

Vamos ter de usar o IS NULL ou IS NOT NULL.

SQL IS NULL

Como é que vamos selecionar apenas os registos com valores nulos no campo "Endereço"?

Vamos usar o operador IS NULL:

SELECT Sobrenome,Nome,Endereço FROM Pessoas
WHERE Endereço IS NULL

Resultado:

ApelidoNomeEndereço
HansenOla 
PettersenKari