1 / 38

DDL em SQL

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

vina
Download Presentation

DDL em SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DDL em SQL Álvaro Vinícius de Souza Coêlho alvaro.degas@terra.com.br

  2. 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

  3. Criando Tabelas • Create Table • Formato: Create table NomeTabela ( NomeColuna TipoDado <RestriçãoColuna>, ..., <RestriçãoTabela> )

  4. 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

  5. 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)

  6. 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.)

  7. 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

  8. 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

  9. 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

  10. 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

  11. Exemplo Create Table Create Table Aluno ( Matricula char(11), RG char(11), Nome varchar(50), DataNasc date, PontosVest number(4,0) )

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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)

  17. Chave Primária Create Table Aluno ( Matricula char(11) primary key, RG char(11), Nome varchar(50), DataNasc date, PontosVest number(4,0) )

  18. 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)

  19. 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

  20. Chave Alternativa Create Table Aluno ( Matricula char(11) primary key, RG char(11) unique, Nome varchar(50), DataNasc date, PontosVest number(4,0) )

  21. 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)

  22. 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

  23. 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’) )

  24. 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:

  25. 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)) )

  26. 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

  27. 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, )

  28. 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

  29. Demais Restrições Create Table Curso ( Codigo Char(10) primary key, Nome Varchar(20) unique not null, NumSemestres number(2) default 8 )

  30. 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

  31. 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

  32. 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 )

  33. 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)

  34. 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

  35. 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 )

  36. 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

  37. 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)

  38. DDL em SQL. FIM! “Estatísticas provam que a mortalidade no exército aumenta sensivelmente em tempo de guerra” Alphonse Allais Anita Malfatti

More Related