380 likes | 499 Views
DDL em SQL. Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br. O Que é DDL. DDL – Data Definition Language Conjunto de comandos utilizado pelo SQL (ou por outras linguagens) para estabelecer (estruturas de) dados
E N D
DDL em SQL Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br
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
Criando Tabelas • Create Table • Formato: Create table NomeTabela ( NomeColuna TipoDado <RestriçãoColuna>, ..., <RestriçãoTabela> )
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
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)
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.)
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
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
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
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
Exemplo Create Table Create Table Aluno ( Matricula char(11), RG char(11), Nome varchar(50), DataNasc date, PontosVest number(4,0) )
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
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
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
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
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)
Chave Primária Create Table Aluno ( Matricula char(11) primary key, RG char(11), Nome varchar(50), DataNasc date, PontosVest number(4,0) )
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)
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
Chave Alternativa Create Table Aluno ( Matricula char(11) primary key, RG char(11) unique, Nome varchar(50), DataNasc date, PontosVest number(4,0) )
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)
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
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’) )
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:
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)) )
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
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, )
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
Demais Restrições Create Table Curso ( Codigo Char(10) primary key, Nome Varchar(20) unique not null, NumSemestres number(2) default 8 )
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
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
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 )
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)
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
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 )
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
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)
DDL em SQL. FIM! “Estatísticas provam que a mortalidade no exército aumenta sensivelmente em tempo de guerra” Alphonse Allais Anita Malfatti