O documento apresenta os principais conceitos da linguagem SQL, incluindo suas partes (DDL, DML), tipos de dados, comandos para criação, alteração e remoção de tabelas e restrições.
3. • Linguagem padrão para os bancos de dados
relacionais;
– Presente praticamente em todos os SGBD´s
Relacionais;
– Fácil migração de um SGBD para outro que usa
este mesmo modelo;
– Uma das grandes responsáveis pela grande
aceitação dos SGBDR´s.
Introdução
3
4. • O núcleo da linguagem SQL é dividido em
várias partes;
– DDL;
• Criação, alteração e remoção de tabelas e índices;
– DML;
• Inserção, consulta, alteração e modificação de tuplas;
– Manipulação de dados embutida;
• Acesso ao BD através de linguagens de programação;
– Definição de visões;
• Definição de visões a partir das tabelas criadas;
Introdução
4
6. SQL
• Tipos de Linguagem
• DDL: Data Definition Language –
Linguagem de definição de dados;
• Criação, alteração e remoção de estruturas;
• A nível de Tabela:
• CREATE
• ALTER
• DROP
6
7. SQL
• Tipos de Linguagem
• DML: Data Manipulation Language –
Linguagem de Manipulação de Dados
• Inserção, alteração e remoção de dados;
• A nível de Tupla:
• INSERT
• UPDATE
• DELETE
7
8. SQL
• Tipos de Linguagem
• DML: Data Manipulation Language –
Linguagem de Manipulação de Dados;
• SELECT
• Ordenação de dados;
• Agrupamento de dados;
• Funções aritméticas;
• Filtros de seleção;
8
9. • Tipos Numéricos:
– INT ou INTEGER;
• Números inteiros;
– SMALLINT;
• Números inteiros pequenos;
– REAL;
• Números reais com precisão simples;
Tipos de dados SQL
9
10. • Tipos Numéricos:
– DOUBLE PRECISION;
• Número real com precisão dupla;
– FLOAT(n);
• Ponto flutuante com precisão definida pelo usuário;
– NUMERIC (p,d);
• Ponto flutuante onde p é a precisão (total de dígitos
decimais) e d é a escala (número de casas depois do
ponto);
Tipos de dados SQL
10
11. • Cadeias de caracteres:
– CHAR(n) ou CHARACTER(N);
• Cadeia de caracteres de tamanho fixo;
• Caracteres brancos são adicionados à direita caso o
número de caracteres não seja preenchido;
– VARCHAR(n);
• Cadeia de caracteres com tamanho variável, onde n é o
comprimento máximo da cadeia;
– CHARACTER LARGE OBJECT (CLOB);
• Usado para armazenar strings grandes, como textos e
documentos;
Tipos de dados SQL
11
12. • Cadeias de bits:
– BIT(n);
• Conjunto de bits de tamanho fixo;
– BIT VARYING(n);
• Conjunto de bits de tamanho variável, onde n é o
tamanho máximo;
– BINARY LARGE OBJECT (BLOB);
• Grandes quantidades de bits, usado para armazenar
vídeos, fotos, mapas, etc;
Tipos de dados SQL
12
13. • Tipos Booleanos:
– BOOLEAN:
• Valores booleanos;
• EM SQL, ele pode assumir os valores true, false ou
unknow;
• Data e Hora:
– DATE:
• Especifica uma data com o formato YYYY-MM-DD;
– TIME:
• Especifica uma hora com o formato HH:MM:SS;
Tipos de dados SQL
13
14. DDL
• SQL define três comandos para a definição de
dados:
• CREATE (criação);
• ALTER (alteração);
• DROP (exclusão);
14
15. DDL
• Criando uma nova tabela:
• Usamos o comando CREATE TABLE;
• Definimos um nome para a tabela;
• Definimos depois a lista de atributos, cada qual com
seu respectivo tipo;
• Por fim, definimos as restrições;
• Chave primária, chave estrangeira, etc;
15
16. DDL
• Criando uma nova tabela:
• A definição de um atributo tem a seguinte
sintaxe:
• Nome tipo [NOT NULL] [UNIQUE] [DEFAULT valor]
• Onde:
• Nome: corresponde ao nome do atributo;
• Tipo: corresponde ao tipo de dado deste atributo
(Tipo SQL);
• NOT NULL: restrição que indica que o valor do
atributo não pode ser nulo; 16
17. DDL
• Criando uma nova tabela:
• A definição de um atributo tem a seguinte
sintaxe:
• Nome tipo [NOT NULL] [UNIQUE] [DEFAULT valor]
• Onde:
• [UNIQUE]: restrição que indica que o valor do atributo é
único;
• Usada para chaves secundárias;
• [DEFAULT]: usado para definir um valor inicial para o
atributo caso o valor não seja informado;
17
18. DDL
• Criando uma nova tabela:
• Podemos especificar as seguintes restrições:
• Chave Primária:
• PRIMARY KEY (atributos_chaves);
• Chave Estrangeira:
• FOREIGN KEY (atributo) REFERENCES
tabela_base(atributo);
• Restrição de integridade:
• CHECK (condição);
18
19. Exercício 1) Criar uma tabela para cada esquema de
relação:
Fornecedor (Codigo, Nome, Cidade);
Peça (CodPeca, CodFornecedor, Nome, Descricao);
Venda (CodForn, CodPeca, Quantidade, Data);
Exercícios - DDL
19
20. • Criando a tabela Fornecedor:
CREATE TABLE Fornecedor(
Codigo INT,
Nome VARCHAR(20) NOT NULL,
Cidade VARCHAR(20) NOT NULL,
PRIMARY KEY (Codigo)
)
Exercícios - DDL
20
23. DDL
• Definindo chaves estrangeiras:
– Como já vimos, usamos a restrição “FOREIGN
KEY” para a definição de uma chave estrangeira;
• Uma restrição de integridade referencial é
gerada;
– Podemos especificar o que o SGBD deve fazer
para manter a integridade referencial dos dados:
• Numa atualização (através da restrição ON
UPDATE);
• Numa exclusão (através da restrição ON
DELETE); 23
24. DDL
• Definindo chaves estrangeiras:
– Para cada uma destas restrições, temos quatro
valores possíveis;
• RESTRICT:
–A atualização ou remoção é rejeitada;
• CASCADE:
– A atualização ou exclusão é propagada
para as tuplas relacionadas;
24
25. DDL
• Definindo chaves estrangeiras:
– Para cada uma destas restrições, temos quatro
valores possíveis;
• SET NULL:
– As tuplas relacionadas com a tupla a ser atualizada
ou removida tem o valor do atributo chave
estrangeira correspondente alterado para Null;
• SET DEFAULT:
– As tuplas relacionadas com a tupla a ser atualizada
ou removida tem o valor do atributo chave
estrangeira correspondente alterado para um valor
default;
25
26. DDL
• Definindo chaves estrangeiras:
– Vamos recriar uma das tabelas de nosso exemplo:
CREATE TABLE Peca(
CodFornecedor INT,
CodPeca INT,
Descricao VARCHAR(50),
PRIMARY KEY(CodPeca),
FOREIGN KEY (CodFornecedor) REFERENCES
Fornecedor(Codigo) ON DELETE RESTRICT ON
UPDATE CASCADE
) 26
27. DDL
• Nomeando as restrições:
– Podemos nomear cada restrição definida em
uma tabela;
– Isto permite remover uma determinada
restrição depois que a tabela é criada;
– Fazemos isso usando a palavra “CONSTRAINT”
antes da restrição, seguido do nome dado para a
mesma;
27
28. DDL
• Nomeando as restrições:
CREATE TABLE Peca(
CodFornecedor INT,
CodPeca INT,
Descricao VARCHAR(50),
PRIMARY KEY(CodPeca),
CONSTRAINT REFERENCIA
FOREIGN KEY (CodFornecedor) REFERENCES
Fornecedor(Codigo) ON DELETE RESTRICT ON
UPDATE CASCADE
) 28
29. DDL
• Alterando uma Tabela:
– Podemos alterar uma tabela usando o comando
ALTER TABLE;
– Ao alterar uma tabela, podemos:
• Adicionar ou eliminar uma coluna;
• Alterar a definição de uma coluna;
• Adicionar ou eliminar restrições;
29
30. DDL
• Alterando uma Tabela:
– Adicionando ou removendo colunas:
• Podemos adicionar uma coluna através da
cláusula ADD:
• Se a tabela já foi povoada, todas as tuplas
recebem um valor nulo para o novo atributo;
–A restrição NOT NULL não pode ser aplicada
neste tipo de atributo;
• Exemplo:
ALTER TABLE Empregado ADD Cpf VARCHAR(15);
30
31. DDL
• Alterando uma Tabela:
– Adicionando ou removendo colunas:
• Podemos remover uma coluna através da
cláusula DROP;
• Podemos usar as opções CASCADE ou RESTRICT
para tratar as restrições e visões que referenciam
o atributo a ser excluído;
• Exemplo:
ALTER TABLE Empregado DROP Salario CASCADE;
31
32. DDL
• Alterando uma Tabela:
– Alterando a definição de uma coluna:
• Podemos alterar a definição de uma tabela
usando as cláusulas ALTER e SET;
• Exemplo:
ALTER TABLE Venda ALTER Quantidade SET
DEFAULT=2;
32
33. DDL
• Alterando uma Tabela:
– Adicionando e removendo restrições:
• Podemos adicionar uma restrição através da
cláusula ADD CONSTRAINT;
• Exemplo:
ALTER TABLE Venda ADD CONSTRAINT QuantPositiva
CHECK (Quantidade>=0)
33
34. DDL
• Alterando uma Tabela:
– Adicionando e removendo restrições:
• Podemos remover uma restrição através da
cláusula DROP CONSTRAINT;
• Para ser removida, uma restrição deve ter sido
nomeada;
• Exemplo:
ALTER TABLE Peca DROP CONSTRAINT Referencia;
34
35. DDL
• Removendo uma Tabela:
– Podemos remover uma tabela através do operador
DROP;
– Podemos usar as opções CASCADE ou RESTRICT para
tratar as tabelas e visões que referenciam a tabela a
ser excluída;
– Exemplo:
DROP TABLE Venda CASCADE; (A tabela e suas
referencias são apagadas)
DROP TABLE Venda RESTRICT (Apenas tabelas sem
visões dependentes ou restrições são apagadas)
35
36. DDL
• Removendo uma Tabela:
– Exemplo:
DROP TABLE Venda CASCADE;
Onde a tabela e suas referencias são apagadas
DROP TABLE Venda RESTRICT;
Onde apenas tabelas sem visões dependentes ou
restrições são apagadas.
36