Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte...
Transcript of Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte...
![Page 1: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/1.jpg)
Linguagem SQL
![Page 2: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/2.jpg)
Introdução
SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de SEQUEL
É a linguagem de consulta padrão para os SGBDR's
Já existem padrões propostos: ANSI-SQL(SQL-89), SQL-92 e padrões mais recentes: SQL:1999 e SQL:2003.
![Page 3: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/3.jpg)
Introdução
O padrão SQL define precisamente uma interface para a definição de tabelas, para as operações sobre as mesmas (seleção, projeção, junção, e outras) e para a definição de regras de integridade de bancos de dados.
![Page 4: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/4.jpg)
Introdução
Categorias DDL: Linguagem de Definição de Dados. Usada para
definir os esquemas, atributos, visões, regras de integridade, índices, etc.
DML: Linguagem de Manipulação de Dados. Usada para se ter acesso aos dados armazenados no BD.
DCL: Linguagem de controle dos dados. Usada para garantir ou negar o acesso aos dados.
![Page 5: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/5.jpg)
Banco WorldJanu
![Page 6: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/6.jpg)
Modelo Relacional
Banco (codigo, nome, endereco) Agencia_Bancaria (numagencia, banco_fk,
endereco) Conta (numconta, saldo, tipo, numagencia_fk,
banco_fk) Emprestimo (numempr, valor, tipo, numagencia_fk,
banco_fk) Cliente (codigo, nome, telefone, endereco) Conta_cliente (cliente_fk, conta_fk) Emprestimo_cliente (cliente_fk, conta_fk)
![Page 7: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/7.jpg)
DDL
![Page 8: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/8.jpg)
DDL
Os comandos SQL para definição de dados são: CREATE: criação de novas estruturas DROP: remoção de estruturas ALTER: alteração de estruturas
![Page 9: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/9.jpg)
CREATE TABLE - DDL
CREATE TABLE: especifica uma nova tabela (relação), dando o seu nome e especificando as colunas(atributos) (cada uma com seu nome, tipo e restrições) Sintaxe:
CREATE TABLE nome_tabela (coluna tipo_dado)
![Page 10: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/10.jpg)
CREATE TABLE - DDL
create table banco ( codigo int, nome varchar(50), endereco varchar(100))
![Page 11: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/11.jpg)
Interbase - Tipos de dados Tipos em SQL:1999
Numéricos exatos: INTEGER (INT) e SMALLINT para representar inteiros NUMERIC(p,s): tem uma precisão e uma escala(número
de dígitos na parte fracionária). A escala não pode ser maior que a precisão. Muito usado para representar dinheiro
DECIMAL: também tem precisão e escala. A precisão é fornecida pela implementação (SGBD).
Numéricos aproximados: REAL: ponto flutuante de precisão simples DOUBLE: ponto flutuante com precisão dupla FLOAT(p): permite especificar a precisão que se quer.
Usado para tranportar (portability) aplicações
![Page 12: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/12.jpg)
Interbase - Tipos de dados
Tipos em SQL:1999 Character
CHARACTER(x) (CHAR): representa um string de tamanho x. Se x for omitido então é equivalente a CHAR(1). Se um string a ser armazenado é menor do que x, então o restante é preenchido com brancos.
VARCHAR(N): representa um string de tamanho x. Armazena exatamente o tamanho do string (tam <= x) sem preencher o resto com brancos. Neste caso x é obrigatório.
OBS.: Existem os National character data types: NCHAR, NVARCHAR, NCLOB que permitem implementar internacionalização
![Page 13: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/13.jpg)
Interbase - Tipos de dados
Tipos em SQL:1999 Binary Strings (BLOB)
BINARY LARGE OBJECT (BLOB): para armazenar grande quantidades de bytes como fotos, vídeo, áudio, gráficos, mapas, etc.
![Page 14: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/14.jpg)
Interbase - Tipos de dados
Tipos em SQL:1999 DATETIMES
DATE: armazena ano (4 digitos), mês (2 digitos) e dia(2 digitos).
TIME: armazena hora(2digitos), minuto(2 digitos) e segundo(2digitos, podendo ter frações 0 a 61.9999)
TIMESTAMP: DATE + TIME
![Page 15: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/15.jpg)
Interbase - Tipos de dados
Tipos em SQL:1999 Intervals
Um intervalo é a diferença entre duas datas e tempos. Intervalos do tipo year-month ou day-time.
Year-month interval: contém apenas um valor de ano, ou de mês ou ambos. YEAR(p), MONTH(p), INTERVAL YEAR TO MONTH(p)
Day-Time interval: contém apenas um dia, uma hora, um minuto e/ou um segundo. INTERVAL DAY(p), INTERVAL DAY TO HOUR, INTERVAL DAY(6) TO MINUTE, INTERVAL SECOND(7), etc.
Booleans: lógica de três valores (TRUE, FALSE e UNKNOWN)
![Page 16: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/16.jpg)
DROP TABLE - DDL
DROP TABLE: remove uma tabela-base do BD. Remove tanto os dados quanto a definição da tabela
Sintaxe: DROP TABLE <nomeTabela>
Ex.: DROP TABLE Peca
![Page 17: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/17.jpg)
Restrições - DDL
![Page 18: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/18.jpg)
Not null - DDL
Algumas restrições NOT NULL: Uma restrição de não-nulo simplesmente
especifica que uma coluna não pode conter o valor nulo.
create table banco ( codigo int not null, nome varchar(50) not null,
endereco varchar(100))
![Page 19: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/19.jpg)
Default - DDL - DDL
Algumas restrições DEFAULT: indica um valor padrão para a coluna
CREATE TABLE "CLIENTE" ( "CPF" INTEGER NOT NULL, "NOME" VARCHAR(50), "TELEFONE" VARCHAR(13), "ENDERECO" VARCHAR(50) default 'Januaria' );
![Page 20: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/20.jpg)
ALTER TABLE - DDL
Com o comando Alter Table podemos: Incluir / Alterar / Excluir coluna Incluir / Excluir restrições
![Page 21: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/21.jpg)
ALTER TABLE - DDL
Incluir uma coluna ALTER TABLE banco ADD estado varchar(40)
Excluir uma coluna ALTER TABLE banco DROP estado
Alterar o tipo do campo ALTER TABLE banco ALTER nome TYPE
varchar(60)
![Page 22: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/22.jpg)
ALTER TABLE - DDL
Adicionar a restrição default ALTER TABLE banco ALTER endereco SET DEFAULT ‘Januaria’
Excluir a restrição default ALTER TABLE banco ALTER endereco DROP DEFAULT
![Page 23: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/23.jpg)
UNIQUE - DDL Algumas restrições
UNIQUE: indica que o atributo tem valor único na tabela. Qualquer tentativa de se introduzir uma linha na tabela contendo um valor igual ao do atributo será rejeitada. Serve para indicar chaves secundárias. Nomear as restrições (CONSTRAINTS)
Deve ser definido primeiramente como NOT NULL CREATE TABLE BANCO( CODIGO INT NOT NULL CONSTRAINT
U_BANCOCODIGO UNIQUE, NOME VARCHAR (40), ENDERECO VARCHAR(40))
![Page 24: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/24.jpg)
ALTER TABLE - DDL
Adicionar uma restrição Unique ALTER TABLE banco ADD CONSTRAINT u_bu
UNIQUE(nome) Remover uma restrição
ALTER TABLE banco DROP CONSTRAINT u_bu
![Page 25: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/25.jpg)
Check - DDL
Algumas restrições CHECK: Permite especificar que os valores de uma
determinada coluna devem estar de acordo com uma expressão arbitrária. create table conta ( numconta int not null unique, saldo numeric constraint ch_saldo
check(saldo>1000), tipo int, num_agencia int, cod_banco int)
![Page 26: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/26.jpg)
ALTER TABLE - DDL
Adicionar restrição Check ALTER TABLE conta ADD CONSTRAINT
c_saldo CHECK (saldo>1000)
![Page 27: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/27.jpg)
ALTER TABLE - DDL
Remover constraint ALTER TABLE BANCO DROP CONSTRAINT
U_BU
![Page 28: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/28.jpg)
Primary key - DDL Primary key: Indica que a coluna pode ser utilizado como
identificador único para as linhas da tabela. Pode ser composta por um ou dois campos. Deve ser definida como not null.
create table banco ( codigo int primary key, nome varchar (40), endereco varchar (60))
create table agencia_bancaria ( numagencia int, codbanco int, endereco varchar(50), primary key(numagencia,codbanco))
![Page 29: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/29.jpg)
ALTER TABLE - DDL
Adicionar Chave Primária alter table agencia_bancaria add primary key
(codbanco,numagencia)
![Page 30: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/30.jpg)
Foreign key - DDL
Foreign key: Especifica que o valor da coluna deve corresponder a algum valor que existe em uma linha de outra tabela. Mantém a integridade referencial entre as tabelas relacionadas. create table agencia_bancaria ( numagencia int not null, codbanco int references banco, endereco varchar(40), primary key(numagencia, codbanco))
![Page 31: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/31.jpg)
ALTER TABLE - DDL
Adicionar chave estrangeira alter table conta add foreign key
(cod_banco,num_agencia) references agencia_bancaria
![Page 32: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/32.jpg)
Recomendação
É recomendado definir constraints e nomeá-las para que o sistema não crie nomes automáticos que geralmente não são ilegíveis.
![Page 33: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/33.jpg)
FOREIGN KEY - DDL Uma cláusula FOREIGN KEY inclui
regras de remoção/atualização: FOREIGN KEY (coluna) REFERENCES
tabela [ON DELETE {RESTRICT|CASCADE|SET NULL| SET DEFAULT}] [ON UPDATE {RESTRICT|CASCADE|SET NULL| SET DEFAULT}]
Supondo que T2 tem uma chave estrangeira para T1, vejamos as cláusulas ON DELETE e ON UPDATE
![Page 34: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/34.jpg)
FOREIGN KEY - DDL
ON DELETE: RESTRICT: (default) significa que uma tentativa de se
remover uma linha de T1 falhará se alguma linha em T2 combina com a chave
CASCADE: remoção de uma linha de T1 implica em remoção de todas as linhas de T2 que combina com a chave de T1
SET NULL: remoção de T1 implica em colocar NULL em todos os atributos da chave estrangeira de cada linha de T2 que combina.
SET DEFAULT: remoção de linha em T1 implica em colocar valores DEFAULT nos atributos da chave estrangeira de cada linha de T2 que combina.
![Page 35: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/35.jpg)
FOREIGN KEY - DDL
ON UPDATE:- RESTRICT: (default) update de um atributo de T1 falha
se existem linhas em T2 combinando- CASCADE: update de atributo em T1 implica que linhas
que combinam em T2 também serão atualizadas SET NULL: update de T1 implica que valores da chave
estrangeira em T2 nas linhas que combinam são postos par NULL.
SET DEFAULT: update de T1 implica que valores da chave estrangeira de T2 nas linhas que combinam terão valores default aplicados.
![Page 36: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/36.jpg)
FOREIGN KEY - DDL
As restrições de integridade podem ter um nome e serem especificadas com a cláusula CONSTRAINT.
Isto permite que possamos no futuro eliminar (DROP) ou alterar (ALTER) o constraint.
![Page 37: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/37.jpg)
DML
![Page 38: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/38.jpg)
DML
Linguagem de manipulação dos dados INSERT: inserção de registros DELETE: deleção de registros UPDATE: atualização de registros SELECT: seleção de registros
![Page 39: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/39.jpg)
INSERT - DML
Ao ser criada a tabela não contém nenhum dado. Os dados são inseridos uma linha por vez.
Os valores dos dados são colocados na mesma ordem que as colunas aparecem na tabela, separados por vírgula. INSERT INTO banco VALUES (1,’Banco 1’,’End 1‘)
Quando não se sabe a ordem das colunas: INSER INTO banco (nome, endereco, codigo) VALUES
(‘Banco 1’, ‘End 1’, 1)
![Page 40: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/40.jpg)
UPDATE - DML
O comando UPDATE Modifica o valor de atributos de uma ou mais
tuplas. Sintaxe:
UPDATE tabela SET lista_atributos com atribuições de valores [WHERE condição]
Obs.: omitir a cláusula WHERE implica que o UPDATE deve ser aplicado a todas as tuplas da relação
![Page 41: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/41.jpg)
DELETE - DML
O comando DELETE Remove tuplas de uma relação Sintaxe:
DELETE FROM tabela [WHERE condição]
Obs.: Se omitirmos a cláusula WHERE, então o DELETE deve ser aplicado a todas as tuplas da relação. Porém, a relação permanece no BD como uma relação vazia.
![Page 42: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/42.jpg)
DML
![Page 43: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/43.jpg)
DML
Esquemas do BD Empresa: Empregado(matricula, nome, endereco, salario,
supervisor, depto) Departamento(coddep, nome, gerente, dataini)
Projeto(codproj, nome, local, depart) Alocacao(matric,codigop, horas)
![Page 44: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/44.jpg)
SELECT
O comando Select: A forma básica do comando Select é:
SELECT <lista atributos>FROM <lista tabelas>WHERE <condição>
![Page 45: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/45.jpg)
SELECT Obtenha todos os nomes dos empregados
Select nome from Empregado
Obtenha o salário de JoséSelect salarioFrom EmpregadoWhere nome = ‘José’
Obs.: Podemos renomear o nome da coluna no resultadoselect salario as SalarioJosefrom empregadowhere nome = ‘José’
![Page 46: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/46.jpg)
SELECT
Obs2: Podemos usar colunas como expressõesselect mat as matricula, salario, 0.15 * salario as IR
from empregado
Podemos inserir constantes na cláusula select se necessárioselect nome, ‘marajá’ as Marajá
from empregado
where salario > 10.000,00
![Page 47: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/47.jpg)
SELECT
Selecione todos os atributos de todos os empregados do departamento Pesquisa
Select *From EmpregadoWhere depto = ‘Pesquisa’
![Page 48: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/48.jpg)
SELECT
Obter os nomes dos empregados e o nome do departamento que ele trabalha
Obter os nomes dos departamentos
Obter os nomes dos projetos e o local de realização
![Page 49: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/49.jpg)
SELECT
Obter os nomes dos projetos e o nome dos departamentos que o controlam
Obter o nome do gerente de cada departamento, com o nome do departamento
![Page 50: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/50.jpg)
SELECT
Selecione o nome e o endereço de todos os empregados que trabalham no departamento de produção
Select e.nome, e.endereco
From empregado e join departamento d
Where d.nome = ‘Produção’
![Page 51: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/51.jpg)
SELECT
Obter o nome do empregado, nome do projeto e as horas trabalhadas
![Page 52: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/52.jpg)
SELECT
Para cada projeto em ‘Fortaleza’, liste o código do projeto, o departamento que controla o projeto e o nome do gerente com endereço e salárioSelect p.codigo, d.nome, e.nome, e.endereco,
e.salario
From Projeto p join Departamento d on p.depart = d.codigo join Empregado e on d.gerente = e.matricula
Where p.local = ‘Fortaleza’
![Page 53: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/53.jpg)
SELECT
Para cada empregado, recupere seu nome e o nome do seu supervisorSelect e.nome, s.nome
From Empregado e join Empregado s on e.matricula = s.supervisor
![Page 54: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/54.jpg)
SELECT
Selecione todos os atributos de todos os empregados do departamento Administração Select e.* from Empregado e join Departamento d on
e.depto = d.codigo Where d.nome = ‘Administração’
![Page 55: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/55.jpg)
SELECT - DISTINCT
Algumas vezes surgem duplicatas como resposta a uma query. Podemos eliminá-las usando o comando DISTINCT na cláusula SELECT
Selecione os diferentes salários pagos pela empresa aos empregadosSelect distinct salario From empregado
![Page 56: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/56.jpg)
SELECT – ORDER BY Ordenação
O operador ORDER BY permite ordenar o resultado de uma query por um ou mais atributos.
Obter uma lista de empregados e seus respectivos departamentos, listando ordenado pelo nome do departamento
SELECT d.nome, e.nome
FROM departamento d join empregado e
On d.codigo = e.depto ORDER BY d.nome, e.nome
![Page 57: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/57.jpg)
SELECT – ORDER BY
Ordenação A ordem default é ascendente (ASC) caso
queiramos ordem decrescente usamos DESC
Ex. ORDER BY d.nome DESC, e.nome ASC
![Page 58: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/58.jpg)
SELECT
Selecione os nomes dos empregados que ganham mais de 1000 e menos de 10000 reais
![Page 59: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/59.jpg)
SELECT - BETWEEN BETWEEN:
Sintaxe: expressão [NOT] BETWEEN expressão AND expressão Ex.: y BETWEEN x AND Z equivale a x <= y
<= z Selecione os nomes dos empregados
que ganham mais de 1000 e menos de 10000 reais
SELECT nomeFROM EmpregadoWHERE salario BETWEEN 1000 AND 10000
![Page 60: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/60.jpg)
SELECT
Obter os nomes de empregados cujos endereços estão em Natal, RN
![Page 61: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/61.jpg)
SELECT - LIKE
LIKE: Permite comparações de substrings. Usa dois
caracteres reservados ‘%’ (substitui um número arbitrário de caracteres) e ‘_‘ (substitui um único caracter).
Obter os nomes de empregados cujos endereços estão em Natal, RN
SELECT nome
FROM empregado
WHERE endereco LIKE ‘%Natal%’
![Page 62: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/62.jpg)
SQL
Funções Agregadas
![Page 63: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/63.jpg)
Funções agregadas
SQL fornece 5 funções embutidas: COUNT: retorna o número de tuplas ou valores
especificados numa query SUM: retorna a soma os valores de uma coluna AVG: retorna a média dos valores de uma
coluna MAX: retorna o maior valor de uma coluna MIN: identifica o menor valor de uma coluna
Estas funções só podem ser usadas numa cláusula select ou numa cláusula HAVING (a ser vista depois)
![Page 64: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/64.jpg)
Funções agregadas
Encontre o total de salários, o maior salário, o menor salário e a média salarial da relação empregados
SELECT SUM(salario), MAX(salario), MIN(salario), AVG(salario) FROM Empregado
Encontre o maior e menor salário do departamento de Produção
SELECT MAX(salario), MIN(salario)FROM Empregado e join Departamento d on e.depto = d.codigo WHERE d.nome = ‘Produção’
![Page 65: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/65.jpg)
Funções agregadas Obtenha o número de empregados da empresa
SELECT COUNT(*)FROM empregado
Obter o número de salários distintos do departamento de Pesquisa
SELECT COUNT(DISTINCT salario) FROM empregado e join departamento d on e.depto=d.codigo WHERE d.nome = ‘Pesquisa’
O que aconteceria se escrevêssemos COUNT(salario) ao invés de COUNT(DISTINCT salario))?
![Page 66: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/66.jpg)
GROUP BY, HAVING Cláusula GROUP BY, HAVING
Usadas para lidar com grupos.
Para cada departamento, obter o código do departamento, o número de empregados e a média salarial
SELECT depto, COUNT(*), AVG(salario)FROM EmpregadoGROUP BY depto
as tuplas de empregados são separadas em grupos (departamento) e as funções COUNT e AVG são aplicadas a cada grupo separadamente.
![Page 67: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/67.jpg)
GROUP BY, HAVING Para cada projeto, obter o código do projeto,
seu nome e o número de empregados que trabalham naquele projeto
SELECT codigop, nome, COUNT(*)FROM Projeto p join Alocacao aOn p.codigo = a.projetoGROUP BY p.codproj, p.nome
o agrupamento e as funções são aplicadas após a junção.
![Page 68: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/68.jpg)
HAVING HAVING
usada em conjunto com GROUP BY para permitir a inclusão de condições nos grupos
Para cada projeto que possui mais de 2 empregados trabalhando, obter o código do projeto, nome do projeto e número de empregados que trabalha neste projetoSELECT p.codproj, p.nome, COUNT(*)FROM Projeto p join Alocacao aON p.codigo = a.projetoGROUP BY codigop, nomeHAVING COUNT(*) > 2 Uma query é avaliada primeiro aplicando a cláusula
WHERE e depois GROUP BY HAVING
![Page 69: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/69.jpg)
JUNÇÕES
![Page 70: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/70.jpg)
Junções O padrão SQL:1999 (e o 92) especifica
vários tipos de junções: Clássica (tabelas separadas por vírgulas como
vimos) cross-joins natural joins conditions joins column name join outer joins (left, right, ou full)
![Page 71: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/71.jpg)
Condition Join
Exemplos: Condition Join usa a cláusula ON para especificar a condição de
junçãoSelect * from T1 JOIN T2ON T1.C1 = T2.C1
é equivalente a:
select *from T1, T2where T1.C1 = T2.C1
![Page 72: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/72.jpg)
![Page 73: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/73.jpg)
Junções
Exemplos: Left Outer Join
C1 C2
10 1520 25
C3 C4
10 BB15 DD
T1 T2 Junção left outer de T1 com T2
Select * from T1 left outer join T2 on T1.C1 = T2.C3
C1 C2 C3 C4 10 15 10 BB
20 25 Null Null
![Page 74: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/74.jpg)
![Page 75: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/75.jpg)
![Page 76: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/76.jpg)
Junções Exemplos: Right Outer Join
C1 C2
10 1520 25
C3 C4
10 BB15 DD
T1 T2 Junção right outer de T1 com T2
Select * from T1 right outer join T2 on T1.C1 = T2.C3
C1 C2 C3 C410 15 10 BB
Null Null 15 DD
![Page 77: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/77.jpg)
Junções Exemplos: Full Outer Join
C1 C2
10 1520 25
C3 C4
10 BB15 DD
T1 T2 Junção full outer de T1 com T2
Select * from T1 full outer join T2 on T1.C1 = T2.C3
C1 C2 C3 C410 15 10 BB
20 25 Null NullNull Null 15 DD
![Page 78: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/78.jpg)
![Page 79: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/79.jpg)
![Page 80: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/80.jpg)
Subconsultas (consultas aninhadas)
![Page 81: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/81.jpg)
Subconsultas
São comandos SELECT aninhados em outros comandos SELECT, INSERT, UPDATE ou DELETE ou outras subconsultas
Podem ser utilizadas Retornando valores únicos e testando-os com
operadores de comparação Como listas de linhas, através dos operadores IN,
ANY, SOME ou ALL e EXISTS
![Page 82: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/82.jpg)
Subconsultas
Coloque as subconsultas entre parenteses Elas devem ficar a direita dos operadores Não use ORDER BY em uma subconsulta
![Page 83: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/83.jpg)
Operadores de comparação
SELECT descricao , preco FROM comida
WHERE preco <
( SELECT AVG(preco) FROM comida)
![Page 84: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/84.jpg)
Operadores de comparação
Select prod.titulo From produtos prod Where prod.preco >
(select prod1.preco From produtos prod1 Where prod1.cod_produto = 142);
![Page 85: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/85.jpg)
Operadores de comparação
Select prod.titulo From produtos prod Where prod.importado = ‘N’ and prod.preco >
(select max(prod1.preco) From produtos prod1 Where prod1.importado = ‘S’);
![Page 86: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/86.jpg)
Operadores de comparação
Select prod.ano_lancamento, avg(prod.preco) from produtos prod group by prod.ano_lancamento having avg(prod.preco) >
(select avg(prod1.preco) from produtos prod1 where prod1.ano_lancamento = trunc(sysdate,'yyyy'));
![Page 87: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/87.jpg)
Exemplo
![Page 88: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/88.jpg)
![Page 89: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/89.jpg)
Exemplo
Encontrar cervejas vendidas abaixo do preço médio.
select cerveja from vende where preco < (select avg(preco) from vende)
![Page 90: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/90.jpg)
Exemplo
Encontrar as cervejas vendidas pelo mais baixo preço.
select cerveja from vende where preco = (select min(preco) from vende)
![Page 91: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/91.jpg)
Operador IN
Retorna as linhas iguais a qualquer linha da subconsulta
Podemos usar NOT IN Equivalente a =ANY O operador IN aceita a comparação
simultânea de mais de uma coluna
![Page 92: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/92.jpg)
Operador IN
Select ped.num_pedido From pedidos ped Where ped.cod_cliente in
(select adm.cod_administrador From administradores adm);
![Page 93: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/93.jpg)
Operador IN
select ped.num_pedido from pedidos ped where (ped.cod_cliente, ped.cod_endereco) in (select end.cod_cliente, end.cod_endereco from enderecos where end.cod_cidade = 20);
![Page 94: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/94.jpg)
Operadores ANY e SOME
Compara um valor com cada linha da subconsulta, utilizando um operador de comparação
ANY e SOME são sinonimos select prod.titulo from produtos prod where prod.importado = 'N' and prod.preco > ANY (select prod1.preco from produtos prod1 where prod1.importado = 'S');
![Page 95: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/95.jpg)
Operador ALL
Compara um valor com todas as linhas da subconsulta, utilizando um operador select prod.titulo from produtos prod where prod.importado = 'N' and prod.preco > ALL (select prod1.preco from produtos prod1 where prod1.importado = 'S');
![Page 96: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/96.jpg)
Is null Podemos verificar valores nulos
através de IS NULL e IS NOT NULL:
Selecione os nomes de todos os empregados que não têm supervisores
SELECT nome FROM empregado WHERE supervisor IS NULL
![Page 97: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/97.jpg)
Exemplo
Encontrar nomes de cervejas que nenhuma pessoa bebe.
select nome from cerveja where nome not in (select cerveja from bebe)
![Page 98: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/98.jpg)
Exemplo
Encontrar pessoas que bebem cerveja mas não freqüentam bares.
select pessoa from bebe where pessoa not in (select pessoa from frequenta)
![Page 99: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/99.jpg)
Exemplo
Encontrar bares que vendem pelo menos uma cerveja que 'Fulano' bebe.
select distinct bar from vende where cerveja = any(select cerveja from bebe where pessoa = 'Fulano')
![Page 100: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/100.jpg)
Exemplo
Encontrar nomes de fabricantes de cada cerveja que 'Fulano' bebe.
select fabricante from cerveja where nome in (select cerveja from bebe where pessoa='Joao')
![Page 101: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/101.jpg)
Exemplo
Encontrar cervejas que são o único produto de seu fabricante.
select nome from cerveja where fabricante in ( select fabricante from cerveja
group by fabricante having count(*)=1)
![Page 102: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/102.jpg)
Exemplo
Encontrar bares que sao frequentados por Fulano OU que vendem cerveja a menos de R$ 2,00.
select bar from frequenta where pessoa = 'Fulano' or bar in (select bar from vende where preco <2)
![Page 103: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/103.jpg)
Exemplo
Encontrar pessoas e cervejas tal que: a pessoa bebe a cerveja E a pessoa freqüenta um bar que vende a cerveja.
select pessoa, cerveja from bebe where pessoa in ( select pessoa from frequenta where bar in ( select bar from vende where vende.cerveja =
bebe.cerveja))
![Page 104: Linguagem SQL. Introdução SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de.](https://reader035.fdocument.pub/reader035/viewer/2022081505/552fc150497959413d8e329d/html5/thumbnails/104.jpg)
Exemplo
Encontrar cervejas do fabricante 'Ambev' que NÃO são vendidas no bar 'Bar BQ'.
select nome from cerveja where fabricante = 'Ambev' and nome not in (select cerveja from vende
where bar='Bar BQ')