banco de dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf ·...
TRANSCRIPT
![Page 2: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/2.jpg)
2
Objetivos:
–Listar os recursos das instruções SELECT SQL
–Executar uma instrução SELECT básica
–Diferenciar instruções SQL e comandos SQL*Plus
Criando Instruções SQL Básicas
![Page 3: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/3.jpg)
3
SeleçãoSeleção ProjeçãoProjeção
Tabela 1Tabela 1 Tabela 2Tabela 2
Tabela 1Tabela 1 Tabela 1Tabela 1JunçãoJunção
Recursos das Instruções SELECT SQL
![Page 4: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/4.jpg)
4
SELECT [DISTINCT] {*, coluna [apelido],...}FROM tabela;
SELECT [DISTINCT] {*, coluna [apelido],...}FROM tabela;
–SELECT identifica que colunas.
–FROM identifica qual tabela.
Instrução SELECT Básica
![Page 5: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/5.jpg)
5
–Instruções SQL não fazem distinção entre maiúsculas e minúsculas.
–Instruções SQL podem estar em uma ou mais linhas.
–Palavras-chave não podem ser abreviadas ou divididas entre as linhas.
–Normalmente, as cláusulas são colocadas em linhas separadas.
–Guias e endentações são usadas para aperfeiçoar a legibilidade.
Criando Instruções SQL
![Page 6: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/6.jpg)
6
DEPTNO DNAME LOC--------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
SQL> SELECT * 2 FROM dept;
Selecionando Todas as Colunas
![Page 7: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/7.jpg)
7
DEPTNO LOC--------- ------------- 10 NEW YORK 20 DALLAS 30 CHICAGO 40 BOSTON
SQL> SELECT deptno, loc 2 FROM dept;
Selecionando Colunas Específicas
![Page 8: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/8.jpg)
8
–Justificada default
•Esquerda: Dados de caractere e data
•Direita: Dados numéricos
–Exibição default: Letra maiúscula
Defaults de Cabeçalho de Coluna
![Page 9: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/9.jpg)
9
Operador
+
-
*
/
Descrição
Adicionar
Subtrair
Multiplicar
Dividir
•Criar expressões com dados NUMBER e DATE usando operadores aritméticos
Expressões Aritméticas
![Page 10: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/10.jpg)
10
SQL> SELECT ename, sal, sal+300 2 FROM emp;
ENAME SAL SAL+300---------- --------- ---------KING 5000 5300BLAKE 2850 3150CLARK 2450 2750JONES 2975 3275MARTIN 1250 1550ALLEN 1600 1900...14 rows selected.
Usando Operadores Aritméticos
![Page 11: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/11.jpg)
11
** // ++ __
–A multiplicação e a divisão têm prioridade sobre a adição e a subtração.
–Os operadores com a mesma prioridade são avaliados da esquerda para a direita.
–Os parênteses são usados para forçar a avaliação e para esclarecer as instruções.
Precedência do Operador
![Page 12: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/12.jpg)
12
SQL> SELECT ename, sal, 12*sal+100 2 FROM emp;
ENAME SAL 12*SAL+100---------- --------- ----------KING 5000 60100BLAKE 2850 34300CLARK 2450 29500JONES 2975 35800MARTIN 1250 15100ALLEN 1600 19300...14 rows selected.
Precedência do Operador
![Page 13: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/13.jpg)
13
SQL> SELECT ename, sal, 12*(sal+100) 2 FROM emp;
ENAME SAL 12*(SAL+100)---------- --------- -----------KING 5000 61200BLAKE 2850 35400CLARK 2450 30600JONES 2975 36900MARTIN 1250 16200...14 rows selected.
Usando Parênteses
![Page 14: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/14.jpg)
14
ENAME JOB SAL COMM---------- --------- --------- ---------KING PRESIDENT 5000BLAKE MANAGER 2850...TURNER SALESMAN 1500 0...14 rows selected.
SQL> SELECT ename, job, sal, comm 2 FROM emp;
–Um valor nulo não está disponível, não é atribuído, é desconhecido ou não é aplicável.
–Um valor nulo não é o mesmo que um zero ou um espaço em branco.
Definindo um Valor Nulo
![Page 15: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/15.jpg)
15
SQL> select ename, 12*sal+comm 2 from emp 3 WHERE ename='KING';
ENAME 12*SAL+COMM ---------- -----------KING
Expressões aritméticas contendo um valor nulo são avaliadas como nulo.
Valores Nulos nas Expressões Aritméticas
![Page 16: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/16.jpg)
16
–Renomeia um cabeçalho de coluna
–É útil para cálculos
–Segue imediatamente o nome da coluna
–Palavra-chave AS opcional entre o nome da coluna e o apelido
–Necessita de aspas duplas caso contenha espaços ou caracteres especiais ou faça distinção entre maiúsculas e minúsculas
Definindo um Apelido de Coluna
![Page 17: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/17.jpg)
17
SQL> SELECT ename AS name, sal salary 2 FROM emp;
NAME SALARY
------------- ---------
...
SQL> SELECT ename "Name", 2 sal*12 "Annual Salary" 3 FROM emp;
Name Annual Salary
------------- -------------
...
Usando Apelidos de Coluna
![Page 18: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/18.jpg)
18
–Concatena colunas ou strings de caractere a outras colunas
–É representado por duas barras Verticais - ||
–Cria uma coluna resultante que é uma expressão de caracteres
Operador de Concatenação
![Page 19: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/19.jpg)
19
SQL> SELECT ename||job AS "Employees" 2 FROM emp;
Employees-------------------KINGPRESIDENTBLAKEMANAGERCLARKMANAGERJONESMANAGERMARTINSALESMANALLENSALESMAN...14 rows selected.
Usando um Operador de Concatenação
![Page 20: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/20.jpg)
20
–Uma literal é um caractere, um número ou uma data incluída na lista SELECT.
–Os valores literais de caractere e data devem estar entre aspas simples.
–Cada string de caractere é gerada uma vez para cada linha retornada.
Strings Literais de Caracteres
![Page 21: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/21.jpg)
21
Employee Details-------------------------KING is a PRESIDENTBLAKE is a MANAGERCLARK is a MANAGERJONES is a MANAGERMARTIN is a SALESMAN...14 rows selected.
Employee Details-------------------------KING is a PRESIDENTBLAKE is a MANAGERCLARK is a MANAGERJONES is a MANAGERMARTIN is a SALESMAN...14 rows selected.
SQL> SELECT ename ||' is a '||job 2 AS "Employee Details" 3 FROM emp;
Usando Strings Literais de Caracteres
![Page 22: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/22.jpg)
22
SQL> SELECT deptno 2 FROM emp;
SQL> SELECT deptno 2 FROM emp;
DEPTNO--------- 10 30 10 20...14 rows selected.
•A exibição default das consultas é de todas as linhas, incluindo linhas duplicadas.
Linhas Duplicadas
![Page 23: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/23.jpg)
23
SQL> SELECT DISTINCT deptno 2 FROM emp;
DEPTNO--------- 10 20 30
Elimine linhas duplicadas usando a palavra-chave DISTINCT na cláusula Elimine linhas duplicadas usando a palavra-chave DISTINCT na cláusula SELECT.SELECT.
Eliminando Linhas Duplicadas
![Page 24: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/24.jpg)
24
DESC[RIBE] nome da tabelaDESC[RIBE] nome da tabela
Use o comando DESCRIBE do SQL*Plus para exibir a estrutura de uma tabela.
Exibindo a Estrutura de Tabela
SQL> DESCRIBE deptSQL> DESCRIBE dept
Name Null? Type----------------- -------- ------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(13)
Name Null? Type----------------- -------- ------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(13)
![Page 25: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/25.jpg)
25
Objetivos:
–Limitar linhas recuperadas por uma consulta
–Classificar linhas recuperadas por uma consulta
Restringindo e Classificando Dados
![Page 26: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/26.jpg)
26
"…recuperar todos os
funcionários do departamento 10"
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7782 CLARK MANAGER 10 7934 MILLER CLERK 10
Limitando Linhas Usando uma Seleção
![Page 27: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/27.jpg)
27
SELECT [DISTINCT] {*| coluna [apelido], ...}FROM tabela[WHERE condição(ões)];
–Restringe as linhas retornadas usando a cláusula WHERE.
–A cláusula WHERE segue a cláusula FROM.
Limitando Linhas Selecionadas
![Page 28: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/28.jpg)
28
SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE job='CLERK';
ENAME JOB DEPTNO---------- --------- ---------JAMES CLERK 30SMITH CLERK 20ADAMS CLERK 20MILLER CLERK 10
Usando a Cláusula WHERE
![Page 29: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/29.jpg)
29
SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE ename = ;
SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE ename = ;'JAMES'
–As strings de caractere e valores de data aparecem entre aspas simples.
–Os valores de caractere fazem distinção entre maiúsculas e minúsculas e os valores de data diferenciam formatos.
–O formato de data default é DD-MON-YY.
Strings de Caractere e Datas
![Page 30: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/30.jpg)
30
Operador
=
>
>=
<
<=
<>
Significado
Igual a
Maior do que
Maior do que ou igual a
Menor do que
Menor ou igual a
Diferente de
Operadores de Comparação
![Page 31: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/31.jpg)
31
SQL> SELECT ename, sal, comm 2 FROM emp 3 WHERE sal<=comm;
ENAME SAL COMM---------- --------- ---------MARTIN 1250 1400
Usando Operadores de Comparação
![Page 32: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/32.jpg)
32
Operador
BETWEEN
...AND...
IN(list)
LIKE
IS NULL
IS NOT NULL
Significado
Entre dois valores (inclusive)
Vincula qualquer um de uma
lista de valores
Vincula um padrão de caractere
É um valor nulo
Não é um valor nulo
Outros Operadores de Comparação
![Page 33: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/33.jpg)
33
ENAME SAL---------- ---------MARTIN 1250TURNER 1500WARD 1250ADAMS 1100MILLER 1300
SQL> SELECT ename, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500;
Limiteinferior
Limitesuperior
Use o operador BETWEEN para exibir linhas baseadas em uma faixa de valores.
Usando o Operador BETWEEN
![Page 34: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/34.jpg)
34
SQL> SELECT empno, ename, sal, mgr 2 FROM emp 3 WHERE mgr IN (7902, 7566, 7788);
EMPNO ENAME SAL MGR--------- ---------- --------- --------- 7902 FORD 3000 7566 7369 SMITH 800 7902 7788 SCOTT 3000 7566 7876 ADAMS 1100 7788
Use o operador IN para testar os valores de uma lista.
Usando o Operador IN
![Page 35: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/35.jpg)
35
SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE 'S%';
•Use o operador LIKE para executar pesquisas curinga de valores de string de pesquisa válidos.
•As condições de pesquisa podem conter caracteres literais ou números.
–% denota zero ou muitos caracteres.
– _ denota um caractere.
Usando o Operador LIKE
![Page 36: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/36.jpg)
36
SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE '_A%';
ENAME---------- MARTINJAMES WARD
–Você pode combinar caracteres de vinculação de padrão.
É possível usar o identificador ESCAPE para procurar por "%" ou "_".
Usando o Operador LIKE
![Page 37: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/37.jpg)
37
SQL> SELECT ename, mgr 2 FROM emp 3 WHERE mgr IS NULL;
ENAME MGR---------- ---------KING
Teste para valores nulos com o operador IS NULL.
Usando o Operador IS NULL
![Page 38: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/38.jpg)
38
Operador
AND
OR
NOT
Significado
Retorna TRUE se as condições de
componentes forem TRUE
Retorna TRUE se uma condição de
componente for TRUE
Retorna TRUE se a condição seguinte for FALSE
Operadores Lógicos
![Page 39: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/39.jpg)
39
AND exige que ambas as condições sejam TRUE.AND exige que ambas as condições sejam TRUE.
SQL> SELECT empno, ename, job, sal 2 FROM emp 3 WHERE sal>=1100 4 AND job='CLERK';
EMPNO ENAME JOB SAL--------- ---------- --------- --------- 7876 ADAMS CLERK 1100 7934 MILLER CLERK 1300
Usando o Operador AND
![Page 40: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/40.jpg)
40
SQL> SELECT empno, ename, job, sal 2 FROM emp 3 WHERE sal>=1100 4 OR job='CLERK';
EMPNO ENAME JOB SAL--------- ---------- --------- --------- 7839 KING PRESIDENT 5000 7698 BLAKE MANAGER 2850 7782 CLARK MANAGER 2450 7566 JONES MANAGER 2975 7654 MARTIN SALESMAN 1250 ... 7900 JAMES CLERK 950 ...14 rows selected.
OR exige que uma condição seja TRUE.OR exige que uma condição seja TRUE.
Usando o Operador OR
![Page 41: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/41.jpg)
41
SQL> SELECT ename, job 2 FROM emp 3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME JOB---------- ---------KING PRESIDENTMARTIN SALESMANALLEN SALESMANTURNER SALESMANWARD SALESMAN
Usando o Operador NOT
![Page 42: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/42.jpg)
42
Ordem de Avaliação Operador
1 Todos os operadores de comparação
2 NOT
3 AND
4 OR
Sobreponha regras de precedência usando parênteses.
Regras de Precedência
![Page 43: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/43.jpg)
43
ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000MARTIN SALESMAN 1250ALLEN SALESMAN 1600TURNER SALESMAN 1500WARD SALESMAN 1250
ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000MARTIN SALESMAN 1250ALLEN SALESMAN 1600TURNER SALESMAN 1500WARD SALESMAN 1250
SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE job='SALESMAN' 4 OR job='PRESIDENT' 5 AND sal>1500;
Regras de Precedência
![Page 44: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/44.jpg)
44
ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000ALLEN SALESMAN 1600
ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000ALLEN SALESMAN 1600
SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE (job='SALESMAN' 4 OR job='PRESIDENT') 5 AND sal>1500;
Use parênteses para forçar a prioridade.Use parênteses para forçar a prioridade.
Regras de Precedência
![Page 45: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/45.jpg)
45
SQL> SELECT ename, job, deptno, hiredate 2 FROM emp 3 ORDER BY hiredate;
ENAME JOB DEPTNO HIREDATE---------- --------- --------- ---------SMITH CLERK 20 17-DEC-80ALLEN SALESMAN 30 20-FEB-81...14 rows selected.
–Classificar as linhas com a cláusula ORDER BY
•ASC: ordem crescente, default
•DESC: ordem decrescente
–A cláusula ORDER BY vem depois na instrução SELECT.
Cláusula ORDER BY
![Page 46: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/46.jpg)
46
SQL> SELECT ename, job, deptno, hiredate 2 FROM emp 3 ORDER BY hiredate DESC;
ENAME JOB DEPTNO HIREDATE---------- --------- --------- ---------ADAMS CLERK 20 12-JAN-83SCOTT ANALYST 20 09-DEC-82MILLER CLERK 10 23-JAN-82JAMES CLERK 30 03-DEC-81FORD ANALYST 20 03-DEC-81KING PRESIDENT 10 17-NOV-81MARTIN SALESMAN 30 28-SEP-81...14 rows selected.
Classificando em Ordem Decrescente
![Page 47: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/47.jpg)
47
SQL> SELECT empno, ename, sal*12 annsal 2 FROM emp 3 ORDER BY annsal;
EMPNO ENAME ANNSAL--------- ---------- --------- 7369 SMITH 9600 7900 JAMES 11400 7876 ADAMS 13200 7654 MARTIN 15000 7521 WARD 15000 7934 MILLER 15600 7844 TURNER 18000...14 rows selected.
Classificando por Apelido de Coluna
![Page 48: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/48.jpg)
48
SQL> SELECT ename, deptno, sal 2 FROM emp 3 ORDER BY deptno, sal DESC;
ENAME DEPTNO SAL---------- --------- ---------KING 10 5000CLARK 10 2450MILLER 10 1300FORD 20 3000...14 rows selected.
Você pode classificar por uma coluna que não esteja na lista SELECT.
A ordem da lista ORDER BY é a ordem de classificação.
Classificando por Várias Colunas
![Page 49: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/49.jpg)
49
SELECT [DISTINCT] {*| coluna [apelido], ...}FROM tabela[WHERE condição(ões)][ORDER BY {coluna, expr, apelido} [ASC|DESC]];
Sumário
![Page 50: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/50.jpg)
50
Objetivos:
–Descrever vários tipos de funções disponíveis no SQL
–Usar funções de data, número e caractere nas instruções SELECT
–Descrever o uso das funções de conversão
Funções de Uma Única Linha
![Page 51: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/51.jpg)
51
FunçãoFunçãoEntradaEntrada
arg 1arg 1
arg 2arg 2
arg arg nn
A função executa A função executa a açãoa ação
SaídaSaída
ResultadoResultadovalorvalor
Funções SQL
![Page 52: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/52.jpg)
52
FunçõesFunções
Funções deFunções deVárias LinhasVárias Linhas
Funções deFunções deUma Única LinhaUma Única Linha
Dois Tipos de Funções SQL
![Page 53: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/53.jpg)
53
function_name (coluna|expressão, [arg1, arg2,...])function_name (coluna|expressão, [arg1, arg2,...])
–Manipulam itens de dados
–Aceitam argumentos e retornam um valor
–Agem em cada linha retornada
–Retornam um resultado por linha
–Podem modificar o tipo de dados
–Podem ser aninhadas
Funções de Uma Única Linha
![Page 54: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/54.jpg)
54
ConversãoConversão
CaractereCaractere
NúmeroNúmero
DataData
GeralGeralFunções deFunções de
Uma Única LinhaUma Única Linha
Funções de Uma Única Linha
![Page 55: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/55.jpg)
55
Funções de Funções de caracterecaractere
LOWERLOWER
UPPERUPPER
INITCAPINITCAP
CONCATCONCAT
SUBSTRSUBSTR
LENGTHLENGTH
INSTRINSTR
LPADLPAD
TRIMTRIM
Funções de Conversão deFunções de Conversão deMaiúsculas e MinúsculasMaiúsculas e Minúsculas
Funções de manipulaçãoFunções de manipulaçãode caracterede caractere
Funções de Caractere
![Page 56: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/56.jpg)
56
Objetivos:
–Criar instruções SELECT para obter acesso aos dados a partir de mais de uma tabela usando as junções idênticas e não-idênticas
–Visualizar dados que, em geral, não correspondem a uma condição de junção usando junções externas
–Unindo uma tabela a ela mesma
Exibindo Dados de Várias Tabelas
![Page 57: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/57.jpg)
57
EMPNO DEPTNO LOC----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO...14 rows selected.
EMPNO DEPTNO LOC----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO...14 rows selected.
EMPEMP DEPTDEPT
EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
Obtendo Dados de Várias Tabelas
![Page 58: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/58.jpg)
58
SELECT tabela1.coluna, tabela2.colunaFROM tabela1, tabela2WHERE tabela1.coluna1 = tabela2.coluna2;
SELECT tabela1.coluna, tabela2.colunaFROM tabela1, tabela2WHERE tabela1.coluna1 = tabela2.coluna2;
•Use uma junção para consultar dados a partir de uma ou mais tabelas.
–Criar uma condição de junção na cláusula WHERE.
–Prefixar o nome da coluna com o nome da tabela quando o mesmo nome da coluna aparecer em mais de uma tabela.
O Que É uma Junção?
![Page 59: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/59.jpg)
59
–Um produto cartesiano é formado quando:
•Uma condição de junção estiver omitida
•Uma condição de junção estiver inválida
•Todas as linhas na primeira tabela estão unidas a todas as linhas da segunda tabela
–Para evitar um produto Cartesiano, sempre inclua uma condição de junção válida em uma cláusula WHERE.
Produto Cartesiano
![Page 60: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/60.jpg)
60
ENAME DNAME------ ----------KING ACCOUNTINGBLAKE ACCOUNTING ...KING RESEARCHBLAKE RESEARCH...56 rows selected.
ENAME DNAME------ ----------KING ACCOUNTINGBLAKE ACCOUNTING ...KING RESEARCHBLAKE RESEARCH...56 rows selected.
EMP (14 linhas) EMP (14 linhas) DEPT (4 linhas) DEPT (4 linhas)
EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10
EMPNO ENAME ... DEPTNO------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
"Produto "Produto Cartesiano: Cartesiano:
14*4=56 linhas"14*4=56 linhas"
Gerando Produto Cartesiano
![Page 61: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/61.jpg)
61
Junção
idêntica
Junção
não-idêntica
Junção
externa Autojunção
Tipos de Junções
![Page 62: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/62.jpg)
62
EMPEMP DEPTDEPT EMPNO ENAME DEPTNO------ ------- ------- 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20...14 rows selected.
DEPTNO DNAME LOC ------- ---------- -------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS...14 rows selected.
Chave estrangeiraChave estrangeira Chave primáriaChave primária
O Que É uma Junção Idêntica?
![Page 63: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/63.jpg)
63
SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;
EMPNO ENAME DEPTNO DEPTNO LOC----- ------ ------ ------ --------- 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS...14 rows selected.
Recuperando Registros com Junções Idênticas
![Page 64: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/64.jpg)
64
–Use os prefixos de tabela para qualificar nomes de coluna que estão em várias tabelas.
–Melhore o desempenho usando os prefixos de tabela.
–Diferencie colunas que possuem nomes idênticos, mas que residam em tabelas diferentes usando apelidos de coluna.
Qualificando Nomes de Coluna Ambíguos
![Page 65: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/65.jpg)
65
EMP DEPT
EMPNO ENAME DEPTNO------ ------- ------- 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20...14 rows selected.
DEPTNO DNAME LOC ------ --------- -------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS...14 rows selected.
Condições de Pesquisa Adicional Usando o Operador AND
![Page 66: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/66.jpg)
66
SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
SQL> SELECT e.empno, e.ename, e.deptno,
2 d.deptno, d.loc
3 FROM emp e, dept d
4 WHERE e.deptno= d.deptno;
Simplifique consultas usando apelidos de tabela.
Usando Apelidos de Tabela
![Page 67: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/67.jpg)
67
SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
SQL> SELECT e.empno, e.ename, e.deptno,
2 d.deptno, d.loc
3 FROM emp e, dept d
4 WHERE e.deptno= d.deptno;
Simplifique consultas usando apelidos de tabela.
Usando Apelidos de Tabela
![Page 68: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/68.jpg)
68
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
CUSTOMERCUSTOMER
Unindo Mais de Duas Tabelas
![Page 69: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/69.jpg)
69
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
CUSTOMERCUSTOMER
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
ORDORD
Unindo Mais de Duas Tabelas
![Page 70: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/70.jpg)
70
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
CUSTOMERCUSTOMER
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
ORDORD
Unindo Mais de Duas Tabelas
![Page 71: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/71.jpg)
71
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
CUSTOMERCUSTOMER
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
ORDORD
ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.
ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.
ITEMITEM
Unindo Mais de Duas Tabelas
![Page 72: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/72.jpg)
72
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
NAME CUSTID----------- ------JOCKSPORTS 100TKB SPORT SHOP 101VOLLYRITE 102JUST TENNIS 103K+T SPORTS 105SHAPE UP 106WOMENS SPORTS 107... ...9 rows selected.
CUSTOMERCUSTOMER
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
CUSTID ORDID------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605... 21 rows selected.
ORDORD
ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.
ORDID ITEMID------ ------- 610 3 611 1 612 1 601 1 602 1...64 rows selected.
ITEMITEM
Unindo Mais de Duas Tabelas
![Page 73: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/73.jpg)
73
EMP SALGRADE
EMPNO ENAME SAL------ ------- ------ 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950...14 rows selected.
GRADE LOSAL HISAL----- ----- ------1 700 12002 1201 14003 1401 20004 2001 30005 3001 9999
Junções Não-idênticas
![Page 74: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/74.jpg)
74
EMP SALGRADE
"o salário na tabela EMP está entre salário inferior e salário superior natabela SALGRADE"
EMPNO ENAME SAL------ ------- ------ 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950...14 rows selected.
GRADE LOSAL HISAL----- ----- ------1 700 12002 1201 14003 1401 20004 2001 30005 3001 9999
Junções Não-idênticas
![Page 75: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/75.jpg)
75
ENAME SAL GRADE---------- --------- ---------JAMES 950 1SMITH 800 1ADAMS 1100 1...14 rows selected.
SQL> SELECT e.ename, e.sal, s.grade
2 FROM emp e, salgrade s
3 WHERE e.sal
4 BETWEEN s.losal AND s.hisal;
Recuperando Registros com Junções Não-idênticas
![Page 76: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/76.jpg)
76
ENAME SAL GRADE---------- --------- ---------JAMES 950 1SMITH 800 1ADAMS 1100 1...14 rows selected.
SQL> SELECT e.ename, e.sal, s.grade
2 FROM emp e, salgrade s
3 WHERE e.sal
4 BETWEEN s.losal AND s.hisal;
Recuperando Registros com Junções Não-idênticas
![Page 77: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/77.jpg)
77
EMPEMP DEPTDEPT ENAME DEPTNO----- ------KING 10BLAKE 30CLARK 10JONES 20...
DEPTNO DNAME------ ----------10 ACCOUNTING30 SALES10 ACCOUNTING20 RESEARCH...40 OPERATIONS
Junções Externas
![Page 78: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/78.jpg)
78
EMPEMP DEPTDEPT ENAME DEPTNO----- ------KING 10BLAKE 30CLARK 10JONES 20...
DEPTNO DNAME------ ----------10 ACCOUNTING30 SALES10 ACCOUNTING20 RESEARCH...40 OPERATIONS
Junções Externas
![Page 79: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/79.jpg)
79
EMPEMP DEPTDEPT
Nenhum funcionário do Nenhum funcionário do departamento OPERATIONSdepartamento OPERATIONS
ENAME DEPTNO----- ------KING 10BLAKE 30CLARK 10JONES 20...
DEPTNO DNAME------ ----------10 ACCOUNTING30 SALES10 ACCOUNTING20 RESEARCH...40 OPERATIONS
Junções Externas
![Page 80: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/80.jpg)
80
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna(+) = tabela2.coluna;
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna(+) = tabela2.coluna;
Use uma junção externa para consultar também todas as linhas que em geral não atendem à condição de junção.
O operador de junção externo é um sinal de adição (+).
Junções Externas
![Page 81: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/81.jpg)
81
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna(+) = tabela2.coluna;
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna(+) = tabela2.coluna;
SELECT tabela1.coluna , tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna = tabela2.coluna(+);
SELECT tabela1.coluna , tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna = tabela2.coluna(+);
Use uma junção externa para consultar também todas as linhas que em geral não atendem à condição de junção.
O operador de junção externo é um sinal de adição (+).
Junções Externas
![Page 82: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/82.jpg)
82
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno;
ENAME DEPTNO DNAME---------- --------- -------------KING 10 ACCOUNTINGCLARK 10 ACCOUNTING... 40 OPERATIONS15 rows selected.
Usando Junções Externas
![Page 83: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/83.jpg)
83
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno;
ENAME DEPTNO DNAME---------- --------- -------------KING 10 ACCOUNTINGCLARK 10 ACCOUNTING... 40 OPERATIONS15 rows selected.
Usando Junções Externas
![Page 84: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/84.jpg)
84
EMP (WORKER) EMP (MANAGER)
EMPNO ENAME MGR----- ------ ---- 7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698
EMPNO ENAME----- --------
7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE
Autojunções
![Page 85: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/85.jpg)
85
EMP (WORKER) EMP (MANAGER)
"MGR na tabela WORKER é igual a EMPNO na tabela MANAGER"
EMPNO ENAME MGR----- ------ ---- 7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698
EMPNO ENAME----- --------
7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE
Autojunções
![Page 86: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/86.jpg)
86
WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.
WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.
SQL> SELECT worker.ename||' works for '||manager.ename
2 FROM emp worker, emp manager
3 WHERE worker.mgr = manager.empno;
Unindo uma Tabela a Ela Mesma
![Page 87: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/87.jpg)
87
WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.
WORKER.ENAME||'WORKSFOR'||MANAG-------------------------------BLAKE works for KINGCLARK works for KINGJONES works for KINGMARTIN works for BLAKE...13 rows selected.
SQL> SELECT worker.ename||' works for '||manager.ename
2 FROM emp worker, emp manager
3 WHERE worker.mgr = manager.empno;
Unindo uma Tabela a Ela Mesma
![Page 88: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/88.jpg)
88
SELECT tabela1.coluna, tabela2.colunaFROM tabela1, tabela2WHERE tabela1.coluna1 = tabela2.coluna2;
SELECT tabela1.coluna, tabela2.colunaFROM tabela1, tabela2WHERE tabela1.coluna1 = tabela2.coluna2;
Junção
idêntica
Junção
não-idêntica
Junção
externa Autojunção
Sumário
![Page 89: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/89.jpg)
89
SQL: Lista de Exercício
1. Escreva uma query para mostrar o nome do empregado, número e nome do departamento para todos os empregados
2. Crie uma única lista de todos os cargos que estão no departamento 30.
3. Escreva uma query para mostrar o nome do empregado, nome e localização do departamento de todos os empregados que ganham comissão
4. Mostre o nome do empregado e nome do departamento para todo os empregado que tenha um A em seu nome. Salve em p4q4.sql.
5. Escreva uma query para mostrar o nome, cargo, número e nome do departamento de todos os empregados que trabalham em DALLAS
6. Mostre o nome e número do empregado com o seu respectivo gerente, nome e número. Nomeie as colunas como Employee, emp#, Manager, and Mgr#, respectivamente. Salve em p4q6.sql
7. Modifique p4q6.sql para mostrar todos os empregados, incluindo King, que não tem gerente. Salve em p4q7.sql. Execute.
![Page 90: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/90.jpg)
90
SQL: Lista de Exercício
8. Crie uma query que mostre o nome do empregado, número do departamento e todos os empregados que trabalham no mesmo departamento. Nomeie cada coluna apropriadamente.
9. Mostre a estrutura da tabela SALGRADE. Crie uma query que mostre o nome, cargo, nome do departamento, salário e a faixa salarial de todos os empregados.
10. Crie uma query para mostrar o nome e data de contratação de todos empregados contratado após o Blake.
11. Mostre todos os nomes dos empregados com suas datas de contratações, nome dos gerentes e datas de contratações dos empregados que foram contratados antes dos seus gerentes. Nomeie as colunas como Employee, Emp Hiredate, Manager, and Mgr Hiredate, respectivamente.
12. Crie uma query que mostre o nome do empregado e salário como um montante de asteriscos. Cada asterisco significa centenas de dólares. Ordene os dados em ordem descendente de salário. Nomeie a coluna como EMPLOYEE_AND_THEIR_SALARIES.
![Page 91: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/91.jpg)
91
Objetivos:
–Identificar as funções de grupo disponíveis
–Descrever o uso de funções de grupo
–Agrupar dados usando a cláusula GROUP BY
–Incluir ou excluir linhas agrupadas usando a cláusula HAVING
Agregando Dados Usando Funções de Grupo
![Page 92: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/92.jpg)
92
EMPEMP
"salário"saláriomáximo namáximo na
tabela EMP"tabela EMP"
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
MAX(SAL)
---------
5000
As funções de grupo operam em conjuntos de linhas para fornecer um resultado por grupo.
O Que São Funções de Grupo?
![Page 93: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/93.jpg)
93
EMPEMP
"salário"saláriomáximo namáximo na
tabela EMP"tabela EMP"
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
MAX(SAL)
---------
5000
As funções de grupo operam em conjuntos de linhas para fornecer um resultado por grupo.
O Que São Funções de Grupo?
![Page 94: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/94.jpg)
94
–AVG
–COUNT
–MAX
–MIN
–STDDEV
–SUM
–VARIANCE
Tipos de Funções de Grupo
![Page 95: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/95.jpg)
95
SELECT [coluna,] group_function(coluna)FROM tabela[WHERE condição][GROUP BY coluna][ORDER BY coluna];
Usando Funções de Grupo
![Page 96: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/96.jpg)
96
SELECT [coluna,] group_function(coluna)FROM tabela[WHERE condição][GROUP BY coluna][ORDER BY coluna];
Usando Funções de Grupo
![Page 97: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/97.jpg)
97
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)-------- --------- --------- --------- 1400 1600 1250 5600
SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%';
Você pode usar AVG e SUM para dados numéricos.
Usando Funções AVG e SUM
![Page 98: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/98.jpg)
98
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)-------- --------- --------- --------- 1400 1600 1250 5600
SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%';
Você pode usar AVG e SUM para dados numéricos.
Usando Funções AVG e SUM
![Page 99: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/99.jpg)
99
SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM emp;
MIN(HIRED MAX(HIRED--------- ---------17-DEC-80 12-JAN-83
Você pode usar MIN e MAX para qualquer tipo de dados.
Usando Funções MIN e MAX
![Page 100: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/100.jpg)
100
SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM emp;
MIN(HIRED MAX(HIRED--------- ---------17-DEC-80 12-JAN-83
Você pode usar MIN e MAX para qualquer tipo de dados.
Usando Funções MIN e MAX
![Page 101: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/101.jpg)
101
COUNT(*)--------- 6
SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE deptno = 30;
COUNT(*) retorna o número de linhas em uma tabela.
Usando a Função COUNT
![Page 102: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/102.jpg)
102
COUNT(*)--------- 6
SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE deptno = 30;
COUNT(*) retorna o número de linhas em uma tabela.
Usando a Função COUNT
![Page 103: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/103.jpg)
103
SQL> SELECT COUNT(comm) 2 FROM emp 3 WHERE deptno = 30;
COUNT(COMM)----------- 4
COUNT(expr) retorna o número de linhas não nulas.
Usando a Função COUNT
![Page 104: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/104.jpg)
104
SQL> SELECT COUNT(comm) 2 FROM emp 3 WHERE deptno = 30;
COUNT(COMM)----------- 4
COUNT(expr) retorna o número de linhas não nulas.
Usando a Função COUNT
![Page 105: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/105.jpg)
105
SQL> SELECT AVG(comm) 2 FROM emp;
AVG(COMM)--------- 550
As funções de grupo ignoram valores nulos na coluna.
Funções de Grupo e Valores Nulos
![Page 106: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/106.jpg)
106
SQL> SELECT AVG(comm) 2 FROM emp;
AVG(COMM)--------- 550
As funções de grupo ignoram valores nulos na coluna.
Funções de Grupo e Valores Nulos
![Page 107: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/107.jpg)
107
SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp;
AVG(NVL(COMM,0))---------------- 157.14286
A função NVL força as funções de grupo a incluírem valores nulos.
Usando a Função NVL com Funções de Grupo
![Page 108: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/108.jpg)
108
SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp;
AVG(NVL(COMM,0))---------------- 157.14286
A função NVL força as funções de grupo a incluírem valores nulos.
Usando a Função NVL com Funções de Grupo
![Page 109: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/109.jpg)
109
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 110: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/110.jpg)
110
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 111: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/111.jpg)
111
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 112: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/112.jpg)
112
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 113: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/113.jpg)
113
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 114: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/114.jpg)
114
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
21752175
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 115: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/115.jpg)
115
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
21752175
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 116: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/116.jpg)
116
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
21752175
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 117: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/117.jpg)
117
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
21752175
1566.66671566.6667
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 118: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/118.jpg)
118
EMPEMP
"salário"saláriomédiomédio
na tabela na tabela EMP EMP
para cada para cada departamento"departamento"
2916.66672916.6667
21752175
1566.66671566.6667
DEPTNO SAL--------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
Criando Grupos de Dados
![Page 119: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/119.jpg)
119
SELECT coluna, group_function(coluna)FROM tabela[WHERE condição][GROUP BY group_by_expression][ORDER BY coluna];
Divida linhas de uma tabela em grupos menores usando a cláusula GROUP BY.
Criando Grupos de Dados: Cláusula GROUP BY
![Page 120: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/120.jpg)
120
SELECT coluna, group_function(coluna)FROM tabela[WHERE condição][GROUP BY group_by_expression][ORDER BY coluna];
Divida linhas de uma tabela em grupos menores usando a cláusula GROUP BY.
Criando Grupos de Dados: Cláusula GROUP BY
![Page 121: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/121.jpg)
121
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno;
DEPTNO AVG(SAL)--------- --------- 10 2916.6667 20 2175 30 1566.6667
Todas as colunas na lista SELECT que não estejam em funções de grupo devem estar na cláusula GROUP BY
Usando a Cláusula GROUP BY
![Page 122: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/122.jpg)
122
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno;
DEPTNO AVG(SAL)--------- --------- 10 2916.6667 20 2175 30 1566.6667
Todas as colunas na lista SELECT que não estejam em funções de grupo devem estar na cláusula GROUP BY
Usando a Cláusula GROUP BY
![Page 123: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/123.jpg)
123
SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno;
AVG(SAL)--------- 2916.6667 21751566.6667
A coluna GROUP BY não precisa estar na lista SELECT
Usando a Cláusula GROUP BY
![Page 124: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/124.jpg)
124
SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno;
AVG(SAL)--------- 2916.6667 21751566.6667
A coluna GROUP BY não precisa estar na lista SELECT
Usando a Cláusula GROUP BY
![Page 125: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/125.jpg)
125
EMPEMP
"soma de"soma desalários nasalários natabela EMPtabela EMPpara cadapara cada
cargo,cargo,agrupados por agrupados por departamento"departamento"
DEPTNO JOB SAL
--------- --------- ---------
10 MANAGER 2450
10 PRESIDENT 5000
10 CLERK 1300
20 CLERK 800
20 CLERK 1100
20 ANALYST 3000
20 ANALYST 3000
20 MANAGER 2975
30 SALESMAN 1600
30 MANAGER 2850
30 SALESMAN 1250
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250
JOB SUM(SAL)
--------- ---------
CLERK 1300
MANAGER 2450
PRESIDENT 5000
ANALYST 6000
CLERK 1900
MANAGER 2975
CLERK 950
MANAGER 2850
SALESMAN 5600
DEPTNO
--------
10
10
10
20
20
20
30
30
30
Agrupando por Mais de Uma Coluna
![Page 126: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/126.jpg)
126
EMPEMP
"soma de"soma desalários nasalários natabela EMPtabela EMPpara cadapara cada
cargo,cargo,agrupados por agrupados por departamento"departamento"
DEPTNO JOB SAL
--------- --------- ---------
10 MANAGER 2450
10 PRESIDENT 5000
10 CLERK 1300
20 CLERK 800
20 CLERK 1100
20 ANALYST 3000
20 ANALYST 3000
20 MANAGER 2975
30 SALESMAN 1600
30 MANAGER 2850
30 SALESMAN 1250
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250
JOB SUM(SAL)
--------- ---------
CLERK 1300
MANAGER 2450
PRESIDENT 5000
ANALYST 6000
CLERK 1900
MANAGER 2975
CLERK 950
MANAGER 2850
SALESMAN 5600
DEPTNO
--------
10
10
10
20
20
20
30
30
30
Agrupando por Mais de Uma Coluna
![Page 127: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/127.jpg)
127
SQL> SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job;
DEPTNO JOB SUM(SAL)--------- --------- --------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900...9 rows selected.
Usando a Cláusula GROUP BY em Várias Colunas
![Page 128: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/128.jpg)
128
SQL> SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job;
DEPTNO JOB SUM(SAL)--------- --------- --------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900...9 rows selected.
Usando a Cláusula GROUP BY em Várias Colunas
![Page 129: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/129.jpg)
129
SQL> SELECT deptno, COUNT(ename) 2 FROM emp;
SQL> SELECT deptno, COUNT(ename) 2 FROM emp;
SELECT deptno, COUNT(ename) *ERROR at line 1:ORA-00937: Nenhuma função de grupo de grupo único (Not a single-group group function)
SELECT deptno, COUNT(ename) *ERROR at line 1:ORA-00937: Nenhuma função de grupo de grupo único (Not a single-group group function)
• Qualquer coluna ou expressão na lista SELECT que não seja uma função agregada deve estar na cláusula GROUP BY.
Consultas Ilegais Usando Funções de Grupo
![Page 130: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/130.jpg)
130
SQL> SELECT deptno, COUNT(ename) 2 FROM emp;
SQL> SELECT deptno, COUNT(ename) 2 FROM emp;
SELECT deptno, COUNT(ename) *ERROR at line 1:ORA-00937: Nenhuma função de grupo de grupo único (Not a single-group group function)
SELECT deptno, COUNT(ename) *ERROR at line 1:ORA-00937: Nenhuma função de grupo de grupo único (Not a single-group group function)
ColunaColuna ausenteausente nana cláusulacláusula GROUP BYGROUP BY
• Qualquer coluna ou expressão na lista SELECT que não seja uma função agregada deve estar na cláusula GROUP BY.
Consultas Ilegais Usando Funções de Grupo
![Page 131: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/131.jpg)
131
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno;
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno;
WHERE AVG(sal) > 2000 *ERROR at line 3:ORA-00934: A função de grupo não é permitida aqui (Group function is not allowed here)
WHERE AVG(sal) > 2000 *ERROR at line 3:ORA-00934: A função de grupo não é permitida aqui (Group function is not allowed here)
–Não é possível usar a cláusula WHERE para restringir grupos.
–Use a cláusula HAVING para restringir grupos.
Consultas Ilegais Usando Funções de Grupo
![Page 132: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/132.jpg)
132
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno;
SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno;
WHERE AVG(sal) > 2000 *ERROR at line 3:ORA-00934: A função de grupo não é permitida aqui (Group function is not allowed here)
WHERE AVG(sal) > 2000 *ERROR at line 3:ORA-00934: A função de grupo não é permitida aqui (Group function is not allowed here)
NãoNão é possível usar a cláusula
é possível usar a cláusula
WHERE para restringir g
rupos
WHERE para restringir g
rupos
–Não é possível usar a cláusula WHERE para restringir grupos.
–Use a cláusula HAVING para restringir grupos.
Consultas Ilegais Usando Funções de Grupo
![Page 133: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/133.jpg)
133
"salário"saláriomáximo pormáximo por
departamentodepartamentomaior do quemaior do queUS$ 2.900"US$ 2.900"
EMPEMP DEPTNO SAL
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100
20 3000
20 3000
20 2975
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
Excluindo Resultados do Grupo
![Page 134: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/134.jpg)
134
"salário"saláriomáximo pormáximo por
departamentodepartamentomaior do quemaior do queUS$ 2.900"US$ 2.900"
EMPEMP DEPTNO SAL
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100
20 3000
20 3000
20 2975
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
50005000
30003000
28502850
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
Excluindo Resultados do Grupo
![Page 135: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/135.jpg)
135
SELECT coluna, group_functionFROM tabela[WHERE condição][GROUP BY group_by_expression][HAVING group_condition][ORDER BY coluna];
• Use a cláusula HAVING para restringir grupos
–As linhas são agrupadas.
–A função de grupo é aplicada.
–Os grupos que correspondem à cláusula HAVING são exibidos.
Excluindo Resultados do Grupo: Cláusula HAVING
![Page 136: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/136.jpg)
136
SELECT coluna, group_functionFROM tabela[WHERE condição][GROUP BY group_by_expression][HAVING group_condition][ORDER BY coluna];
• Use a cláusula HAVING para restringir grupos
–As linhas são agrupadas.
–A função de grupo é aplicada.
–Os grupos que correspondem à cláusula HAVING são exibidos.
Excluindo Resultados do Grupo: Cláusula HAVING
![Page 137: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/137.jpg)
137
SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900;
DEPTNO MAX(SAL)--------- --------- 10 5000 20 3000
Usando a Cláusula HAVING
![Page 138: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/138.jpg)
138
SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900;
DEPTNO MAX(SAL)--------- --------- 10 5000 20 3000
Usando a Cláusula HAVING
![Page 139: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/139.jpg)
139
SQL> SELECT job, SUM(sal) PAYROLL 2 FROM emp 3 WHERE job NOT LIKE 'SALES%' 4 GROUP BY job 6 ORDER BY SUM(sal);
JOB PAYROLL--------- ---------ANALYST 6000MANAGER 8275
5 HAVING SUM(sal)>5000
Usando a Cláusula HAVING
![Page 140: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/140.jpg)
140
SQL> SELECT job, SUM(sal) PAYROLL 2 FROM emp 3 WHERE job NOT LIKE 'SALES%' 4 GROUP BY job 6 ORDER BY SUM(sal);
JOB PAYROLL--------- ---------ANALYST 6000MANAGER 8275
5 HAVING SUM(sal)>5000
Usando a Cláusula HAVING
![Page 141: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/141.jpg)
141
SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno;
MAX(AVG(SAL))------------- 2916.6667
Exiba o salário médio máximo
Aninhando Funções de Grupo
![Page 142: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/142.jpg)
142
SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno;
MAX(AVG(SAL))------------- 2916.6667
Exiba o salário médio máximo
Aninhando Funções de Grupo
![Page 143: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/143.jpg)
143
SELECT coluna, group_function(coluna)FROM tabela[WHERE condição][GROUP BY group_by_expression][HAVING group_condition][ORDER BY coluna];
•Ordem de avaliação das cláusulas:
–cláusula WHERE
–cláusula GROUP BY
–cláusula HAVING
Sumário
![Page 144: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/144.jpg)
144
SELECT coluna, group_function(coluna)FROM tabela[WHERE condição][GROUP BY group_by_expression][HAVING group_condition][ORDER BY coluna];
•Ordem de avaliação das cláusulas:
–cláusula WHERE
–cláusula GROUP BY
–cláusula HAVING
Sumário
![Page 145: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/145.jpg)
145
SQL: Lista de Exercício
Determine se verdadeiro(V) ou falso(F) as seguintes declarações:
1. Funções de grupo trabalham em muitas linhas para produzir um resultado.
2. Funções de grupo usam nulls nos seus cálculos.
3. A cláusula WHERE restringe linhas antes de incluí-las em cálculos de funções de grupos.
4. Mostre o maior, o menor, a soma e a média dos salários de todos os empregados. Nomeie as colunas como Maximum, Minimum, Sum, and Average, respectivamente. Arredonde os resultados para inteiro. Salve em p5q4.sql.
5. Modifique p5q4.sql para mostrar o menor, o maior, a soma e a média dos salários para cada tipo de cargo. Salve em p5q5.sql.
6. Escreva uma query para mostrar o número de empregados com o mesmo cargo.
7. Determine o número de gerentes sem listá-los. Nomeie a coluna como Number of Managers.
![Page 146: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/146.jpg)
146
SQL: Lista de Exercício
Determine se verdadeiro(V) ou falso(F) as seguintes declarações:
8. Escreva uma query que mostre a diferença entre o maior e menor salário. Nomeie a coluna como DIFFERENCE.
9. Mostre o número do gerente e o salário mais baixo pago aos funcionários daquele gerente. Exclua o empregado que não possua gerente. Exclua qualquer grupo where o menor salário seja menor que $1000. Ordene por salário (descendente).
10. Escreva uma query para mostrar o nome do departamento, nome da localização, número de empregados, e média de salário para todos os empregados daquele departamento. Nomeie as colunas como dname, loc, Number of People, and Salary, respectivamente.
11. Crie uma query que mostre o número total de empregados e daquele total, o número que foram contratados em 1980, 1981, 1982, e 1983. Nomeie as colunas de forma apropriada.
![Page 147: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/147.jpg)
147
Objetivos:
–Descrever os tipos de problemas que as subconsultas podem resolver
–Definir as subconsultas
–Listar os tipos de subconsultas
–Criar subconsultas de uma única linha e de várias linhas
Subconsultas
![Page 148: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/148.jpg)
148
"Que funcionários têm um salário maior que o salário de Jones?"
Consulta principal
??
"Qual é o salário de Jones?" ??
Subconsulta
"Quem tem um salário maior que o de Jones?"
Usando uma Subconsulta para Resolver um Problema
![Page 149: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/149.jpg)
149
"Que funcionários têm um salário maior que o salário de Jones?"
Consulta principal
??
"Qual é o salário de Jones?" ??
Subconsulta
"Quem tem um salário maior que o de Jones?"
Usando uma Subconsulta para Resolver um Problema
![Page 150: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/150.jpg)
150
SELECT select_listFROM tabelaWHERE operador expr
(SELECT select_list FROM tabela);
–A subconsulta (consulta interna) é executada uma vez antes da consulta principal.
–O resultado da subconsulta é usado pela consulta principal (consulta externa).
Subconsultas
![Page 151: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/151.jpg)
151
SELECT select_listFROM tabelaWHERE operador expr
(SELECT select_list FROM tabela);
–A subconsulta (consulta interna) é executada uma vez antes da consulta principal.
–O resultado da subconsulta é usado pela consulta principal (consulta externa).
Subconsultas
![Page 152: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/152.jpg)
152
SQL> SELECT ename 2 FROM emp 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE empno=7566);
Usando uma Subconsulta
![Page 153: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/153.jpg)
153
2975
SQL> SELECT ename 2 FROM emp 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE empno=7566);
Usando uma Subconsulta
![Page 154: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/154.jpg)
154
2975
SQL> SELECT ename 2 FROM emp 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE empno=7566);
ENAME----------KINGFORDSCOTT
ENAME----------KINGFORDSCOTT
Usando uma Subconsulta
![Page 155: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/155.jpg)
155
–Coloque as subconsultas entre parênteses.
–Coloque as subconsultas no lado direito do operador de comparação.
–Não adicione uma cláusula ORDER BY a uma subconsulta.
–Use operadores de uma única linha com subconsultas de uma única linha.
–Use operadores de várias linhas com subconsultas de várias linhas.
Diretrizes para o Uso de Subconsultas
![Page 156: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/156.jpg)
156
Consulta principal
Subconsulta retornaretorna
CLERKCLERK
Subconsulta de uma única linha
Subconsulta de várias linhas
Subconsulta de várias colunas
Tipos de Subconsultas
![Page 157: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/157.jpg)
157
Consulta principal
Subconsulta retornaretorna
CLERKCLERK
Consulta principal
SubconsultaCLERK CLERK MANAGERMANAGER
retornaretorna
Subconsulta de uma única linha
Subconsulta de várias linhas
Subconsulta de várias colunas
Tipos de Subconsultas
![Page 158: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/158.jpg)
158
Consulta principal
Subconsulta retornaretorna
CLERKCLERK
Consulta principal
SubconsultaCLERK CLERK MANAGERMANAGER
retornaretorna
CLERK 7900CLERK 7900MANAGER 7698MANAGER 7698
Main query
Subquery retornaretorna
Consulta principal
Subconsulta
Subconsulta de uma única linha
Subconsulta de várias linhas
Subconsulta de várias colunas
Tipos de Subconsultas
![Page 159: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/159.jpg)
159
Operador
=
>
>=
<
<=
<>
Significado
Igual a
Maior do que
Maior do que ou igual a
Menor do que
Menor ou igual a
Diferente de
–Retorne somente uma linha
–Use operadores de comparação de uma única linha
Subconsultas de uma Única Linha
![Page 160: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/160.jpg)
160
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369) 7 AND sal > 8 (SELECT sal 9 FROM emp 10 WHERE empno = 7876);
Executando Subconsultas de uma Única Linha
![Page 161: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/161.jpg)
161
CLERK
1100
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369) 7 AND sal > 8 (SELECT sal 9 FROM emp 10 WHERE empno = 7876);
Executando Subconsultas de uma Única Linha
![Page 162: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/162.jpg)
162
CLERK
1100
ENAME JOB---------- ---------MILLER CLERK
ENAME JOB---------- ---------MILLER CLERK
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369) 7 AND sal > 8 (SELECT sal 9 FROM emp 10 WHERE empno = 7876);
Executando Subconsultas de uma Única Linha
![Page 163: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/163.jpg)
163
SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp);
Usando Funções de Grupo em uma Subconsulta
![Page 164: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/164.jpg)
164
800SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp);
Usando Funções de Grupo em uma Subconsulta
![Page 165: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/165.jpg)
165
800
ENAME JOB SAL---------- --------- ---------SMITH CLERK 800
ENAME JOB SAL---------- --------- ---------SMITH CLERK 800
SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp);
Usando Funções de Grupo em uma Subconsulta
![Page 166: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/166.jpg)
166
SQL> SELECT deptno, MIN(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING MIN(sal) > 5 (SELECT MIN(sal) 6 FROM emp 7 WHERE deptno = 20);
–O Oracle Server primeiro executa as subconsultas.
–O Oracle Server retorna os resultados para a cláusula HAVING da consulta principal.
Cláusula HAVING com Subconsultas
![Page 167: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/167.jpg)
167
800
SQL> SELECT deptno, MIN(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING MIN(sal) > 5 (SELECT MIN(sal) 6 FROM emp 7 WHERE deptno = 20);
–O Oracle Server primeiro executa as subconsultas.
–O Oracle Server retorna os resultados para a cláusula HAVING da consulta principal.
Cláusula HAVING com Subconsultas
![Page 168: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/168.jpg)
168
SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp 6 GROUP BY deptno);
O que Há de Errado com esta Instrução?
![Page 169: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/169.jpg)
169
SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp 6 GROUP BY deptno);
O que Há de Errado com esta Instrução?
![Page 170: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/170.jpg)
170
SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp 6 GROUP BY deptno);
ERROR:ORA-01427: A subconsulta de uma única linha retorna mais de uma linha (Single-row subquery returns more than one row)
no rows selected
ERROR:ORA-01427: A subconsulta de uma única linha retorna mais de uma linha (Single-row subquery returns more than one row)
no rows selected
Operador de uma única linha com
Operador de uma única linha com
subconsulta de várias
subconsulta de várias linhaslinhas
O que Há de Errado com esta Instrução?
![Page 171: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/171.jpg)
171
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE ename='SMYTHE');
Esta Instrução Irá Funcionar?
![Page 172: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/172.jpg)
172
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE ename='SMYTHE');
Esta Instrução Irá Funcionar?
![Page 173: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/173.jpg)
173
no rows selectedno rows selected
A subconsulta não
A subconsulta não retornaretorna nenhum
nenhum valorvalor
SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE ename='SMYTHE');
Esta Instrução Irá Funcionar?
![Page 174: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/174.jpg)
174
Operador
IN
ANY
ALL
Significado
Igual a qualquer membro na lista
Compare o valor a cada valor retornado
pela subconsulta
Compare o valor a todo valor retornado
pela subconsulta
–Retorne mais de uma linha
–Use operadores de comparação de várias linhas
Subconsultas de Várias Linhas
![Page 175: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/175.jpg)
175
SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal < ANY 4 (SELECT sal 5 FROM emp 6 WHERE job = 'CLERK') 7 AND job <> 'CLERK';
Usando o Operador ANY em Subconsultas de Várias Linhas
![Page 176: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/176.jpg)
176
9508001100
1300SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal < ANY 4 (SELECT sal 5 FROM emp 6 WHERE job = 'CLERK') 7 AND job <> 'CLERK';
Usando o Operador ANY em Subconsultas de Várias Linhas
![Page 177: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/177.jpg)
177
9508001100
1300
EMPNO ENAME JOB--------- ---------- --------- 7654 MARTIN SALESMAN 7521 WARD SALESMAN
EMPNO ENAME JOB--------- ---------- --------- 7654 MARTIN SALESMAN 7521 WARD SALESMAN
SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal < ANY 4 (SELECT sal 5 FROM emp 6 WHERE job = 'CLERK') 7 AND job <> 'CLERK';
Usando o Operador ANY em Subconsultas de Várias Linhas
![Page 178: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/178.jpg)
178
SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal > ALL 4 (SELECT avg(sal) 5 FROM emp 6 GROUP BY deptno);
Usando o Operador ALL em Subconsultas de Várias Linhas
![Page 179: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/179.jpg)
179
2916.6667
2175
1566.6667SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal > ALL 4 (SELECT avg(sal) 5 FROM emp 6 GROUP BY deptno);
Usando o Operador ALL em Subconsultas de Várias Linhas
![Page 180: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/180.jpg)
180
2916.6667
2175
1566.6667
EMPNO ENAME JOB--------- ---------- --------- 7839 KING PRESIDENT 7566 JONES MANAGER 7902 FORD ANALYST 7788 SCOTT ANALYST
EMPNO ENAME JOB--------- ---------- --------- 7839 KING PRESIDENT 7566 JONES MANAGER 7902 FORD ANALYST 7788 SCOTT ANALYST
SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal > ALL 4 (SELECT avg(sal) 5 FROM emp 6 GROUP BY deptno);
Usando o Operador ALL em Subconsultas de Várias Linhas
![Page 181: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/181.jpg)
181
SELECT select_listFROM tabelaWHERE operador expr
(SELECT select_list FROM tabela);
As subconsultas são úteis quando uma consulta baseia-se em valores desconhecidos.
Sumário
![Page 182: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/182.jpg)
182
SELECT select_listFROM tabelaWHERE operador expr
(SELECT select_list FROM tabela);
As subconsultas são úteis quando uma consulta baseia-se em valores desconhecidos.
Sumário
![Page 183: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/183.jpg)
183
SQL: Lista de Exercício
1. Escreva uma query para mostrar o nome do empregado e data de contratação para todos os empregados do departamento do Blake. Exclua o Blake.
2. Crie uma query para mostrar o número e nome dos empregados que ganham acima da máeia salarial. Ordene os resultados por salário (decrescente).
3. Escre uma query que mostre o número e nome dos empregados que trabalham em um departamento que tem um empregado cujo nome contem um T. salve em p6q3.sql.
4. Mostre o nome do empregado, número do departamento e cargo para todos eo empregados lotados em Dallas.
5. Mostre o nome do empregado e salário de todos os empregados do King.
6. Mostre o número do departamento, nome do empregado e cargo de todos os empregados do departamento Sales.
7. Modifiique p6q3.sql para mostrar o número e nome do empregado, salário de todos os empregados que ganham mais que média salarial e que trabalham em um departamento que possui um empregado com um T em seu nome. Salve como p6q7.sql. Execute.
![Page 184: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/184.jpg)
184
Objetivos:
–Criar uma subconsulta de várias colunas
–Descrever e explicar o comportamento de subconsultas quando valores nulos forem recuperados
–Criar uma subconsulta em uma cláusula FROM
Subconsultas de Várias Colunas
![Page 185: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/185.jpg)
185
Consulta principal
MANAGER 10
Subconsulta
SALESMAN 30
MANAGER 10
CLERK 20
Subconsultas de Várias Colunas
![Page 186: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/186.jpg)
186
Consulta principal
MANAGER 10
Subconsulta
SALESMAN 30
MANAGER 10
CLERK 20
A consulta principal A consulta principal comparacompara
MANAGER 10MANAGER 10
Valores de uma subconsulta deValores de uma subconsulta devárias linhas e de várias colunasvárias linhas e de várias colunas
SALESMAN SALESMAN 3030
MANAGER MANAGER 1010
CLERK CLERK 2020
aa
Subconsultas de Várias Colunas
![Page 187: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/187.jpg)
187
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE (prodid, qty) IN 4 (SELECT prodid, qty 5 FROM item 6 WHERE ordid = 605) 7 AND ordid <> 605;
Exiba a ID da ordem, a ID do produto e a quantidade de itens na tabela de itens que corresponde à ID do produto e à quantidade de um item na ordem 605.
Usando Subconsultas de Várias Colunas
![Page 188: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/188.jpg)
188
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE (prodid, qty) IN 4 (SELECT prodid, qty 5 FROM item 6 WHERE ordid = 605) 7 AND ordid <> 605;
Exiba o número da ordem, o número do produto e a quantidade de qualquer item em que o número do produto e a quantidade correspondam ao número do produto e à quantidade de um item na ordem 605.
Usando Subconsultas de Várias Colunas
![Page 189: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/189.jpg)
189
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE (prodid, qty) IN 4 (SELECT prodid, qty 5 FROM item 6 WHERE ordid = 605) 7 AND ordid <> 605;
Exiba o número da ordem, o número do produto e a quantidade de qualquer item em que o número do produto e a quantidade correspondam ao número do produto e à quantidade de um item na ordem 605.
Usando Subconsultas de Várias Colunas
![Page 190: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/190.jpg)
190
Aos pares
PRODID QTY
101863 100
100861 100
102130 10
100890 5
100870 500
101860 50
Sem ser aos pares
PRODID QTY
101863 100
100861 100
102130 10
100890 5
100870 500
101860 50
Comparações de Coluna
![Page 191: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/191.jpg)
191
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE prodid IN (SELECT prodid 4 FROM item 5 WHERE ordid = 605) 6 AND qty IN (SELECT qty 7 FROM item 8 WHERE ordid = 605) 9 AND ordid <> 605;
Exiba o número da ordem, o número do produto e a quantidade de qualquer item em que o número do produto e a quantidade correspondam a qualquer número do produto e quantidade de um item na ordem 605.
Subconsulta de Comparação que Não Seja aos Pares
![Page 192: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/192.jpg)
192
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE prodid IN (SELECT prodid 4 FROM item 5 WHERE ordid = 605) 6 AND qty IN (SELECT qty 7 FROM item 8 WHERE ordid = 605) 9 AND ordid <> 605;
Exiba o número da ordem, o número do produto e a quantidade de qualquer item em que o número do produto e a quantidade correspondam a qualquer número do produto e quantidade de um item na ordem 605.
Subconsulta de Comparação que Não Seja aos Pares
![Page 193: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/193.jpg)
193
SQL> SELECT ordid, prodid, qty 2 FROM item 3 WHERE prodid IN (SELECT prodid 4 FROM item 5 WHERE ordid = 605) 6 AND qty IN (SELECT qty 7 FROM item 8 WHERE ordid = 605) 9 AND ordid <> 605;
Exiba o número da ordem, o número do produto e a quantidade de qualquer item em que o número do produto e a quantidade correspondam a qualquer número do produto e quantidade de um item na ordem 605.
Subconsulta de Comparação que Não Seja aos Pares
![Page 194: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/194.jpg)
194
ORDID PRODID QTY--------- --------- --------- 609 100870 5 616 100861 10 616 102130 10 621 100861 10 618 100870 10 618 100861 50 616 100870 50 617 100861 100 619 102130 100 615 100870 100 617 101860 100 621 100870 100 617 102130 100 . . . 16 rows selected.
Subconsulta que Não Seja aos Pares
![Page 195: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/195.jpg)
195
ORDID PRODID QTY--------- --------- --------- 609 100870 5 616 100861 10 616 102130 10 621 100861 10 618 100870 10 618 100861 50 616 100870 50 617 100861 100 619 102130 100 615 100870 100 617 101860 100 621 100870 100 617 102130 100 . . . 16 rows selected.
Subconsulta que Não Seja aos Pares
![Page 196: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/196.jpg)
196
SQL> SELECT employee.ename 2 FROM emp employee 3 WHERE employee.empno NOT IN 4 (SELECT manager.mgr 5 FROM emp manager);no rows selected.no rows selected.
Valores Nulos em uma Subconsulta
![Page 197: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/197.jpg)
197
SQL> SELECT a.ename, a.sal, a.deptno, b.salavg 2 FROM emp a, (SELECT deptno, avg(sal) salavg 3 FROM emp 4 GROUP BY deptno) b 5 WHERE a.deptno = b.deptno 6 AND a.sal > b.salavg;
ENAME SAL DEPTNO SALAVG---------- --------- --------- ----------KING 5000 10 2916.6667JONES 2975 20 2175SCOTT 3000 20 2175...6 rows selected.
ENAME SAL DEPTNO SALAVG---------- --------- --------- ----------KING 5000 10 2916.6667JONES 2975 20 2175SCOTT 3000 20 2175...6 rows selected.
Usando uma Subconsulta na Cláusula FROM
![Page 198: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/198.jpg)
198
SQL> SELECT a.ename, a.sal, a.deptno, b.salavg 2 FROM emp a, (SELECT deptno, avg(sal) salavg 3 FROM emp 4 GROUP BY deptno) b 5 WHERE a.deptno = b.deptno 6 AND a.sal > b.salavg;
ENAME SAL DEPTNO SALAVG---------- --------- --------- ----------KING 5000 10 2916.6667JONES 2975 20 2175SCOTT 3000 20 2175...6 rows selected.
ENAME SAL DEPTNO SALAVG---------- --------- --------- ----------KING 5000 10 2916.6667JONES 2975 20 2175SCOTT 3000 20 2175...6 rows selected.
Usando uma Subconsulta na Cláusula FROM
![Page 199: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/199.jpg)
199
SQL: Lista de Exercício
1. Escreva uma query para mostrar nome do empregado, número do departamento e salário de qualquer empregado cujo número do departamento e salário casam ambos com o número do departamento e salário de qualquer empregado que ganha comissão.
2. Mostre o nome do empregado, nome do departamento e salário de qualquer empregado cujo salário e comissão casam ambos com com o salário e comissão de qualquer empregado lotado em Dallas.
3. Crie uma query para mostrar o nome, data de contratação e salário para todos os empregados que tenham o mesmo salário e comissão do Scott.
4. Crie uma query para mostrar os empregados que ganham salário maior que qualquer CLERKS. Ordene o resultado por salário (decrescente).
![Page 200: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/200.jpg)
200
Objetivos:
–Descrever cada instrução DML
–Inserir linhas em uma tabela
–Atualizar linhas em uma tabela
–Deletar linhas de uma tabela
–Controlar transações
Manipulação de Dados
![Page 201: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/201.jpg)
201
–Uma instrução DML é executada quando você:
•Adiciona novas linhas a uma tabela
•Modifica linhas existentes em uma tabela
•Remove linhas existentes de uma tabela
–Uma transação consiste em um conjunto de instruções DML que formam uma unidade lógica de trabalho.
DML (Data Manipulation Language)
![Page 202: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/202.jpg)
202
DEPTDEPT
Nova linhaNova linha
50 DEVELOPMENTDETROIT
DEPTDEPT
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
50 DEVELOPMENT DETROIT
50 DEVELOPMENT DETROIT
Adicionando uma Nova Linha em uma Tabela
![Page 203: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/203.jpg)
203
DEPTDEPT
Nova linhaNova linha
50 DEVELOPMENTDETROIT
DEPTDEPT
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
"… inserir uma nova linha na tabela DEPT…"
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
50 DEVELOPMENT DETROIT
50 DEVELOPMENT DETROIT
Adicionando uma Nova Linha em uma Tabela
![Page 204: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/204.jpg)
204
INSERT INTO tabela [(coluna [, coluna...])]VALUES (valor [, valor...]);
INSERT INTO tabela [(coluna [, coluna...])]VALUES (valor [, valor...]);
–Adicione novas linhas em uma tabela usando a instrução INSERT.
–
–Somente uma linha é inserida por vez com esta sintaxe.
A Instrução INSERT
![Page 205: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/205.jpg)
205
SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (50, 'DEVELOPMENT', 'DETROIT');1 row created.1 row created.
–Insira uma nova linha contendo valores para cada coluna.
–Liste valores na ordem default das colunas na tabela.
–Liste opcionalmente as colunas na cláusula INSERT.
– Coloque os valores de data e caractere entre aspas simples.
Inserindo Novas Linhas
![Page 206: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/206.jpg)
206
SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS');1 row created.1 row created.
SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL);1 row created.1 row created.
Método explícito: Especifique a palavra-chave NULL.
Método implícito: Omita a coluna da lista de colunas.
Inserindo Linhas com Valores Nulos
![Page 207: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/207.jpg)
207
SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS');1 row created.1 row created.
SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL);1 row created.1 row created.
Método explícito: Especifique a palavra-chave NULL.
Método implícito: Omita a coluna da lista de colunas.
Inserindo Linhas com Valores Nulos
![Page 208: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/208.jpg)
208
SQL> INSERT INTO emp (empno, ename, job, 2 mgr, hiredate, sal, comm, 3 deptno) 4 VALUES (7196, 'GREEN', 'SALESMAN', 5 7782, SYSDATE, 2000, NULL, 6 10);1 row created.1 row created.
A função SYSDATE registra a data e hora atuais.
Inserindo Valores Especiais
![Page 209: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/209.jpg)
209
SQL> INSERT INTO emp (empno, ename, job, 2 mgr, hiredate, sal, comm, 3 deptno) 4 VALUES (7196, 'GREEN', 'SALESMAN', 5 7782, SYSDATE, 2000, NULL, 6 10);1 row created.1 row created.
A função SYSDATE registra a data e hora atuais.
Inserindo Valores Especiais
![Page 210: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/210.jpg)
210
SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3, 1997', 'MON DD, YYYY'), 4 1300, NULL, 10);1 row created.1 row created.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ------- -------- ---- --------- ---- ---- ------ 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10
Verifique sua adição.
Adicionar um novo funcionário.
Inserindo Valores Específicos de Data
![Page 211: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/211.jpg)
211
SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3, 1997', 'MON DD, YYYY'), 4 1300, NULL, 10);1 row created.1 row created.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ------- -------- ---- --------- ---- ---- ------ 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10
Verifique sua adição.
Adicionar um novo funcionário.
Inserindo Valores Específicos de Data
![Page 212: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/212.jpg)
212
SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (&department_id, 3 '&department_name', '&location');
Enter value for department_id: 8080Enter value for department_name: EDUCATIONEDUCATIONEnter value for location: ATLANTAATLANTA
1 row created.
Crie um script interativo usando parâmetros de substituição do SQL*Plus
Inserindo Valores Usando Variáveis de Substituição
![Page 213: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/213.jpg)
213
SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (&department_id, 3 '&department_name', '&location');
Enter value for department_id: 8080Enter value for department_name: EDUCATIONEDUCATIONEnter value for location: ATLANTAATLANTA
1 row created.
Crie um script interativo usando parâmetros de substituição do SQL*Plus
Inserindo Valores Usando Variáveis de Substituição
![Page 214: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/214.jpg)
214
ACCEPT department_id PROMPT 'Please enter the -
department number:'
ACCEPT department_name PROMPT 'Please enter -
the department name:'
ACCEPT location PROMPT 'Please enter the -
location:'
INSERT INTO dept (deptno, dname, loc)
VALUES (&department_id, '&department_name',
'&location');
–ACCEPT armazena o valor em uma variável.
–PROMPT exibe o texto personalizado.
Criando um Script com Prompts Personalizados
![Page 215: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/215.jpg)
215
ACCEPT department_id PROMPT 'Please enter the -
department number:'
ACCEPT department_name PROMPT 'Please enter -
the department name:'
ACCEPT location PROMPT 'Please enter the -
location:'
INSERT INTO dept (deptno, dname, loc)
VALUES (&department_id, '&department_name',
'&location');
–ACCEPT armazena o valor em uma variável.
–PROMPT exibe o texto personalizado.
Criando um Script com Prompts Personalizados
![Page 216: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/216.jpg)
216
SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER';3 rows created.3 rows created.
–Crie a instrução INSERT com uma subconsulta.
–Não use a cláusula VALUES.
–Faça a correspondência do número de colunas na cláusula INSERT com o número de colunas na subconsulta.
Copiando Linhas a partir de Outra Tabela
![Page 217: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/217.jpg)
217
SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER';3 rows created.3 rows created.
–Crie a instrução INSERT com uma subconsulta.
–Não use a cláusula VALUES.
–Faça a correspondência do número de colunas na cláusula INSERT com o número de colunas na subconsulta.
Copiando Linhas a partir de Outra Tabela
![Page 218: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/218.jpg)
218
EMPEMP
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
Alterando os Dados em uma Tabela
![Page 219: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/219.jpg)
219
EMPEMP
"…atualize uma "…atualize uma linha em uma tabela linha em uma tabela
EMP…"EMP…"
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
20
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
Alterando os Dados em uma Tabela
![Page 220: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/220.jpg)
220
UPDATE tabelaSET coluna = valor [, coluna = valor, ...][WHERE condição];
UPDATE tabelaSET coluna = valor [, coluna = valor, ...][WHERE condição];
–Modifique linhas existentes com a instrução UPDATE.
–Atualize mais de uma linha por vez, se necessário.
A instrução UPDATE
![Page 221: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/221.jpg)
221
SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
–Uma linha ou linhas específicas são modificadas quando você especifica a cláusula WHERE.
Todas as linhas na tabela são modificadas quando você omite a cláusula WHERE.
Atualizando Linhas em uma Tabela
![Page 222: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/222.jpg)
222
SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
–Uma linha ou linhas específicas são modificadas quando você especifica a cláusula WHERE.
Todas as linhas na tabela são modificadas quando você omite a cláusula WHERE.
Atualizando Linhas em uma Tabela
![Page 223: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/223.jpg)
223
SQL> UPDATE emp 2 SET (job, deptno) = 3 (SELECT job, deptno 4 FROM emp 5 WHERE empno = 7499) 6 WHERE empno = 7698;1 row updated.1 row updated.
•Atualize o cargo e o departamento do funcionário 7698 para coincidir com o do funcionário 7499.
Atualizando com Subconsulta de Várias Colunas
![Page 224: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/224.jpg)
224
SQL> UPDATE emp 2 SET (job, deptno) = 3 (SELECT job, deptno 4 FROM emp 5 WHERE empno = 7499) 6 WHERE empno = 7698;1 row updated.1 row updated.
•Atualize o cargo e o departamento do funcionário 7698 para coincidir com o do funcionário 7499.
Atualizando com Subconsulta de Várias Colunas
![Page 225: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/225.jpg)
225
SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.
SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.
•Use subconsultas em instruções UPDATE para atualizar linhas em uma tabela baseada em valores de outra tabela.
Atualizando Linhas Baseadas em Outra Tabela
![Page 226: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/226.jpg)
226
UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found
UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found
SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;
SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;
Não
exis
te o
núm
ero
de d
epar
tam
ento
55
Atualizando Linhas: Erro de Restrição de Integridade
![Page 227: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/227.jpg)
227
DEPTDEPT
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ...
Removendo uma Linha de uma Tabela
![Page 228: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/228.jpg)
228
"… remova uma linha da "… remova uma linha da tabela DEPT…"tabela DEPT…"
DEPTDEPT
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ...
DEPTDEPT
DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...
Removendo uma Linha de uma Tabela
![Page 229: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/229.jpg)
229
DELETE [FROM] tabela[WHERE condição];
DELETE [FROM] tabela[WHERE condição];
Você pode remover linhas existentes de uma tabela usando a instrução DELETE.
A Instrução DELETE
![Page 230: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/230.jpg)
230
SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.
SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.
SQL> DELETE FROM department;4 rows deleted.4 rows deleted.
SQL> DELETE FROM department;4 rows deleted.4 rows deleted.
–Linhas específicas são deletadas quando você especifica a cláusula WHERE.
-Todas as linhas na tabela serão deletadas se você omitir a cláusula WHERE.
Deletando Linhas de uma Tabela
![Page 231: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/231.jpg)
231
SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES');6 rows deleted.6 rows deleted.
•Use subconsultas em instruções DELETE para remover linhas de uma tabela baseadas em valores de outra tabela.
Deletando Linhas Baseadas em Outra Tabela
![Page 232: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/232.jpg)
232
SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES');6 rows deleted.6 rows deleted.
•Use subconsultas em instruções DELETE para remover linhas de uma tabela baseadas em valores de outra tabela.
Deletando Linhas Baseadas em Outra Tabela
![Page 233: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/233.jpg)
233
SQL> DELETE FROM dept 2 WHERE deptno = 10;
SQL> DELETE FROM dept 2 WHERE deptno = 10;
DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found
DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record foundVoc
ê não
pode dele
tar uma l
inha
que conten
ha uma c
have p
rimári
a
usada c
omo chav
e estr
angeir
a em
outra ta
bela.
Deletando Linhas: Erro de Restrição de Integridade
![Page 234: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/234.jpg)
234
•Consistem de uma das seguintes instruções:
–Instruções DML que fazem uma alteração Instruções DML que fazem uma alteração consistente nos dadosconsistente nos dados
–Uma instrução DDLUma instrução DDL
–Uma instrução DCLUma instrução DCL
Transações de Banco de Dados
![Page 235: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/235.jpg)
235
–Começa quando for executada a primeira instrução SQL executável
–Termina com um dos seguintes eventos:
•COMMIT ou ROLLBACK é emitida
•Instrução DDL ou DCL é executada (commit automático)
•O usuário sai
•O sistema cai
Transações de Banco de Dados
![Page 236: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/236.jpg)
236
–Garantir consistência de dados
–Visualizar alterações nos dados antes de fazer as alterações permanentemente
–Agrupar operações relacionadas logicamente
Vantagens das Instruções COMMIT e ROLLBACK
![Page 237: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/237.jpg)
237
DELETEDELETE
Savepoint ASavepoint A Savepoint BSavepoint BCOMMITCOMMIT
INSERTINSERTUPDATEUPDATEINSERTINSERT
TransaçãoTransação
Controlando Transações
![Page 238: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/238.jpg)
238
DELETEDELETE
Savepoint ASavepoint A
ROLLBACK para Savepoint BROLLBACK para Savepoint B
DELETEDELETE
Savepoint BSavepoint BCOMMITCOMMIT
INSERTINSERTUPDATEUPDATEINSERTINSERT
TransaçãoTransação
Controlando Transações
![Page 239: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/239.jpg)
239
DELETEDELETE
Savepoint ASavepoint A
ROLLBACK para Savepoint BROLLBACK para Savepoint B
DELETEDELETE
Savepoint BSavepoint BCOMMITCOMMIT
INSERTINSERTUPDATEUPDATE
ROLLBACK para Savepoint AROLLBACK para Savepoint A
INSERTINSERTUPDATEUPDATEINSERTINSERT
TransaçãoTransação
Controlando Transações
![Page 240: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/240.jpg)
240
DELETEDELETE
Savepoint ASavepoint A
ROLLBACK para Savepoint BROLLBACK para Savepoint B
DELETEDELETE
Savepoint BSavepoint BCOMMITCOMMIT
INSERTINSERTUPDATEUPDATE
ROLLBACK para Savepoint AROLLBACK para Savepoint A
INSERTINSERTUPDATEUPDATEINSERTINSERT
ROLLBACKROLLBACK
INSERTINSERT
TransaçãoTransação
Controlando Transações
![Page 241: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/241.jpg)
241
–O estado anterior dos dados pode ser recuperado.
–O usuário atual pode revisar os resultados das operações DML usando a instrução SELECT.
–Outros usuários não poderão ver os resultados das instruções DML do usuário atual.
–As linhas afetadas são bloqueadas, outros usuários não poderão alterar os dados dentro das linhas afetadas.
Estado dos Dados Antes de COMMIT ou ROLLBACK
![Page 242: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/242.jpg)
242
–As alterações nos dados são feitas permanentemente no banco de dados.
–O estado anterior dos dados é perdido permanentemente.
–Todos os usuários podem ver os resultados.
–As linhas afetadas são desbloqueadas, essas linhas estão disponíveis para serem manipuladas por outros usuários.
–Todos os savepoints são apagados.
Estado dos Dados Após COMMIT
![Page 243: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/243.jpg)
243
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> COMMIT;Commit complete.Commit complete.
Submeter alterações a commit.
Fazer as alterações.
Submetendo Dados a Commit
![Page 244: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/244.jpg)
244
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> COMMIT;Commit complete.Commit complete.
Submeter alterações a commit.
Fazer as alterações.
Submetendo Dados a Commit
![Page 245: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/245.jpg)
245
SQL> DELETE FROM employee;14 rows deleted.14 rows deleted.SQL> ROLLBACK;Rollback complete.Rollback complete.
•Descarte todas as alterações pendentes usando a instrução ROLLBACK.
–As alterações nos dados são desfeitas.As alterações nos dados são desfeitas.
–O estado anterior dos dados é restaurado.O estado anterior dos dados é restaurado.
–As linhas afetadas são desbloqueadas.As linhas afetadas são desbloqueadas.
Estado dos Dados Após ROLLBACK
![Page 246: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/246.jpg)
246
SQL> DELETE FROM employee;14 rows deleted.14 rows deleted.SQL> ROLLBACK;Rollback complete.Rollback complete.
•Descarte todas as alterações pendentes usando a instrução ROLLBACK.
–As alterações nos dados são desfeitas.As alterações nos dados são desfeitas.
–O estado anterior dos dados é restaurado.O estado anterior dos dados é restaurado.
–As linhas afetadas são desbloqueadas.As linhas afetadas são desbloqueadas.
Estado dos Dados Após ROLLBACK
![Page 247: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/247.jpg)
247
SQL> UPDATE...SQL> SAVEPOINT update_done;Savepoint created.Savepoint created.SQL> INSERT...SQL> ROLLBACK TO update_done;Rollback complete.Rollback complete.
–Crie um marcador em uma transação atual usando a instrução SAVEPOINT.
–Faça roll back do marcador usando a instrução ROLLBACK TO SAVEPOINT.
Fazendo Roll Back de Alterações para um Marcador
![Page 248: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/248.jpg)
248
SQL> UPDATE...SQL> SAVEPOINT update_done;Savepoint created.Savepoint created.SQL> INSERT...SQL> ROLLBACK TO update_done;Rollback complete.Rollback complete.
–Crie um marcador em uma transação atual usando a instrução SAVEPOINT.
–Faça roll back do marcador usando a instrução ROLLBACK TO SAVEPOINT.
Fazendo Roll Back de Alterações para um Marcador
![Page 249: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/249.jpg)
249
–Se uma única instrução DML falhar durante a execução, será feito roll back somente dessa instrução.
–O Oracle Server implementa um savepoint implícito.
–Todas as outras alterações são mantidas.
–O usuário deve finalizar as transações explicitamente usando uma instrução COMMIT ou ROLLBACK.
Rollback no Nível da Instrução
![Page 250: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/250.jpg)
250
–A consistência na leitura garante sempre uma exibição consistente dos dados.
–As alterações feitas por um usuário não entram em conflito com as alterações feitas por outro usuário.
–A consistência na leitura garante que nos mesmos dados:
•Os leitores não esperem pelos autores
•Os autores não esperem pelos leitores
Consistência na Leitura
![Page 251: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/251.jpg)
251
UPDATE empUPDATE empSET sal = 2000SET sal = 2000WHERE ename = WHERE ename = 'SCOTT';'SCOTT';
Blocos Blocos de dadosde dados
Segmentos Segmentos de rollbackde rollback
dados dados alterados alterados e dados e dados intactosintactos
antes de antes de alterar dados alterar dados "antigos""antigos"
Usuário AUsuário A
Usuário BUsuário B
Imagem da Imagem da consistência consistência na leiturana leitura
SELECT *SELECT *FROMFROM emp;emp;
Implementação da Consistência na Leitura
![Page 252: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/252.jpg)
252
•Bloqueios::
–Impedem a interação destrutiva entre transações simultâneas
–Não requerem ação do usuário
–Usam automaticamente o nível mais baixo de restrição
–São mantidos durante a duração da transação
–Há dois modos básicos:
•Exclusivo
•Compartilhado
Bloqueando
![Page 253: Banco de Dados - tiagodemelo.infotiagodemelo.info/wp-content/uploads/2019/05/aula-sql.pdf · –Instruções SQL não fazem distinção entre maiúsculas e minúsculas. –Instruções](https://reader033.vdocuments.site/reader033/viewer/2022042120/5e9a140ee3da5336b274ba94/html5/thumbnails/253.jpg)
253
Descrição
Adiciona uma nova linha à tabela
Modifica linhas existentes na tabela
Remove linhas existentes da tabela
Torna permanente todas as alterações pendentes
Permite um rollback no marcador do savepoint
Descarta todas as alterações nos dados pendentes
Instrução
INSERT
UPDATE
DELETE
COMMIT
SAVEPOINT
ROLLBACK
Sumário