A ULA 2
C RIANDO T ABELAS - C REATE TABLE
Create Table
Sintaxe
Create table NomeTabela (
NomeColuna TipoDado [RestriçãoColuna], NomeColuna TipoDado [RestriçãoColuna], NomeColuna TipoDado [RestriçãoColuna],
...,
[RestriçãoTabela]
)
NomeTabela é o nome da tabela a ser criada
NomeColuna é o nome da coluna a ser criada
TipoDado é o tipo de dado armazenado naquela coluna
E a Restrição da Tabela e Coluna?
T IDO DE DADOS
Em SQL encontramos:
tipos de dados padrão;
uma infinidade de tipos específicos de cada fabricante
(Oracle, Microsoft SQL Server, Informix, DB2, etc.).
T IPOS DE DADOS
Os tipos mais comuns:
Number(i,d) onde i é o número de dígitos na parte inteira e d número de dígitos na parte decimal, ex:
Number(6,2);
Char(n) onde n é o número fixo de caracteres reservados;
VarChar(n) onde n é o número máximo (variável) de caracteres reservados;
Date ou DateTime - armazena dados do tipo Data e Hora;
Os SGBDs oferecem métodos de se escrever e ler
datas via funções de conversão.
T IPOS DE DADOS
Long ou Blob para armazenar dados especiais
Imagens;
Documentos de texto;
Dados multimídia...
Devem ser interpretados por aplicativos
específicos (RealPlayer, Paint, Netscape, etc.)
Tipos específicos
De acordo com o fabricante podem surgir diversos outros tipos
Memo – Textos longos
Integer, Real, Money, etc. (variações de Number)
Hiperlinks – Para Internet
C REATE T ABLE E TIPOS DE DADOS Create Table Aluno (
Matricula char(11),
RG char(11),
Nome varchar(50), DataNasc date,
PontosVest number(4,0)
)
Restrições de
Colunas e Tabelas
O Q UE S ÃO R ESTRIÇÕES ?
Impõem regras sobre as tabelas.
Evitam que uma tabela seja deletada se houver dependências.
Tipos de restrição:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
R ESTRIÇÕES - C HAVE P RIMÁRIA - PRIMARY KEY
Chaves Naturais
Alguns atributos se candidatam a chave primária
naturalmente, ex: Matrícula, RG, Placa, CPF, Código, etc.
Chaves Artificiais
Gerada pelo sistema.
Nunca se repete
Nunca será nulo
Considerando um domínio de Controle
acadêmico, Matrícula parece mais razoável
RG fica como chave alternativa (também é única, mas
não primária)
R ESTRIÇÕES - C HAVE A LTERNATIVA -
UNIQUE
Campos Únicos
RG pode ficar como chave alternativa (também é única, mas não primária);
ÚNICO, mas eventualmente pode ser nulo.
Create Table Aluno (
Matricula char(11) primary key, RG char(11) unique,
Nome varchar(50), DataNasc date,
PontosVest number(4,0)
)
D ECLARANDO R ESTRIÇÕES
Restrição de Coluna é uma restrição
(constraint) de valores possíveis para uma coluna específica;
Restrição de Tabela é uma restrição
(constraint) de valores possíveis para algumas
colunas, não necessariamente uma apenas.
R ESTRIÇÕES - C HAVE P RIMÁRIA - PRIMARY KEY
Nos Bancos de Dados Relacionais, uma tabela deve ter pelo menos uma coluna que identifique unicamente cada registro;
Chama-se a esta coluna Chave Primária
Uma Chave primária
Não se repete
Não pode ser Nulo
É automaticamente indexada pelo BD
Declaração de Tabela
Create Table Aluno (
Matricula char(11) primary key, RG char(11),
Nome varchar(50), DataNasc date,
PontosVest number(4,0)
)
R ESTRIÇÕES - C HAVE P RIMÁRIA - PRIMARY KEY
Restrição de tabela, mais usada para chaves múltiplas.
Sintaxe declaração de Tabela
CONSTRAINT nome PRIMARY KEY (campo)
Create Table Aluno(
Matricula number(11), RG char(11),
Nome varchar(50),
PontosVest number(4,0),
CONSTRAINT pk_Matricula PRIMARY KEY (Matricula)
)
R ESTRIÇÕES - C HAVE M ÚLTIPLA OU
C OMPOSTA
Chaves múltiplas - a tupla de colunas tem que ser única e nenhuma delas pode ser nula
Sintaxe de Chaves múltiplas
CONSTRAINT nome PRIMARY KEY (coluna1, coluna2,...)
Exemplo: uma tabela do INSS que registra os funcionários de uma empresa.
CREATE TABLE funcionario ( nome VARCHAR(10),
numero INTERGER NOT NULL, serie VARCHAR(10) NOT NULL,
CONSTRAINT pky_funcionario PRIMARY KEY (numero, serie)
)
O UTROS TIPOS DE R ESTRIÇÕES
Pode-se estabelecer ainda os seguintes tipos de restrições em uma tabela
Checagem de valores
Valores Nulos e Não Nulos
Valores padrão
Referências REFERENCES (Chaves Estrangeiras)
Restrições
Checagem de Valores
R ESTRIÇÕES - C HECK
A cláusula Check verifica os valores possíveis para um conjunto de colunas;
Sintaxe
Check(Condição)
Uma linha só é inclusa numa tabela se todas as condições estabelecidas nas cláusulas Check são satisfeitas
Create Table Aluno (
Matricula char(11) primary key, RG char(11) unique,
Nome varchar(50), Sexo char(1),
DataNasc date,
PontosVest number(4,0),
Check (Sexo in (‘M’, ‘F’))
)
R ESTRIÇÕES - C HECK
Check pode testar mais de uma coluna;
Caso haja uma coluna NumReservista, válida apenas para rapazes:
Create Table Aluno (
Matricula char(11) primary key, Sexo char(1),
NumReservista char(15), Check (
(Sexo='M' and NumReservista is not null) or (Sexo='F' and NumReservista is null)
)
)
Restrições
Valores Nulos (Null) e
Não Nulos (Not Null)
R ESTRIÇÕES – N OT N ULL
Para obrigar que uma coluna tenha sempre um valor há duas alternativas
Estabelecer como Chave Primária
Checá-la (Check) como não nula (Not Null)
A segunda opção pode ser simplificada numa restrição de coluna
Create Table Aluno (
Matricula char(11) primary key, RG char(11) unique,
Nome varchar(50) not null, DataNasc date not null,
PontosVest number(4,0) not null,
)
E XERCÍCIO 1
Crie uma tabela “funcionários”, com os campos:
CPF;
RG
Quantidade de Filhos;
Estado civil.
Endereco
Crie uma chave primaria a sua escolha como restrição de tabela.
Declare que a quantidade de filhos padrão é ZERO.
Limite o campo Estado Civil aos valores (‘solteiro’, ‘casado’, ‘viuvo’).