Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo Introduo
SQL baseada principalmente no clculo Comparao de conceitos
relacional de tuplas, embora inclua aspectos Entidade-Relacionamento
de lgebra relacional Modelo Relacional
lgebra relacional especifica uma seqncia de
operaes Linguagem SQL
Por outro lado, a SQL uma linguagem
declarativa, em que o usurio especifica apenas ER Conceitual Entidade Instncia Atributo
qual resultado deseja, no como obt-lo
Isso permite que o SQL tenha seu desempenho Relacional Lgico Relao Tupla Atributo
melhorado por estratgias de otimizao de
consultas, transparentes para o usurio, a cargo SQL Fsico Tabela Linha Coluna
do SGBD 3 4
Introduo Definio de Dados em SQL
SQL = LDD + LMD + LCD Criao de tabelas
Principais comandos Atravs do comando CREATE TABLE
LDD (Linguagem de Definio de Dados) Sintaxe geral (pode variar de acordo com SGBD)
CREATE SCHEMA / TABLE / VIEW CREATE TABLE <nomeTabela>
DROP SCHEMA / TABLE / VIEW (
ALTER TABLE
<nomeColuna> <tipo> [<restrioAtributo>]
LMD (Ling. de Manipulao de Dados) [, <nomeColuna> <tipo> [<restrioAtributo>]]
SELECT, INSERT, UPDATE, DELETE [, restrioTabela // chave primria
LCD (Linguagem de Controle de Dados) [, restrioTabela]] // chaves estrangeiras
GRANT, REVOKE )
13 14
Restries de Integridade
Restries de Unicidade
em SQL
Restries de unicidade (unique constraints) Chave primria
Indicam a chave primria e as chaves alternativas de PRIMARY KEY (<atributos>)
uma tabela
Chaves alternativas
Restries de integridade referencial (referential
constraints) UNIQUE (<atributos>)
Especificam as chaves estrangeiras de uma tabela Exemplo
Restries de verificao (check constraints) CREATE TABLE Departamento
Especificam condies que devem ser satisfeitas por ( ...
coluna/linhas de uma tabela ou entre tabelas PRIMARY KEY (DNUM),
UNIQUE (DNOME),
...)
15 16
Restries de Integridade
Restries de Verificao
Referencial
FOREIGN KEY (<atributos>) REFERENCES Podem ser criadas na definio de uma
<tabela> [(<atributos>)] coluna, tabela ou como uma assero
[ON DELETE cascade | set null | set default] separada (totalidades)
[ON UPDATE cascade | set null | set default] Exemplo (coluna)
Exemplo CREATE TABLE Tabela
CREATE TABLE Dependente (
(... A char(1) CHECK (A=Y OR A=N),
FOREIGN KEY (SSN) B char(1)
REFERENCES Empregado )
ON DELETE cascade)
17 18
21 22
23 24
Definio de Dados em SQL Definio de Dados em SQL
DROP TABLE
Remover fisicamente uma tabela
Sintaxe
DROP TABLE <nomeTabela>
ALTER TABLE
Alterar a estrutura de uma tabela,
adicionando, removendo ou alterando colunas
e restries
Sintaxe
ALTER TABLE <nomeTabela> <opes>
25 26
27 28
SELECT SELECT
Comando bsico para recuperao de Listar todos os atributos de todos os
informaes de um banco de dados empregados
SELECT *
Estrutura bsica
FROM empregado
SELECT <lista de atributos>
Listar os atributos matrcula e nome de
FROM <lista de tabelas>
todos os empregados do sexo masculino e
WHERE <condio>
do departamento 3 (ordenar por nome)
GROUP BY <atributos>
HAVING <condio de agrupamento> SELECT matricula, nome
FROM empregado
ORDER BY <atributos>
WHERE sexo=M AND depto=3
<condio> um predicado booleano ORDER BY nome
29 30
SELECT SELECT
Alias para tabelas e atributos Operaes com Strings (% e _)
Listar o cdigo e o nome de todos os Comear com Marcelo
departamentos que comeam com V e cujo Nome LIKE Marcelo%
codigo est entre 10 e 20 Terminar com Silva
SELECT d.codigo AS depto, Nome LIKE %Silva
d.nome AS nome_depto
FROM departamento d Que possui o sobrenome Melo
WHERE d.nome LIKE V% Nome LIKE %Melo%
AND d.codigo BETWEEN 10 AND 20 Que segue o padro
Telefone LIKE 88__-__00
31 32
SELECT SELECT
A SQL no trata tabelas como conjuntos, mas sim Listar o atributo cidade de todos os
como multiconjuntos empregados que moram em MG
Linhas duplicadas podem aparecer mais do que uma SELECT e.cidade
vez numa tabela ou no resultado de uma consulta FROM empregado e
A eliminao de tuplas duplicadas no realizada WHERE e.uf = MG
automaticamente porque Listar as cidades distintas de todos os
Custa caro computacionalmente, pois requer ordenao
empregados que moram em MG
Pode ser do interesse do usurio ver as duplicatas
SELECT DISTINCT e.cidade
Pode interferir no resultado de operaes de agregao FROM empregado e
SELECT DISTINCT / SELECT [ALL] WHERE e.uf = MG
ALL o default
33 34
SELECT SELECT
Ordenao Ordenao
Clusula ORDER BY possvel especificar a ordenao a partir de um
atributo que no esteja sendo retornado no SELECT
ORDER BY <atrib> [DESC | ASC]
[,<atrib> [DESC | ASC]] Listar o nome do empregado de todos os empregados
em ordem de sexo (Funciona!)
ASC o default SELECT nome FROM empregado ORDER BY sexo
Listar os empregados ordenando por UF No entanto, isso no se aplica quando se usa a clusula
DISTINCT, isto , usando o DISTINCT, a ordenao
ascendente e salrio descendente obrigatoriamente deve ser a partir de atributos contidos
SELECT * no SELECT
FROM empregado e O SELECT abaixo ir produzir um erro!
ORDER BY e.uf ASC, e.salario DESC SELECT DISTINCT nome FROM empregado
35
ORDER BY sexo 36
SELECT SELECT
Valores NULOS Listar os empregados que no possuem
Quando um valor nulo envolvido em uma supervisores
expresso juntamente com outros valores, o SELECT *
resultado o valor especial UNKNOWN FROM empregado e
WHERE mat_sup IS NULL
Listar os departamentos que possuem
gerente
SELECT *
FROM departamento d
WHERE mat_gerente IS NOT NULL
37 38
SELECT SELECT
Listar o nome e a matrcula do supervisor Manipulando mais de uma tabela
de todos os empregados Produto Cartesiano
SELECT nome, Junes (JOINS)
ISNULL(mat_sup,(sem supervisor))
INNER, OUTER (LEFT, RIGHT, FULL)
FROM empregado
SELECT SELECT
Junes Junes
Condio para juno de linhas Tipos (supondo juno entre tabelas A e B)
INNER JOIN
SELECT * FROM empregado e, departamento d Inclui apenas as linhas de A e B que satisfazem condio de
WHERE e.depto = d.numero juno
Ir retornar apenas as linhas em destaque! LEFT OUTER JOIN
EMPREGADO x DEPARTAMENTO Inclui as linhas de A e B que satisfazem condio de juno e
cod nome depto numero nome_depto as demais linhas de A
1 Z 3 1 Vendas
1 Z 3 2 Compras
RIGHT OUTER JOIN
1 Z 3 3 RH Inclui as linhas de A e B que satisfazem condio de juno e
2 Joo 1 1 Vendas as demais linhas de B
2 Joo 1 2 Compras
2 Joo 1 3 RH FULL OUTER JOIN
3 Maria 1 Vendas Inclui as linhas de A e B que satisfazem condio de juno e
3 Maria 2 Compras as demais linhas de A e B
3 Maria 3 RH
43 44
SELECT SELECT
Junes Junes
INNER JOIN LEFT [OUTER] JOIN
Inclui apenas as linhas de A e B que satisfazem Inclui as linhas de A e B que satisfazem condio
condio de juno de juno e as demais linhas de A
SELECT * FROM empregado e INNER JOIN SELECT * FROM empregado e LEFT JOIN
departamento d ON e.depto = d.numero departamento d ON e.depto = d.numero
45 46
SELECT SELECT
Junes Junes
RIGHT [OUTER] JOIN FULL [OUTER] JOIN
Inclui as linhas de A e B que satisfazem condio Inclui as linhas de A e B que satisfazem condio
de juno e as demais linhas de B de juno e as demais linhas de A e B
SELECT * FROM empregado e RIGHT JOIN SELECT * FROM empregado e FULL JOIN
departamento d ON e.depto = d.numero departamento d ON e.depto = d.numero
SELECT SELECT
Junes Junes
Filtros em OUTER JOINS Filtros em OUTER JOINS
Filtro na clusula ON (condio de juno) Filtro na clusula WHERE (condio de seleo)
SELECT d.nom_depto, e.nom_empregado SELECT d.nom_depto, e.nom_empregado
FROM departamento d FROM departamento d
LEFT JOIN empregado e LEFT JOIN empregado e
ON d.num_matricula_gerente = e.num_matricula ON d.num_matricula_gerente = e.num_matricula
AND e.nom_empregado like 'M% WHERE e.nom_empregado like 'M%
Este SELECT lista todos os departamentos da tabela de Este SELECT lista apenas os departamentos da tabela de
departamento e o nome dos gerentes que comeam com departamento cujo nome do gerente que comea com a
a letra M letra M
Funciona similar ao INNER JOIN
51 52
SELECT SELECT
Manipulando mais de uma tabela Consultas aninhadas (subqueries)
IN, EXISTS, ALL, ANY
Produto Cartesiano Verifica se ir exibir uma determinada linha de acordo com o
resultado de uma query aninhada
Junes (JOINS) IN
INNER, OUTER (LEFT, RIGHT, FULL) Verificar se o valor de uma ou mais colunas esto contidas no
resultado de uma subquery
Consultas aninhadas (subqueries) EXISTS
Verificar se existe pelo menos uma linha retornada pela
IN, EXISTS, ALL, ANY subquery
ALL
Consulta como tabela Verificar se o valor de uma coluna maior do que todos os
Consulta como coluna valores retornados por uma subquery
ANY
Consulta como filtro Verificar se o valor de uma coluna maior do que qualquer
valor retornado por uma subquery
53 54
SELECT SELECT
Consultas aninhadas (subqueries) Consultas aninhadas (subqueries)
IN NOT IN
Exemplo: Listar os empregados do departamento Exemplo: Listar os empregados que no so do
de Vendas departamento de Vendas
Verificar se o departamento de um empregado est Verificar se o departamento de um empregado no est
contido no resultado de uma consulta que retorna os contido no resultado de uma consulta que retorna os
departamentos cujo nome igual a Vendas departamentos cujo nome igual a Vendas
SELECT * FROM empregado e SELECT * FROM empregado e
WHERE e.cod_depto IN WHERE e.cod_depto NOT IN
(SELECT cod_depto FROM departamento (SELECT cod_depto FROM departamento
WHERE nom_depto = Vendas) WHERE nom_depto = Vendas)
55 56
SELECT SELECT
Consultas aninhadas (subqueries) Consultas aninhadas (subqueries)
EXISTS NOT EXISTS
Exemplo: Listar os gerentes com pelo menos 1 Exemplo: Listar os empregados que no so
dependente supervisores
SELECT * FROM empregado e SELECT e.num_matricula, e.nom_empregado
WHERE EXISTS FROM empregado e
(SELECT 1 FROM dependente dd WHERE NOT EXISTS
WHERE e.num_matricula = dd.num_matricula) (SELECT 1 FROM empregado e1
AND EXISTS WHERE e.num_matricula = e1.num_matricula_supervisor)
(SELECT 1 FROM departamento d
WHERE e.num_matricula = d.num_matricula_gerente)
57 58
SELECT SELECT
Consultas aninhadas (subqueries) Consultas aninhadas (subqueries)
ALL ANY
Exemplo: Listar os empregados possuem o salrio Exemplo: Listar os empregados possuem o salrio
maior do que todos os empregados do departamento maior do que qualquer salrio dos empregados do
com o cdigo 2 departamento com o cdigo 2
SELECT * FROM empregado e SELECT * FROM empregado e
WHERE e.val_salario > ALL WHERE e.val_salario > ANY
(SELECT val_salario FROM empregado (SELECT val_salario FROM empregado
WHERE cod_depto = 2) WHERE cod_depto = 2)
59 60
SELECT SELECT
JOIN x SUBQUERY Funes agregadas
Listar o nome dos empregados que tm dependente COUNT, SUM, MAX, MIN, AVG, ...
SUBQUERY (IN)
SELECT e.nom_empregado FROM empregado e Agrupamento
WHERE e.num_matricula IN
(SELECT num_matricula FROM dependente) GROUP BY, HAVING
JOIN
SELECT e.nom_empregado FROM empregado e
INNER JOIN dependente d
ON e.num_matricula = d.num_matricula
Qual a diferena?
Sem JOIN as colunas da tabela dependente no podem ser
exibidas no SELECT
Com JOIN podem haver nomes duplicados (um nome para cada
dependente do empregado!)
61 62
SELECT SELECT
Funes agregadas Funes agregadas
Calculam um valor escalar a partir de um COUNT (expresso)
conjunto de linhas Conta o nmero de linhas de acordo com a
Funes expresso
COUNT (expresso) Exemplo
Contar o nmero de empregados do departamento de
SUM (expresso) Vendas
AVG (expresso) EMPREGADO INNER JOIN DEPARTAMENTO
MAX (expresso) e.cod e.nome e.salario e.depto d.numero d.nome_depto
1 Z 3.000,00 3 3 RH
MIN (expresso) 2 Joo 1.500,00 1 1 Vendas 2
3 Maria 800,00 2 2 Compras
... 4 Pedro 2.000,00 1 1 Vendas
63 64
SELECT SELECT
Funes agregadas Funes agregadas
COUNT (expresso) COUNT (expresso)
Exemplo Exemplo
Contar o nmero de empregados do departamento de Contar o nmero de cdigos de departamentos distintos
Vendas na tabela de empregado
SELECT COUNT(*) SELECT COUNT(DISTINCT e.cod_depto)
SELECT SELECT
Funes agregadas Funes agregadas
SUM (expresso) Exemplo
Soma o valor definido pela expresso Listar a soma e a mdia dos salrios do
AVG (expresso) departamento 1; exibir tambm o menor e o maior
salrio
Calcula a mdia do valor definido pela expresso
MIN (expresso) EMPREGADO Soma: 4.300,00
cod nome depto salario
Retorna o menor valor definido pela expresso 1 Z 3 3.000,00 Mdia: 1.433,33
2 Joo 1 1.500,00
MAX (expresso) 3 Maria 2 800,00 Menor: 800,00
Retorna o maior valor definido pela expresso 4 Pedro 1 2.000,00
5 Antnio 1 800,00 Maior: 2.000,00
67 68
SELECT SELECT
Funes agregadas Funes agregadas
Exemplo Outro Exemplo
Listar a soma e a mdia dos salrios do Uma empresa quer avaliar para qual valor iria a
departamento 1; exibir tambm o menor e o maior folha de pagamento se aumentasse os salrios do
salrio departamento 1 em 20%. Para isso, listar a soma
SELECT SUM(e.salario), AVG(e.salario) de 20% de todos os salrios deste departamento
MIN(e.salario), MAX(e.salario) SELECT SUM(e.salario * 0.2)
FROM empregado e FROM empregado e
WHERE e.depto = 1 WHERE e.depto = 1
69 70
SELECT SELECT
Agrupamento Agrupamento
Geralmente, as funes agregadas so Geralmente, as funes agregadas so
utilizadas em agrupamentos com GROUP BY utilizadas em conjunto com agrupamentos
Exemplo Exemplo
Listar a mdia e a soma dos salrios por
Listar a mdia e a soma dos salrios por departamento
departamento SELECT e.depto,
AVG(e.salario) AS media,
EMPREGADO
cod nome depto salario
SUM(e.salario) AS soma
1 Z 3 3.000,00 depto mdia soma FROM empregado e
2 Joo 1 1.500,00 1 1.433,33 4.300,00 GROUP BY e.depto
2 800,00 800,00
3
4
Maria
Pedro
2
1
800,00
2.000,00 3 3.000,00 3.000,00 Para uma coluna aparecer junto com funes
5 Antnio 1 800,00 agregadas, ela deve estar no GROUP BY!
71 72
SELECT SELECT
Agrupamento Filtros de Agrupamento
Outro Exemplo Geralmente, podem ser definidos filtros para
Listar o nmero de empregados por departamento as funes agregadas utilizando-se HAVING
SELECT e.depto, COUNT(e.cod) AS total Exemplo
FROM empregado e
GROUP BY e.depto Listar a mdia e a soma dos salrios por
departamento, quando a soma for > 1.000,00
EMPREGADO EMPREGADO
cod nome depto salario cod nome depto salario
1 Z 3 3.000,00 depto total 1 Z 3 3.000,00
2 Joo 1 1.500,00 1 3 2 Joo 1 1.500,00 depto mdia soma
3 Maria 2 800,00 2 1 3 Maria 2 800,00 1 1.433,33 4.300,00
3 1 4 Pedro 1 2.000,00 3 3.000,00 3.000,00
4 Pedro 1 2.000,00
5 Antnio 1 800,00 5 Antnio 1 800,00
73 74
SELECT SELECT
Agrupamento Agrupamento
Exemplo Outro Exemplo
Listar a mdia e a soma dos salrios por Listar o departamento com mais de 2 empregados
departamento SELECT d.nome
SELECT e.depto, FROM empregado e
AVG(e.salario) AS media, INNER JOIN departamento d
SUM(e.salario) AS soma ON e.depto = d.numero
FROM empregado e GROUP BY d.nome
GROUP BY e.depto HAVING COUNT(e.cod) > 2
HAVING SUM(e.salario) > 1000.00 A funo agregada pode aparecer apenas na
HAVING x WHERE clusula HAVING
HAVING filtra o resultado de funes agregadas
WHERE filtra linhas de uma tabela
75 76
SELECT SELECT
Consultas aninhadas (subqueries) Consultas aninhadas (subqueries)
Consulta como tabela Consulta como coluna
Listar o nome dos empregados com mais de 2 Listar o total de dependentes por empregado
dependentes SELECT e.nom_empregado,
SELECT e.nom_empregado, a.total (SELECT COUNT(*)
FROM empregado e FROM dependente d
INNER JOIN WHERE d.num_matricula = e.num_matricula)
(SELECT d.num_matricula, COUNT(*) AS total FROM empregado e
FROM dependente d
GROUP BY d.num_matricula) a
ON e.num_matricula = a.num_matricula Esta consulta poderia ter sido feita com GROUP BY
WHERE a.total > 2
Esta consulta poderia ter sido feita com HAVING
77 78
SELECT SELECT
Consultas aninhadas (subqueries) Operaes de conjunto
Consulta como filtro UNION
Listar o nome dos empregados com mais de 2 Unio entre os conjuntos A e B inclui os elementos
dependentes de A e B
SELECT e.nom_empregado UNION ALL inclui duplicados
FROM empregado e A e B devem ter a mesma estrutura (nmero de
WHERE
(SELECT COUNT(*) colunas e mesmo tipo de dados)
FROM dependente d
WHERE d.num_matricula = e.num_matricula) > 2
Esta consulta poderia ter sido feita com HAVING
79 80
SELECT SELECT
Operaes de conjunto Operaes de conjunto
UNION INTERSECT
Exemplo Interseo entre os conjuntos A e B inclui os
Listar todos os nomes de empregados e dependentes elementos comuns entre A e B
SELECT e.nom_empregado FROM empregado e A e B devem ter a mesma estrutura (nmero de
UNION colunas e mesmo tipo de dados)
SELECT d.nom_dependente FROM dependente d
Listar todos os nomes (incluindo linhas duplicadas) de Exemplo
empregados e dependentes Listar os empregados que tm dependentes
SELECT e.nom_empregado FROM empregado e SELECT e.num_matricula FROM empregado e
81 82
SELECT INSERT
Operaes de conjunto Insero de linhas em uma tabela
EXCEPT Sintaxe
Diferena entre os conjuntos A e B inclui os INSERT INTO <tabela>
elementos de A que no esto em B VALUES (lista de valores)
A e B devem ter a mesma estrutura (nmero de Exemplo
colunas e mesmo tipo de dados) INSERT INTO EMPREGADO
Exemplo VALUES (1,Joo,Av Afonso Pena 33,2,1970-02-
Listar os empregados que no tm dependentes 03, 1500.00,M)
SELECT e.num_matricula FROM empregado e
INSERT INTO DEPARTAMENTO
EXCEPT
SELECT d.num_matricula FROM dependente d VALUES (2,Vendas,1)
83 84
INSERT INSERT
Insero de linhas em uma tabela Insero de linhas em uma tabela
Sintaxe Sintaxe
INSERT INTO <tabela> (colunas) INSERT INTO <tabela> [(colunas)]
VALUES (lista) SELECT... FROM... WHERE
Exemplo Exemplo
INSERT INTO EMPREGADO (MAT, NOME, SEXO) INSERT INTO EMPREGADO2 (MAT, NOME, SEXO)
VALUES (1,Maria,F) SELECT MAT, NOME, SEXO
INSERT INTO DEPARTAMENTO (COD,NOME) FROM EMPREGADO
VALUES (1,Vendas) INSERT INTO DEPARTAMENTO
Colunas no referenciadas devem ser NULL ou SELECT COD, NOME, GERENTE
FROM DEPARTAMENTO_BACKUP
possuir ter DEFAULT ou campo IDENTITY
85 86
DELETE DELETE
Excluso de linhas de uma tabela Excluso de linhas de uma tabela
Sintaxe Sintaxe
DELETE FROM <tabela> DELETE FROM <tabela>
WHERE <condio> WHERE <coluna> [NOT] IN
Exemplo (SELECT <coluna> FROM ... WHERE ...)
DELETE FROM EMPREGADO Exemplo
DELETE FROM DEPARTAMENTO DELETE FROM EMPREGADO
WHERE COD = 1 WHERE MAT IN (SELECT MAT FROM DEPENDENTE)
DELETE FROM EMPREGADO DELETE FROM DEPARTAMENTO WHERE COD
WHERE UF = MG NOT IN (SELECT DEPTO FROM EMPREGADO)
AND CIDADE = PIRAPORA
87 88
DELETE UPDATE
Excluso de linhas de uma tabela Atualizao de valores das colunas
Sintaxe Sintaxe
DELETE <alias> UPDATE <tabela>
FROM <tabela> JOIN ... SET <coluna>=<valor> [, <coluna>=<valor>]
WHERE <condio> WHERE <condio>
Exemplo Exemplo
Remover todos os empregados que possuem cnjuge Aumentar em 20% o salrio dos empregados do
cadastrado como dependente departamento 3 e transferi-los para o depto 5
DELETE E UPDATE EMPREGADO
FROM EMPREGADO AS E SET DEPTO=5, SALARIO = SALARIO * 1.2
INNER JOIN DEPENDENTE AS D ON E.MAT = D.MAT WHERE DEPTO = 3
WHERE D.PARENTESCO = CONJUGE 89 90
UPDATE UPDATE
Atualizao de valores das colunas Atualizao de valores das colunas
Sintaxe Sintaxe
UPDATE <tabela> UPDATE <alias>
SET <coluna>=<valor> [, <coluna>=<valor>] SET <coluna>=<valor> [, <coluna>=<valor>]
WHERE <atributo> [NOT] IN FROM <tabela> JOIN ...
(SELECT... FROM... WHERE...) WHERE <condio>
Exemplo Exemplo
Reduzir 15% do salrio dos empregados que no Aumentar 15% para empregados com dependentes
possuem dependentes UPDATE E
UPDATE EMPREGADO SET SALARIO = SALARIO * 1.15
SET SALARIO = SALARIO * 0.85 FROM EMPREGADO AS E
WHERE MAT NOT IN INNER JOIN DEPENDENTE AS D
(SELECT MAT FROM DEPENDENTE) ON E.MAT = D.MAT
91 92
UPDATE SELECT INTO
Atualizao de valores das colunas Salvar o resultado de um SELECT para uma
Sintaxe nova tabela
UPDATE <tabela> Sintaxe
SET <coluna>=<SELECT...> SELECT <lista de colunas>
WHERE <condio> INTO <nova tabela>
Exemplo FROM <tabela> ...
Atualizar o salrio dos empregados do departamento 5 Exemplo
com o maior salrio do departamento 3 SELECT MAT, NOME
UPDATE EMPREGADO INTO APENAS_HOMENS
SET SALARIO = (SELECT MAX(SALARIO) FROM FROM EMPREGADO WHERE SEXO = M
EMPREGADO WHERE DEPTO = 3) SELECT * FROM APENAS_HOMENS
WHERE DEPTO = 5 93 94
Vises Vises
Viso (view) em SQL uma tabela derivada de Sintaxe
outras tabelas (definidas no esquema) ou de
outras vises previamente definidas CREATE VIEW <nome>
AS
Uma viso pode ser considerada como um tabela
virtual, pois no necessariamente existe SELECT... FROM... WHERE...
fisicamente GROUP BY... HAVING...
As operaes de atualizao so mais limitadas Exemplo
Uma aplicao para as vises disponibilizar CREATE VIEW VW_SUPERVISORES
consultas utilizadas freqentemente AS SELECT * FROM EMPREGADO
Vises simplificam a interface com o usurio e WHERE MAT IN
podem ser usadas como mecanismos de (SELECT MAT_SUP FROM EMPREGADO)
segurana
95 96
Vises
Utilizao
Acessar a viso por meio do comando SELECT
como se fosse uma tabela comum
Pode ser usada em JOINS etc.
Exemplo
SELECT * FROM VW_SUPERVISORES
Remoo
DROP VIEW <nome>
DROP VIEW VW_SUPERVISORES
97