Slide 4 - SQL DDL
Slide 4 - SQL DDL
SQL - DDL
SQL
2
SQL Versões
3
SQL Componentes
4
SQL Componentes
• Existem outras linguagens dentro de SQL:
– DCL - Data Control Language (Linguagem de Controle
de Dados): Controla os aspectos de autorização de
dados e a utilização de licenças por usuários. Os
principais comandos são GRANT e REVOKE.
– DTL - Data Transaction Language (Linguagem de
Transação de Dados): Utilizado pelos desenvolvedores
em transações. Os principais comandos são COMMIT e
ROLLBACK.
– DQL - Data Query Language (Linguagem de Consulta de
Dados): O mais importante dentre estes, pois consultas
são realizadas a todo instante. O comando que é
utilizado pelo DQL é o SELECT. O SELECT também é
considerado DML por algumas literaturas.
5
SQL Componentes
6
SQL Componentes
• Funcionalidades:
– Instruções para controle de autorização de
acesso
– Instruções para controle de transações e
concorrência
– Instruções para especificação de restrições de
integridade
7
Aderência ao Padrão
8
DDL – Criação de BD
9
DDL
11
DDL – Tipos de Domínios
12
DDL – Tipos de Domínios
13
DDL – Tipos de Domínios
• Obs.:
– Strings de caracteres de tamanho variável
(varchar), data e horário não faziam parte do
SQL-89;
– Normalmente utiliza-se a comparação entre
valores compatíveis;
– O valor nulo é um membro de todos os
domínios;
– A SQL permite que a declaração de domínio de
um atributo inclua a especificação de not null,
proibindo, assim, a inserção de um valor nulo
para esse tipo de atributo.
14
DDL – Tipos de Domínios
15
DDL – Tipos de Domínios
• Podemos caracterizar:
– Domínios simples: aqueles simplesmente
baseados em um tipo de dado qualquer.
– Domínios complexos: podem especificar
valores padrões e estabelecer regras e
restrições acerca dos valores que as colunas
podem receber.
16
DDL – Tipos de Domínios
17
DDL – Instruções
18
DDL – Instruções
• Alter Table
– permite modificar a definição de uma tabela
• Inserir, Alterar e Excluir Atributos e RI´s
– RIs básicas:
• atributos chave não podem ser removidos
• atributos NOT NULL não podem ser inseridos
19
Sintaxe do Create Table
20
Criação da Tabela Peças
21
Criação da Tabela Fornec
22
Criação da Tabela Embarque
23
Criação das Tabelas
24
Criação das Tabelas
25
Restrições de Chaves
26
Restrições de chave estrangeira
27
Chave estrangeira cláusula ON DELETE
• Cascade
– Pode ser definida a propagação da exclusão da
linha para as linhas que a referenciam
– Sintaxe:
• ... FOREIGN KEY ... REFERENCES ...
ON DELETE {CASCADE}
28
Chave estrangeira cláusula ON DELETE
• SET NULL
– Especifica que as chaves estrangeiras que
referenciam a linha excluídas devem ser
tornadas vazias
– Válido somente para chaves estrangeiras
opcionais
– Sintaxe:
• ... FOREIGN KEY ... REFERENCES ...
ON DELETE {SET NULL}
29
Chave estrangeira cláusula ON DELETE
• RESTRICT (default)
– Especifica que uma linha não pode ser excluída
caso existam chaves estrangeiras que a
referenciem.
– Caso nada seja especificado na definição de
chave estrangeira, uma linha que contenha
uma chave primária referenciada na chave
estrangeira não pode ser excluída (regra
RESTRICT)
– Sintaxe:
• ... FOREIGN KEY ... REFERENCES ...
ON DELETE {RESTRICT}
30
Chave estrangeira cláusula ON UPDATE
• CASCADE
– Alteração da chave primária é propagada para
as chaves estrangeiras que a referenciam
– Sintaxe:
• FOREIGN KEY ... REFERENCES ...
ON UPDATE {CASCADE}
31
Chave estrangeira cláusula ON UPDATE
• SET NULL
– Chaves estrangeiras que referenciam a linha
alterada devem ser tornadas vazias
– Válido somente para chaves estrangeiras
opcionais
• FOREIGN KEY ... REFERENCES ...
ON UPDATE {SET NULL}
32
Chave estrangeira cláusula ON UPDATE
• RESTRICT
– Uma chave primária não pode ser alterada,
caso existam chaves estrangeiras que a
referenciem
• FOREIGN KEY ... REFERENCES ...
ON UPDATE {RESTRICT}
33
Eliminação de Tabelas
34
Eliminação de Tabelas
• Exemplo:
– DROP TABLE Embarq RESTRICT
35
Alteração Definição da Tabela
36
Alteração Definição da Tabela
37
Alteração Definição da Tabela
• Observe-se que:
– A instrução adiciona uma nova coluna com o
valor vazio para todas as linhas
– Os valores para as diversas linhas devem ser
adicionadas através de instruções da DML
– Não pode ser especificada a cláusula NOT
NULL, já que a coluna é criada com o valor
vazio (a menos que seja especificado um valor
DEFAULT)
38
Alteração Definição da Tabela
39
Alter Table Mudando Chaves
40
Alter Table Mudando Chaves
• Exemplos:
– ALTER TABLE Representantes
ADD FOREIGN KEY
(CodFilial) REFERENCES Filial
41
Alter Table Definição de Chaves
42
CONSTRAINTS
43
CONSTRAINTS
44
CONSTRAINTS
45
CONSTRAINTS
46
Dicas
47
Dicas
• Ordem coerente na criação dos objetos:
1. Domínios;
2. Tabelas;
3. Índices;
4. Restrições FOREIGN KEY (chave estrangeira);
5. Visões;
6. Restrições CHECK (valores permitidos);
7. Exceções;
8. Procedimentos armazenados;
9. Geradores;
10.Gatilhos;
11.Papeis;
12.Atribuições de privilégios.
48
Dicas
1. Informação é representada logicamente em tabelas.
2. Dados devem ser logicamente acessíveis por tabelas, chaves primárias e colunas.
3. Valores NULLs devem ser tratados uniformemente como “informação perdida”, não
como strings vazias, espaços ou zeros.
4. Metadados (dados sobre o banco de dados) devem ser armazenados no banco de
dados assim como são os dados regulares.
5. Uma única linguagem deve ser capaz de definir dados, exibições ou visualizações
(em inglês: view), restrições de integridade, autorização, transações e manipulação
de dados.
6. Exibições ou visualizações (em inglês: view) devem mostrar as atualizações de suas
tabelas de base e vice versa.
7. Uma única operação deve ser disponível para fazer cada uma das
operaçõesseguintes: recuperar, inserir, atualizar ou remover dados.
8. Lotes (em inglês: Batch) e operações do usuário final são logicamente separados do
armazenamento físico e métodos de acesso.
9. Lotes (em inglês: Batch) e operações do usuário final podem mudar o esquema do
banco de dados sem ter que recriá-lo ou as aplicações construídas por meio dele.
10. Restrições de integridade devem ser disponíveis e armazenados em metadados, não
em um programa de aplicação.
11. A linguagem de manipulação de dados do sistema relacional não deveria se importar
onde ou como dados físicos são distribuídos e não deveria requerer alteração se
dados físicos são centralizados ou distribuídos.
12. Qualquer processamento de linha feito no sistema deve obedecer às mesmas regras
de integridade e restrições que os grupos de operações de processamento obedecem. 49
Atividades
1. Analise a conta de energia elétrica abaixo (parte 1):
50
Atividades
1. Analise a conta de energia elétrica abaixo (parte 2):
51
Atividades
1. Vamos construir um banco de dados no MySQL Workbench para
armazenar os dados da conta de Energia Elétrica.
52