ddl em sql
DESCRIPTION
DDL em SQL. Álvaro Vinícius de Souza Coêlho [email protected]. O Que é DDL. DDL – Data Definition Language Conjunto de comandos utilizado pelo SQL (ou por outras linguagens) para estabelecer (estruturas de) dados - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/2.jpg)
O Que é DDL
• DDL – Data Definition Language
• Conjunto de comandos utilizado pelo SQL (ou por outras linguagens) para estabelecer (estruturas de) dados
• Dados em Bancos de Dados Relacionais -> Tabelas e Relações entre tabelas
![Page 3: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/3.jpg)
Criando Tabelas
• Create Table
• Formato:Create table NomeTabela (
NomeColuna TipoDado <RestriçãoColuna>,
...,
<RestriçãoTabela>
)
![Page 4: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/4.jpg)
Criando Tabelas
• Onde:– NomeTabela é o nome da tabela a ser criada– NomeColuna é o nome da coluna a ser criada– TipoDado é o tipo de dado armazenado naquela
coluna
![Page 5: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/5.jpg)
Criando Tabelas
• Onde:– RestriçãoColuna é uma restrição (constraint)
de valores possíveis para uma coluna específica– RestriçãoTabela é uma restrição (constraint) de
valores possíveis para algumas colunas (não uma especificamente)
![Page 6: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/6.jpg)
Tipos de Dados
• Em SQL há alguns tipos de dados padrão
• E uma infinidade de tipos específicos de cada fabricante (Oracle, Microsoft SQL Server, Informix, DB2, etc.)
![Page 7: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/7.jpg)
Tipos 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
![Page 8: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/8.jpg)
Tipos de Dados
• Os tipos mais comuns:– Date (ou DateTime) que armazena dados do
tipo Data e Hora – normalmente sem distinção• O formato de armazenamento é interno. Os SGBDs
oferecem métodos de se escrever e ler datas via funções de conversão ou conversões automáticas a partir de caracteres
![Page 9: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/9.jpg)
Tipos de Dados
• Os tipos mais comuns:– Long (ou Blob) para armazenar dados especiais
• Imagens, documentos de texto, dados multimídia, etc.
– Devem ser interpretados por aplicativos específicos (RealPlayer, Paint, Netscape, etc.)
• O SGBD apenas armazena: Não ordena, não usa como chave, não compara
![Page 10: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/10.jpg)
Tipos de Dados
• 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
![Page 11: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/11.jpg)
Exemplo Create Table
Create Table Aluno (
Matricula char(11),
RG char(11),
Nome varchar(50),
DataNasc date,
PontosVest number(4,0)
)
![Page 12: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/12.jpg)
Chave Primária
• Uma tabela, em Bancos de Dados Relacionais, deve ter pelo menos uma coluna que identifique unicamente cada linha
• 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
![Page 13: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/13.jpg)
Chave Primária
• Declara-se uma chave primária com uma restrição– De coluna, caso a chave seja uma única coluna– De tabela, caso a chave seja múltipla (mais de
uma coluna)
• Em caso de chaves múltiplas, a tupla de colunas tem que ser única e nenhuma delas pode ser nula
![Page 14: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/14.jpg)
Chave Primária
• Chaves Naturais e Artificiais
• Em alguns projetos de BD alguns atributos se candidatam a chave primária naturalmente– Matrícula, RG, Placa, CPF, Código, etc.
• Em outros casos a chave pode precisar ser gerada pelo sistema
![Page 15: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/15.jpg)
Chave Primária
• Chaves Geradas (Artificiais)
• Uma coluna é criada, e a cada nova linha incluída na tabela, um valor em seqüência é dado automaticamente a ela– Nunca se repete– Nunca será nulo
![Page 16: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/16.jpg)
Chave Primária
• No exemplo de aluno– Matrícula pode ser uma chave primária– RG também
• 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)
![Page 17: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/17.jpg)
Chave Primária
Create Table Aluno (
Matricula char(11) primary key,
RG char(11),
Nome varchar(50),
DataNasc date,
PontosVest number(4,0)
)
![Page 18: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/18.jpg)
Chave Primária
• Caso a chave seja formada por mais de uma coluna, deve ser explicitada numa restrição de tabela
• Numa tabela do INSS que registra os funcionários na RAIS a identificação de um trabalhador poderia ser feita com:
Primary key (CNPJ,Matricula)
![Page 19: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/19.jpg)
Chave Alternativa
• Caso se deseje estabelecer uma chave alternativa, mas sem as restrições de uma chave primária– Por exemplo, RG não deve se repetir (único)
mas eventualmente pode ser nulo
![Page 20: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/20.jpg)
Chave Alternativa
Create Table Aluno (
Matricula char(11) primary key,
RG char(11) unique,
Nome varchar(50),
DataNasc date,
PontosVest number(4,0)
)
![Page 21: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/21.jpg)
Demais Restrições
• Pode-se estabelecer ainda os seguintes tipos de restrições numa tabela– Checagem de valores– Permissão ou não de valores nulos– Valores padrão– Referências a chaves de outras tabelas (Chaves
Estrangeiras)
![Page 22: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/22.jpg)
Demais Restrições
• Checagem de Valores
• A cláusula Check verifica os valores possíveis para um conjunto de colunas
• Check(Condição)
• Uma linha só é inclusa numa tabela se todas as condições estabelecidas nas cláusulas Check são satisfeitas
![Page 23: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/23.jpg)
Demais Restrições
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’)
)
![Page 24: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/24.jpg)
Demais Restrições
• Notar que Check apareceu como restrição de Tabela, apesar de ser de uma coluna apenas
• Check não precisa se restringir a testes de apenas uma coluna
• Caso haja uma coluna NumReservista, válida apenas para rapazes:
![Page 25: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/25.jpg)
Demais Restrições
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))
)
![Page 26: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/26.jpg)
Demais Restrições
• Não Nulo
• Para obrigar que uma coluna tenha sempre um valor há duas alternativas– Estabelecer como Chave Primária– Checa-la (Check) como não nula (Not Null)
• A segunda opção pode ser simplificada numa restrição de coluna
![Page 27: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/27.jpg)
Demais Restrições
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,
)
![Page 28: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/28.jpg)
Demais Restrições
• Valores Default
• Pode-se estabelecer um valor padrão para uma coluna. Neste caso, caso ela não tenha sido valorada num comando Insert ela receberá o valor definido por default
![Page 29: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/29.jpg)
Demais Restrições
Create Table Curso (Codigo Char(10) primary key,Nome Varchar(20) unique not null,NumSemestres number(2) default 8
)
![Page 30: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/30.jpg)
Referências
• Chaves Estrangeiras
• Quando uma coluna de uma tabela é dita chave estrangeira ela:– Se refere a uma linha de outra tabela– Só pode receber como valor uma cópia de
alguma chave primária da tabela referenciada
![Page 31: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/31.jpg)
Referências
• Para identificar que um aluo é de um determinado curso, por exemplo:
• Uma coluna CodCurso pode ser criada
• Estabelece-se que esta coluna é chave estrangeira da tabela Curso– Só pode receber um código de curso existente– Vai “apontar” para este curso
![Page 32: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/32.jpg)
Referências
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,CodCurso Char(10) references Curso
)
![Page 33: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/33.jpg)
Referências
• Não é necessário se estabelecer quem é a coluna na tabela Curso – Será a chave primária
• Os tipos dos dados tem que ser compatíveis (não se pode usar Data numa tabela e Caractere noutra)
![Page 34: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/34.jpg)
Referências
• Pode-se desejar que a relação seja obrigatória ou não– Um aluno pode existir sem estar em nenhum
curso?
• Caso a resposta seja Não, deve-se impor uma restrição a mais em CodCurso
![Page 35: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/35.jpg)
Referências
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,CodCurso Char(10) references Curso Not Null
)
![Page 36: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/36.jpg)
Referências
• Restrições de chave estrangeira podem ser feitas usando-se mais de uma coluna
• Neste caso usa-se uma restrição de tabela
![Page 37: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/37.jpg)
Referências
• No exemplo do INSS, caso se deseje referenciar numa tabela Rendimentos a tabela de trabalhadores, cuja chave primária é o par (CNPJ, Matricula)
Foreign key (RendCNPJ, RendMatricula) references Funcionarios(Cnpj, Matricula)
![Page 38: DDL em SQL](https://reader035.vdocuments.com.br/reader035/viewer/2022081420/5681508b550346895dbe887d/html5/thumbnails/38.jpg)
DDL em SQL.
FIM!
“Estatísticas provam que a mortalidade no exército aumenta sensivelmente em tempo de guerra”
Alphonse AllaisAnita Malfatti