ddl em sql

38
DDL em SQL Álvaro Vinícius de Souza Coêlho [email protected]

Upload: vina

Post on 21-Jan-2016

107 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: DDL em SQL

DDL em SQL

Álvaro Vinícius de Souza Coê[email protected]

Page 2: DDL em SQL

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

Criando Tabelas

• Create Table

• Formato:Create table NomeTabela (

NomeColuna TipoDado <RestriçãoColuna>,

...,

<RestriçãoTabela>

)

Page 4: DDL em SQL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DDL em SQL.

FIM!

“Estatísticas provam que a mortalidade no exército aumenta sensivelmente em tempo de guerra”

Alphonse AllaisAnita Malfatti