Linguagem SQL
Bancos de Dados II
Linguagem SQL
SQL - Principais conceitos
Machado cap.14
Introdução
Importância da linguagem SQL;
1970 - Fundamentada no modelo relacional
de CODD;
1974 – 1ª versão - SEQUEL definida na
IBM;
1975 – Primeiro protótipo em 1975;
1976 – Primeira revisão passando após
ampliações para SQL por razões jurídicas;
1977 – SYSTEM R – ORACLE é lançado;
1983 – Popularizou-se: SQL/DS e DB2
(IBM), ZIM, RDB, SYBASE;
1983 – Padrão de acesso a SGBD
Relacionais “de fato”;
1986 ANSI padrão oficial;
Vários dialetos;
1989 – SQL recebe reforço de integridade –
versão SQL/89;
1992 – É apresentada a versão SQL2;
SQL - Principais conceitos
Machado cap.14
Conceitos
Bancos de Dados Relacionais
Linhas (registros);
Colunas (campos);
Não ordenadas;
Localizadas por campo chave PK;
Facilidade de manipulação e
entendimento;
Voltada para ambiente relacional
mas pode ser usada em outros
ambientes;
SQL - Principais conceitos
Machado cap.14
Linguagem SQL
Originalmente só interativa;
Após acréscimos passou a ser
suportada por linguagens
hospedeiras (COBOL, PL/I, C, VB,
DELPHI, etc.) - DML Embutido;
SQL - Principais conceitos
Variedade de Enfoques
Machado cap.14
SQL
LIGAÇÃO COM OUTROS COMPUTADORES
SGBD
SGBD –– Sistema Gerenciador de Banco de DadosSistema Gerenciador de Banco de Dados
BD Gateway Programas de Aplicação SQL Relatórios SQL FORMS SQL Consultas “AD HOC” SQL Outros Bancos de Dados SQL Ferramentas Front-End SQL DBA Bancos de Dados Queries “AD-HOC”
SQL - Principais conceitos
Machado cap.14
Linguagem SQL - Usos
Linguagem interativa de Consulta;
Linguagem de programação –
DML Embutido;
Linguagem de Administração de
Banco de Dados;
Linguagem cliente/servidor;
Linguagem para Banco de Dados
Distribuído;
Caminho de acesso a outros Bancos
SQL
SQL - Principais conceitos
Classes de Objetos
(principais)
Machado cap.14 DDL Criar Destruir Modificar DML Consultar Inserir Alterar Apagar Implementação do Ambiente Segurança Controle AdministraçãoSQL - Principais conceitos
Machado cap.14
Classes de Objetos
DDL – Data Definition Language
(Linguagem de Definição de Dados);
Create, Alter, Drop
DML – Data Manipulation Language
(Linguagem de Manipulação de Dados);
Select, Insert, Update
Controle de acessos;
Grant, Revoke
Compartilhamento de Dados;
Controle de Usuários e instâncias
Integridade dos Dados;
SQL - Principais conceitos
Machado cap.14
Vantagens
Independência de fabricante;
Portabilidade entre computadores;
Redução dos custos com
treinamento;
Sentenças padrão em inglês para
acesso e manipulação;
Consulta interativa (atualmente há
ferramentas visuais que facilitam
ainda mais);
Múltiplas visões dos dados;
SQL - Principais conceitos
Machado cap.14
Desvantagens
A maioria dos fabricantes
implementa suas próprias versões
muitas vezes ignorando os padrões
ISO e ANSI;
A portabilidade é relativa em função
das limitações do item acima;
Padronização leva à inibição da
criatividade;
Interfaces gráficas;
Não atende a todas as necessidades
SQL - Principais conceitos
SQL
Ferramenta de acesso aos bancos
de dados Relacionais
Algumas características:
Linguagem não procedural;
Não atende a todas as necessidades
de processamento.
PL/SQL
Linguagem de acesso a bancos de
dados Relacionais
Algumas características:
Linguagem procedural;
Supre as limitações de
SQL - Principais conceitos
Classes de Comandos
DRL – Data Retrieval Language –
Recuperação ou extração de dados do BDR;
Seleção (Select);
DML – Data Manipulation Language –
Linguagem de Manipulação de Dados do
BDR;
Inclusão (Insert), Alteração (Update) e
Exclusão (Delete);
DDL – Data Definition Language –
Linguagem de Definição Tabelas no BDR;
Criar (Create), Alterar (Alter), Eliminar (Drop);
DCL – Data Configuration Language – Define
autorização de acesso aos dados do BDR;
SQL - Principais conceitos
Estrutura básica dos comandos DRL
O que mostrar? SELECT atributos
(colunas de tabelas, constantes, variáveis de
sistema, resultados de cálculos, etc...);
De onde? FROM tabelas apelidos
(quais tabelas preciso consultar para obter os
dados necessários para a consulta);
Em que condições? WHERE condições de
seleção
(critérios de seleção ou filtragem para
obtenção dos dados desejados);
Organizado como? ORDER atributos
(quais atributos deverão ser utilizados para
SQL - Principais conceitos
Modelo e tabelas utilizadas para os
exemplos e exercícios.
Registro de trabalhos selecionados
para eventos acadêmicos.
Modelo Conceitual
ARTIGOS
EVENTOS
AUTOR TÍTULO UNIVERSIDADEORIGEM ÓRGÃOFINANCIADOR NOTA EVENTO LOCAL MÊS NUMPARTICIPANTES UNIVERSIDADEORGANIZADORAACEITOS
EVENTO AUTOR TITULO POSSUI POSSUI (1:N) (N:1) NOTA_DE_CORTE NOTA_CORTESQL - Principais conceitos
Modelo e tabelas utilizadas para os
exemplos e exercícios.
Registro de trabalhos selecionados
para eventos acadêmicos.
Modelo Lógico
ARTIGOS
EVENTOS
AUTOR TÍTULO UNIVERSIDADEORIGEM ÓRGÃOFINANCIADOR NOTA EVENTO LOCAL MÊS NUMPARTICIPANTES UNIVERSIDADEORGANIZADORAACEITOS
EVENTO AUTOR TITULONOTA_DE_CORTE
NOTA_CORTESQL - Principais conceitos
Modelo e tabelas utilizadas para os
exemplos e exercícios.
Modelo Físico
ARTIGOS
EVENTOS
AUTOR TÍTULO UNIVERSIDADEORIGEM ÓRGÃOFINANCIADOR NOTA EVENTO LOCAL MÊS NUMPARTICIPANTES UNIVERSIDADEORGANIZADORAACEITOS
EVENTO AUTOR TITULO VARCHAR2(30) Varchar2(30) Varchar2(30) Varchar2(30) Number(2,1) Varchar2(30 VARCHAR2(30) NUMBER(02) NUMBER(03)S VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) VARCHAR2(30)NOTA_DE_CORTE
NOTA_CORTE NUMBER(2,1)SQL - Principais conceitos
Morelli
Comandos para criar ou alterar Tabelas
CREATE TABLE parâmetros
CREATE TABLE [schema.] tabela
(coluna1 tipo_de_dado [default expressão] [constraint_coluna],
...
(colunaN tipo_de_dado [default expressão] [constraint_coluna],
[constraint_tabela] );
ALTER TABLE parâmetros
ALTER TABLE [schema.] tabela
[add (coluna tipo_de_dado [default expressão] [constraint_coluna], ...)]
...
[modify (coluna tipo_de_dado [default expressão] [constraint_coluna], ...)] [rename to novo_nome_tabela] [add constraint_coluna/constraint_tabela] [drop constraint_coluna/constraint_tabela [cascade]] [enable/disable constraint_coluna/constraint_tabela];
SQL - Principais conceitos
Bandeira
Criação das Tabelas do exemplo:
ARTIGOS
CREATE TABLE artigos ( Autor varchar2(30), Titulo varchar2(30), Universidadeorigemvarchar2(30), Orgaofinanciador varchar2(30), Nota number(2,1) );
EVENTOS
CREATE TABLE eventos ( Evento varchar2(30), Local varchar2(30), Mês number(02), numparticipantes number(03), universidadeorganizadora varchar2(30) );
SQL - Principais conceitos
Criação das Tabelas do exemplo
(cont):
ACEITOS
CREATE TABLE aceitos ( Evento varchar2(30), Autor varchar2(30), Titulo varchar2(30) );
NOTA_DE_CORTE
CREATE TABLE nota_de_corte (
Nota_corte number(2,1)
);
SQL - Principais conceitos
Tipos de dados (principais)
CHAR(N)
Campos caracter de tamanho fixo.
VARCHAR2(N)
Campos caracter de tamanho variável (só considera os caracteres utilizados).
LONG
Utilizado para campos muito grandes.
RAW e LONG RAW
Equivalentes aos VARCHAR2 e LONG
respectivamente mas binários para guardar imagens, sons, etc...
NUMBER(p,e)
Campos numéricos (p=parte inteira e e=número de decimais).
DATE
Campos de datas.
SQL - Principais conceitos
Restrições de dados (constraints)
Destinadas a garantir a integridade dos
dados em determinadas condições
NULL | NOT NULL
Coluna aceita ou não valores nulos.
UNIQUE
Coluna somente aceita valores únicos.
CHECK
Coluna aceita somente os valores constantes na lista informada.
PRIMARY KEY
Identifica a chave primária da tabela.
FOREIGN KEY
Identifica que a coluna é uma chave estrangeira.
SQL - Principais conceitos
Operadores
Relacionais
Morelli pág. 15Menor ou igual
<=
Maior ou igual
>=
Menor
<
Maior
>
Diferente
<>
Igual
=
SQL - Principais conceitos
Operadores
Lógicos
Morelli pág. 15Se o campo é nulo
Is null
Negação
Not
Operador associativo –
equivale a uma união
Or
Operador restritivo –
equivale a uma intersecção
And
SQL - Principais conceitos
Machado cap.14
Comando para recuperar dados de
Tabelas
SELECT parâmetros
SELECT [distinct] {*,colunas [alias], expressões, funções, ...}
FROM {tabelas [alias],} [WHERE condição] [GROUP BY colunas] [HAVING condição]
SQL - Principais conceitos
Machado cap.14
Funções de linha –
para manipular dados
UPPER/LOWER;
Cálculos (SELECT 10 * 20 FROM
DUAL);
CONCAT ou ||;
INITCAP;
LENGTH;
SUBSTR;
LTRIM/RTRIM;
ROUND;
TRUNC
SQL - Principais conceitos
Machado cap.14
Funções de linha –
para manipular datas
ADD_MONTHS (data,n);
MONTHS_BETWEEN (data1,data2);
NEXT_DAY (data,’dia_da_semana’);
TO_DATE(campo,máscara);
SQL - Principais conceitos
Machado cap.14
Funções de linha –
para efetuar cálculos;
AVG (campo);
COUNT (campo|*);
MAX (campo);
MIN(campo);
SQL - Principais comandos
Morelli 3.1 e 3.2
Seleções básicas, ordenações e filtros
SELECT [distinct] {*,colunas [alias], expressões, funções, ...}
FROM {tabelas [alias],} [WHERE condição]
[GROUP BY colunas] [HAVING condição]
[ORDER BY colunas [asc | desc]];
SQL - Principais comandos
Recuperando dados de várias tabelas;
Conceitos
Qualificadores de nomes
Permitem a efetivação de uma junção entre tabelas em uma consulta pois, pode haver colunas de mesmo nome em tabelas
diferentes.
Duas sintaxes diferentes:
• Padrão standard
Equalização de colunas na cláusula WHERE (utilizada pelo MS-SQL e ORACLE).
• Padrão ANSI SQL
SQL - Principais comandos
Recuperando dados de várias tabelas;
Padrão ANSI SQL
Parâmetro JOIN na cláusula FROM
Tipos:
• INNER JOIN
Inclui somente as linhas que satisfacam a condição de junção;
• CROSS JOIN
Inclui cada uma das combinações de todas as linhas entre as tabelas; • OUTER JOIN
Inclui as linhas que satisfaçam a
condição de junção mais as linhas restantes de uma das tabelas da junção
SQL - Principais comandos
Recuperando dados de várias tabelas;
Padrão ANSI SQL
(cont)
Exemplos:
INNER JOIN
Ver os títulos de cada autor aceitos para um evento qualquer;
Select artigos.autor, aceitos.titulo From artigos INNER JOIN aceitos ON artigos.autor = aceitos.autor;
CROSS JOIN (produto cartesiano)
Mostrar os eventos de todos os artigos; Select artigos.autor, artigos.titulo,
aceitos.evento
SQL - Principais comandos
Recuperando dados de várias tabelas;
Padrão ANSI SQL
(cont)
Exemplos
(cont):
OUTER JOIN
Possui um parâmetro adicional para indicar de qual tabela se deseja incluir todas as linhas.
Utilidades: verificar quais linhas de uma tabela possuem relacionamento com a outra e quais não possuem.
Qualificadores:
LEFT OUTER JOIN – inclui todas as linhas da tabela do primeiro lado (esquerdo)
RIGHT OUTER JOIN – inclui todas as linhas da tabela do segundo lado (direito)
Select artigos.autor, aceitos.titulo
From artigos LEFT OUTER JOIN aceitos ON artigos.autor = aceitos.autor;
SQL - Principais comandos
Morelli 3.3
Seleções join (junção) de tabelas;
Tipos de junções (relações)
Padrão STANDARD.
Equijoin – campos iguais de tabelas
diferentes;
SELECT [distinct] {*,alias.colunas [alias_coluna], expressões, funções, ...}
FROM tabela1 alias1, tabela2 alias2
WHERE alias1.coluna1 = alias2.coluna2;
Exemplo:
Ver os títulos de cada autor aceitos para
um evento qualquer;
Select art.autor, ace.titulo
From artigos art, aceitos ace
Where art.autor = ace.autor;
SQL - Principais comandos
Morelli 3.3
Seleções join (junção) de tabelas
(cont);
Tipos de junções (relações)
(cont);
Outerjoin – campos em comum
existam em duas tabelas e os que
faltam;
SELECT [distinct] {*,alias.colunas [alias_coluna], expressões, funções, ...}
FROM tabela1 alias1, tabela2 alias2
WHERE alias1.coluna1 = alias2.coluna2(+) [ORDER BY colunas];
Exemplos:
Ver os títulos de cada autor aceitos para
um evento qualquer e os que não o
foram;
Select art.autor, art.titulo, ace.evento
From artigos art, aceitos ace
SQL - Principais comandos
Morelli 3.32
Seleções join (junção) de tabelas
(cont);
Tipos de junções (relações)
(cont);
NonEquijoin – reunir campos de
tabelas que não tenham nada em
comum.
SELECT [distinct] {*,alias.colunas [alias_coluna], expressões, funções, ...}
FROM tabela1 alias1, tabela2 alias2, tabela3 alias3 WHERE alias1.coluna1 = alias2.coluna2 AND
alias3.coluna3 between valor_mínimo AND valor_máximo;
Exemplo:
Ver os títulos, as notas, os eventos e a nota de corte dos trabalhos aceitos;
Select art.titulo, art.nota, ace.evento, nc.nota_corte
From artigos art, aceitos.ace, nota_de_corte nc
Where art.autor = ace.autor And art.titulo = ace.titulo;
SQL - Principais comandos
Morelli 3.3
Seleções join (junção) de tabelas
(cont);
Tipos de junções (relações)
(cont);
Selfjoin – reunir campos diferentes de uma
mesma tabela que possam ter conteúdo do
mesmo tipo.
SELECT [distinct] {*,alias.colunas [alias_coluna], expressões, funções, ...}
FROM tabela1 alias1, tabela1 alias2
WHERE alias1.coluna1 = alias2.coluna2;
Nota: note que a tabela é a mesma embora
os aliases sejam diferentes;
Exemplos:
Ver os artigos financiados pela própria
universidade;
Select art1.autor, art1.titulo,
art1.universidadeorigem, art2.orgaofinanciador From artigos art1, artigos art2
Where art1.universidadeorigem = at2.orgaofinanciador;
SQL - Principais comandos
Morelli 3.4.1
Seleções usando funções de linha;
Funções de caracteres;
Preenche à esquerda ou à direita com o caractere indicado em ‘c’ até o tamanho ‘n’, o campo indicado.
lpad/rpad (campo,
n,c)
Informa a quantidade de caracteres da coluna.
length (coluna)
Extrai parte dos caracteres de uma
coluna ou grupo de caracteres.
substr (coluna,
posição,tamanho)
Concatena duas colunas ou cadeia de caracteres (semelhante ao
operador de concatenação ‘||’).
concat
(coluna1,coluna2)
Converte o primeiro caractere de cada palavra em maiúsculo e o resto minúsculo.
initcap (coluna)
Converte caracteres em minúsculas ou maiúsculas.
lower/upper (coluna)
Descri
Descriççãoão Fun
SQL - Principais comandos
Morelli 3.4.2
Seleções usando funções de linha;
Funções de datas;
No ORACLE, o tipo DATE armazena internamente: século, ano, mês, dia, hora, minuto e segundo. O formato
padrão é DD-MMM-AA. O usuário poderá, a seu critério, utilizar estes dados de formas diferentes, utilizando as funções abaixo. A variável de sistema sysdate,
armazena a data/hora corrente.
Trunca data informada (idem round)
trunc (data, formato)
Arredonda a data informada para o primeiro ou último dia do mês
(quando o formato for MONTH) ou ano (quando formato for YEAR).
round (data, formato)
Retorna a data do último dia do mês em que se encontra a variável data.
last_day (data)
Retorna uma data, após a data
informada, em que o dia da semana seja igual a “dia_da_semana”.
next_day (data,
‘dia_da_semana’)
Adiciona ‘n’ meses à data informada
add_months (data, n)
Retorna o número de meses entre duas datas.
months_between (data1,data2)
Descri
Descriççãoão Fun
SQL - Principais comandos
Morelli 3.4.3
Seleções usando funções de linha;
Funções de numéricas;
Arredonda ‘num’ para cima ou para baixo.
ceil/floor (num)
Calcula a raiz quadrada de ‘n’.
sqrt (n)
Calcula n1 elevado a n2.
power (n1, n2)
Retorna o resto da divisão de ‘a’ por ‘b’, em que ‘a’ e ‘b’ podem ser
constantes, colunas ou expressões.
mod (a,b)
Trunca o valor ou coluna informada, em que ‘d’ indica o número de casas decimais desejado.
trunc (coluna, d)
Arredonda o valor ou coluna informada, em que ‘d’ indica o
número de casas decimais desejado.
round (coluna, d)
Descri
Descriççãoão Fun
SQL - Principais comandos
Morelli 3.4.4
Seleções usando funções de linha;
Funções de conversão de dados;
Converte um null encontrado na null
coluna, em um valor especificado.
nvl (coluna, valor)
Converte uma cadeia de caracteres, informando uma data, no tipo date, date
de acordo com a variável formato.
to_date (char,
‘formato’)
Converte a cadeia de caracteres numericos informados em um número inteiro.
to_number (char)
Converte um campo numérico ou data em uma cadeia de caracteres do tipo varchar2, com o formato varchar2
definido pela variável formato.
to_char (número ou
data, ‘formato’)
Descri
Descriççãoão Fun
SQL - Principais comandos
Morelli 3.4.5
Seleções usando funções de linha;
Funções de grupo;
Calcula a soma dos valores de uma coluna.
Sum (coluna)
Informa o valor mínimo de uma coluna.
Min (coluna)
Informa o valor máximo de uma coluna.
Max (coluna)
Informa o total de linhas selecionadas.
Count (coluna)
Calcula a média dos valores de uma coluna.
Avg (coluna)
Descri
Descriççãoão Fun
Funççãoão
Todas as funções desconsideram valores nulos, exceto
count
SQL - Principais comandos
Morelli 3.5
Seleções usando operadores de
conjunto;
Retorna o que um conjunto possui e o outro não.
Minus
Retorna os dados que são comuns a dois conjuntos de dados.
Intersect
Retorna a união entre dois conjuntos de dados com estruturas
semelhantes.
Union
Descri
Descriççãoão Operador
SQL - Principais comandos
Morelli 3.5
Seleções usando conjuntos;
Lista de valores
Parâmetro IN no comando WHERE;
Ver os eventos dos meses de férias
escolares (01, 07 e 12);
Select evento, mês
From eventos
Where mês IN (1, 7, 12);
Intervalos
Parâmetro BETWEEN no comando
WHERE;
Ver os eventos dos meses letivos do
primeiro semestre (02 a 06);
Select evento, mês
From eventos
SQL - Principais comandos
Morelli 4.2
Atualização de dados;
Alteração de linhas;
UPDATE tabela
SET coluna = valor [, coluna = valor ...] [WHERE condição];
Se a cláusula WHERE for omitida,
todas as linhas da tabela serão
alteradas.
SQL - Principais comandos
Morelli 4.3
Atualização de dados;
Eliminação de linhas;
DELETE [from] tabela [WHERE condição];
Se a cláusula WHERE for omitida,
todas as linhas da tabela serão
eliminadas.
SQL - Principais comandos
Morelli 6.3
Outras estruturas de dados;
Visões de dados;
Uma visão (view) é uma tabela virtual
na qual os dados não estão
fisicamente armazenados. É apenas
uma visão de um grupo de colunas
de uma ou mais tabelas do banco.
Vantagens:
Evitar que usuários não autorizados
tenham acesso a todos os dados de
uma tabela;
Associar a uma visão, consultas que
utilizam critérios de seleção
complexos, para facilitar o acesso
pelos usuários.
SQL - Principais comandos
Morelli 6.3
Outras estruturas de dados;
Criando visões;
CREATE [OR REPLACE] [force | noforce] VIEW nome_visão
[alias, ...] as subquery;
Onde:
Sentença select na qual será baseada a view.
subquery
Só cria a view se a tabela base existir.
noforce
Cria a view, mesmo que a tabela base não exista
force
Recria a view, se ela já existir
replace
Descrição
Opção
Há outros parâmetros que foram
omitidos e que poderão ser
consultados no livro.
SQL - Principais comandos
Morelli 6.4
Outras estruturas de dados;
Criando seqüências;
Valores que podem ser gerados
automaticamente pelo Oracle.
Muito útil na geração de valores para
chaves primárias;
SQL - Principais comandos
Morelli 6.4
Outras estruturas de dados;
Criando seqüências;
CREATE SEQUENCE seqüência [increment by n] [start with n] [maxvalue n | nomaxvalue] [cycle | nocycle] [cache n | nocache];
Onde:
Indica ao Oracle quantos valores são pré-alocados em memória
cache n | nocache
Indica que, quando atingir o valor máximo, a numeração continuará a partir do valor inicial ou não.
cycle | nocycle
Informa o valor máximo ou mínimo que a seqüência pode assumir.
maxvalue/minvalue
n
Informa o primeiro número a ser gerado.
start with n
Informa de quanto será o incremento ou decremento da seqüência.
increment by n
Nome da seqüência que não pode ser o mesmo de uma tabela ou view.
seqüência
Descrição
Opção
SQL - Principais comandos
Morelli 6.5
Outras estruturas de dados;
Criando sinônimos;
Estabelece nomes alternativos para
tabelas, views, índices ou
seqüências;
Objetiva facilitar a manipulação
desses objetos por outros usuários
que não o seu dono, dando-lhes
nomes mais curtos ou mais
significativos;
Preservar a definição de um objeto
por seu usuário original;
Utilizado como forma de
compartilhamento de objetos por
vários usuários.
SQL - Principais comandos
Morelli 6.5
Outras estruturas de dados;
Criando sinônimos;
CREATE [public] SYNONYM sinônimo for objeto;
Onde:
Informa o nome do objeto sobre o qual se aplica o sinônimo.
objeto
Indica que o sinônimo poderá ser usado por qualquer usuário.
public
Descrição
Opção
SQL - Principais comandos
Morelli 7
Subqueries;
Consulta utilizada dentro de um comando
SQL em diversas situações.
Subqueries de uma linha;
Quando se espera que a consulta retorne
apenas um valor.
Formato:
SELECT coluna [, coluna ...] FROM tabela1
WHERE [tabela1.]coluna = (SELECT [tabela2.]coluna2 FROM tabela2
[WHERE condição] );
Observe:
a presença do operador relacional =;
que, de fato, a subquery retorne
somente um valor;
Que a subquery é colocada entre
parênteses;
Pode ser utilizada para outros comandos
SQL - Principais comandos
Morelli 7
Subqueries;
Subqueries de múltiplas linhas;
Quando se espera que a consulta retorne
um, ou mais de um valor em apenas uma coluna.
Formato:
SELECT coluna [, coluna ...] FROM tabela1
WHERE [tabela1.]coluna IN | NOT IN
(SELECT [tabela2.]coluna2 FROM tabela2
[WHERE condição] );
Observe:
a presença do operador relacional IN, ou
NOT IN;
que, de fato, a subquery retorne
somente uma coluna;
Que a subquery é colocada entre
SQL - Principais comandos
Morelli 7
Subqueries;
Subqueries de múltiplas colunas;
Quando se espera que a consulta retorne
um, ou mais de um valor em apenas uma ou várias colunas.
Formato:
SELECT coluna [, coluna ...] FROM tabela1
WHERE [tabela1.]coluna IN | NOT IN
(SELECT [tabela2.]coluna2, [tabela2.]coluna3 FROM tabela2
[WHERE condição] );
Observe:
a presença do operador relacional IN, ou
NOT IN;
que a subquery retorna mais de uma
coluna;
Que a subquery é colocada entre
SQL - Principais comandos
Morelli 7
Subqueries;
Subqueries correlatas;
Quando se utiliza uma coluna da consulta
externa na subquery.
Formato:
SELECT coluna1 [, coluna2 ...] FROM tabela1
WHERE [tabela1.]coluna IN | NOT IN
(SELECT [tabela2.]coluna2 FROM tabela2
WHERE tabela2.coluna2 = tabela1.coluna2 );
Observe:
a presença do operador relacional IN, ou
NOT IN;
que a subquery utiliza uma coluna da
tabela 1 (mais externa) na sua condição
de comparação;
Que a subquery é colocada entre
Orientação Final