Banco de Dados
Introdução à SQL
SQL
Características da
Structured Query Language - SQL
SQL
SQL é uma linguagem de pesquisa declarativa para
banco de dados relacional. Muitas das características
originais do SQL foram inspiradas na álgebra
relacional;
Foi desenvolvida originalmente no início dos anos 70
nos laboratórios da IBM em San Jose e tinha por
objetivo demonstrar a viabilidade da implementação
do modelo relacional proposto por E. F. Codd;
O nome original da linguagem era SEQUEL, acrônimo
para "Structured English Query Language".
SQL
A linguagem SQL é um grande padrão de banco de
dados. Isto decorre da sua simplicidade e facilidade
de uso.
Ela é uma linguagem declarativa em oposição a
outras linguagens procedurais. Isto reduz o ciclo de
aprendizado daqueles que se iniciam na linguagem.
SQL
Divisão da linguagem SQL:
– Linguagem de Definição de Dados (DDL): A DDL da
SQL fornece comandos para definir esquemas de
relação, excluir relações e modificar esquemas;
– Linguagem de Manipulação de Dados (DML): A DML
inclui uma linguagem de consulta. Também possui
comandos para inserir, excluir e modificar dados no
BD;
SQL
– Linguagem de Controle de Dados (DCL): Controla os
aspectos de autorização de dados e licenças de
usuários para controlar quem tem acesso para ver ou
manipular dados dentro do banco de dados.
– Linguagem Transação de Dados (DTL): Controla as
transações do Banco de Dados.
Instruções - DML
SELECT: Instrução que permite ao usuário especificar
uma consulta como uma descrição do resultado
desejado.
INSERT: Instrução que é usada para inserir um
registro numa tabela existente. –
UPDATE: Instrução que altera os valores de dados em
um registro da tabela especificada.
DELETE: Instrução que permite remover registros
existentes de uma tabela.
Instruções - DDL
CREATE: Instrução que cria um objeto (uma tabela,
por exemplo) dentro da base de dados.
DROP: Instrução que apaga um objeto do banco de
dados.
Alguns sistemas de banco de dados usam o comando
ALTER, que permite ao usuário alterar um objeto, por
exemplo, adicionando uma coluna a uma tabela
existente.
Instruções - DCL
GRANT: Instrução que autoriza ao usuário executar
ou configura operações.
REVOKE: Instrução que remove ou restringe a
capacidade de um usuário de executar operações.
Instruções - DTL
BEGIN WORK (ou START TRANSACTION, dependendo
do dialeto SQL) pode ser usado para marcar o
começo de uma transação de banco de dados que
pode ser completada ou não.
COMMIT envia todos os dados das mudanças
permanentemente.
ROLLBACK faz com que as mudanças nos dados
existentes desde o último COMMIT ou ROLLBACK
sejam descartadas.
SQL - DDL
Tipos de Domínio Básicos
• char(n): uma string de caracteres de tamanho fixo,
com tamanho n;
• varchar(n): uma string de caracteres de tamanho
variável, com tamanho máximo n;
• int ou integer: um inteiro (depende da máquina);
• smallint: um inteiro pequeno;
SQL - DDL
• numeric(p,q): um número de ponto fixo com precisão
especificada pelo usuário. São p dígitos dos quais q
deles estão depois da vírgula. – Exemplo:
numeric(3,1) permite a representação do número
22,5 e não permite a representação do número 0,31
nem do número 214,2.
• real, double precision: números de ponto flutuante e
ponto flutuante de precisão dupla, com precisão
dependente da máquina.
• float(n): um número de ponto flutuante, com precisão
de pelo menos n dígitos.
Criando tabelas e chaves
• Instrução CREATE
create table nome_tabela(
atributo_1 tipo_domínio_1 ,
atributo_2 tipo_domínio_2,...,
atributo_n tipo_domínio_n ,
restrição_integridade_1,
restrição_integridade_2,...,
restrição_integridade_n)
Criando tabelas e chaves
Criando tabelas e chaves
• Exemplo:
Empregado(id_empregado, id_departamento,
nome_empregado)
id_departamento referencia Departamento
Departamento(id_departamento, nome_departamento)
Criando tabelas e chaves
Criando tabelas e chaves
• Exemplo:
Locação(id_locação, data);
DVD(id_dvd,título,gênero)
Item_Locação(id_locação, id_dvd)
id_locação referencia Locação,
id_dvd referencia DVD
Criando tabelas e chaves
Criando tabelas e chaves
Restrições já apresentadas:
– Restrição de chave primária (primary key);
– Restrição de integridade referencial (foreign
key);
Outras Restrições:
– Integridade de Vazio - not null;
– Integridade de Chave Alternativa - unique;
– Restrição Semântica - check().
Integridade de vazio – not null
Foi estudado que certos atributos de entidade
podem ser nulos (ex.: atributo
numero_apartamento para a entidade
cliente);
Ao usarmos a restrição not null, estamos
afirmando que o determinado atributo não
poderá receber valor nulo;
O SGBD gera um erro se esse tipo de restrição
não for obedecida.
Integridade de vazio – not null
Integridade da chave unique
• A especificação unique (A1,...,An) diz que os
atributos A1,...,An formam uma chave
alternativa, ou seja, nenhum par de
entidades/relacionamentos pode ser igual em
todos os atributos;
• Entretanto, os atributos de chave alternativa
podem ser nulos, a menos que tenham sido
declarados como not null.
Integridade da chave unique
Restrição semântica - check
A cláusula check pode ser aplicada a
declarações de tabelas, bem como a
declarações de domínios;
Exemplo em declarações de tabelas:
create table aluno (
id_aluno integer,
nome varchar(60) not null,
nivel_grau varchar(15),
primary key(id_aluno),
check (nivel_grau in
('Bacharelado','Mestrado','Doutorado')) )
Alterando tabelas existentes
Adicionando nova coluna:
alter table nome_tabela add nova_coluna
dominio_nova_coluna
Exemplo: alter table cliente add email
varchar(255)
Alterando tabelas existentes
Excluindo atributo existente:
alter table nome_tabela drop
atributo_existente
Exemplo: alter table cliente drop email
Alterando tabelas existentes
SQL - DML
Instrução INSERT
insert into nome_tabela (
atributo_1,
atributo_2,...,
atributo_n
) values (
valor_atributo_1,
valor_atributo_2,...,
valor_atributo_n
)
Inserindo dados em uma tabela
Consultando tabelas
Instrução SELECT
select C 1,C 2,...,C n from T 1,T 2,...,T m
where P
• Em que:
– Ci Coluna i;
– Tj Tabela j;
– P Predicado
Consultando tabelas
Consultando tabelas
Cláusula Where
Cláusula Where
A cláusula where pode conter diversos
conectivos lógicos como and, not e or.
A cláusula ainda suporta diversos operadores
de comparação como <,<=,>,>=,= e <>.
Cláusula Where
Operações com string
As operações em strings mais usadas são as
checagens para verificação de coincidências
de pares, utilizando o operador LIKE. Esses
pares são identificados por meio do uso de
dois caracteres especiais:
Porcentagem ( % ): compara qualquer string;
Sublinhado ( _ ): compara qualquer caractere.
Operações com string
Exemplos:
• "_ _ _ _%" corresponde a qualquer string com
pelo menos quatro caracteres.
• "Uni % " corresponde corresponde a qualquer
qualquer string que comece com "Uni", como,
"universo", "universal", "universidade".
• Utilizando not LIKE pode-se pesquisar
diferenças, ao invés de coincidências.
• Obs.: Essas comparações são case sensitive.
Distinct
Ordenação na exibição de registros
Funções agregadas
As funções agregadas são aquelas que tomam
uma coleção de valores como entrada e
retornam um único valor;
A SQL oferece cinco funções básicas
embutidas:
– Média (average): avg;
– Mínimo: min;
– Máximo: max;
– Soma: sum;
– Conta: count.
Funções agregadas
Funções agregadas
Cláusula Having
Teste de valores nulos
Relembrando: valores nulos são aqueles em
que não se aplica um valor para aquele
atributo naquela entidade;
Testamos se um valor é nulo ou não através
da construção is null ou is not null,
dependendo do caso.
select nome_cliente from cliente where
numero_apto is null
Consultas aninhadas
A SQL permite testar registros que participam
em outras consultas;
O conectivo IN testa a presença em uma
consulta;
O conectivo conectivo NOT IN testa a ausência
em uma consulta;
Consultas aninhadas
Consultas aninhadas
Consultas aninhadas
Junções
Junção interna
Junção externa esquerda
Outras junções
Junção natural
Exclusão de registros
Atualização de registros