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

Banco de dados - Aula 1 SQL

  • 1.
  • 2.
  • 3.
    • Linguagem padrãopara 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úcleoda 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.
  • 6.
    SQL • Tipos deLinguagem • 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 deLinguagem • 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 deLinguagem • 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 decaracteres: – 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 debits: – 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 definetrês comandos para a definição de dados: • CREATE (criação); • ALTER (alteração); • DROP (exclusão); 14
  • 15.
    DDL • Criando umanova 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 umanova 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 umanova 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 umanova 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) Criaruma 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 atabela Fornecedor: CREATE TABLE Fornecedor( Codigo INT, Nome VARCHAR(20) NOT NULL, Cidade VARCHAR(20) NOT NULL, PRIMARY KEY (Codigo) ) Exercícios - DDL 20
  • 21.
    • Criando atabela 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
  • 22.
    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
  • 23.
    DDL • Definindo chavesestrangeiras: – 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 chavesestrangeiras: – 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 chavesestrangeiras: – 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 chavesestrangeiras: – 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 asrestriçõ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 asrestriçõ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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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 umaTabela: – 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