1
2
• 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
• 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
5
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
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
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
• 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
• 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
• 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
• 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
• 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
DDL
• SQL define três comandos para a definição de dados:
• CREATE (criação);
• ALTER (alteração);
• DROP (exclusão);
14
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
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
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
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
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
• 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
• Criando a tabela Peça: CREATE TABLE Peca(
CodFornecedor INT, CodPeca INT, Nome VARCHAR(20) NOT NULL, Descricao VARCHAR(50), FOREIGN KEY (CodFornecedor) REFERENCES Fornecedor(Codigo), PRIMARY KEY(CodPeca) )
Exercícios - DDL
21
Exercícios - DDL
• Criando a tabela Venda: CREATE TABLE Venda(
CodForn INT, CodPeca INT, Quantidade INT DEFAULT 1, Data DATE, PRIMARY KEY (CodForn,CodPeca), FOREIGN KEY (CodForn) REFERENCES
Fornecedor(Codigo), FOREIGN KEY (CodPeca) REFERENCES
Peca(CodPeca) )
22
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
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
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
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
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
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
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
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
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
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
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
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
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
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