select professor: virgílio fries müller www. vfm.com.br

40
SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Upload: mirella-barata-arantes

Post on 07-Apr-2016

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SELECT

Professor:Virgílio Fries Müller

www. vfm.com.br

Page 2: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Select

Page 3: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

O Comando SELECT

▫SELECT identifica as colunas▫FROM identifica as tabelas

SELECT [DISTINCT] {*, column [alias],...}FROM table;

Page 4: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Selecionando linhas SQL> SELECT * 2 FROM depto;

SQL> SELECT depto_num, depto_loc 2 FROM depto;

SQL> SELECT enome, sal, sal+300 2 FROM emp;

SQL> SELECT enome, sal, 12*sal+100 2 FROM emp;

Page 5: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Definindo Alias para Colunas

SQL> SELECT enome AS nome, sal AS salario 2 FROM emp;

NOME SALARIO------------- ---------...

SQL> SELECT enome "Nome", 2 sal*12 “Salario Anual" 3 FROM emp;

Nome Salario Anual------------- -------------...

Page 6: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Eliminando Linhas Duplicadas▫DISTINCT

SQL> SELECT DISTINCT depto_num 2 FROM emp;

DEPTO_NUM--------- 10 20 30

Page 7: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Restringindo consultas e ordenando resultados

Page 8: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Utilizando a Cláusula WHERESQL> SELECT enome, cargo, depto_num 2 FROM emp 3 WHERE cargo='CAIXA';

ENOME CARGO DEPTO_NUM---------- --------- ---------RONALDO CAIXA 30MANUEL CAIXA 20PAULO CAIXA 20LUCIANO CAIXA 10

Page 9: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Operadores de ComparaçãoOperador

=

>

>=

<

<=

<>

Significado

Igual a

Maior que

Maior ou igual a

Menor que

Menor ou igual a

Diferente de

Page 10: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Outros OperadoresOperador

BETWEEN...AND...

IN(lista)

LIKE

IS NULL

Significado

Entre dois valores (inclusive)

Satisfaz uma lista de valores

Satisfaz um padrão de caracteres

É um valor nulo (null)

Page 11: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Operador BETWEEN

ENOME SAL---------- ---------MARIA 1250SERGIO 1500MATHEUS 1250PAULO 1100LUCIANO 1300

SQL> SELECT enome, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500;

limite inferior

limite superior

Page 12: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Operador INSQL> SELECT enum, enome, sal, ger 2 FROM emp 3 WHERE ger IN (7902, 7566, 7788);

ENUM ENOME SAL GER--------- ---------- --------- --------- 7902 JOSE 3000 7566 7369 MANUEL 800 7902 7788 FABIO 3000 7566 7876 PAULO 1100 7788

Page 13: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SQL> SELECT enome 2 FROM emp 3 WHERE enome LIKE ‘M%';

Operador LIKE▫Utilize o operador LIKE para realizar

pesquisas por padrões (wildcards). % substitui zero ou mais caracteres _ substitui um único caracter

Page 14: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SQL> SELECT enome, ger 2 FROM emp 3 WHERE ger IS NULL;

ENOME GER---------- ---------CARLOS

Operador IS NULL▫Testando valores nulos (null)

Page 15: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Operadores LógicosOperador

AND

OR

NOT

Significado

Retorna TRUE se a condição de ambos os componentes for TRUE

Retorna TRUE se a condição de um dos componentes for TRUE

Retorna TRUE se a condição for FALSE (vise-versa)

Page 16: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Operador NOTSQL> SELECT enome, cargo 2 FROM emp 3 WHERE cargo NOT IN('CAIXA','GERENTE','ANALISTA');

ENOME CARGO---------- ---------CARLOS PRESIDENTEMARIA VENDEDORCELSO VENDEDORSERGIO VENDEDORMATHEUS VENDEDOR

Page 17: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Cláusula ORDER BYSQL> SELECT enome, cargo, depto_num, dtinicio 2 FROM emp 3 ORDER BY dtinicio DESC;

ENOME CARGO DEPTO_NUM DTINICIO---------- --------- --------- ---------PAULO CAIXA 20 12-JAN-83FABIO ANALISTA 20 09-DEC-82LUCIANO CAIXA 10 23-JAN-82RONALDO CAIXA 30 03-DEC-81JOSE ANALISTA 20 03-DEC-81CARLOS PRESIDENTE 10 17-NOV-81MARIA VENDEDOR 30 28-SEP-81...14 rows selected.

Page 18: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Manipulando dados

Page 19: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

O Comando UPDATE▫Modificando linhas existentes com o

comando UPDATE.

▫Modifique mais de uma linha por vez especificando uma condição na cláusula WHERE.

Não esqueça o COMMIT

UPDATE tableSET column = value [, column = value][WHERE condition];

Page 20: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Atualizando linhas em uma tabela▫Linhas específicas podem ser

modificadas utilizando a cláusula WHERE.

▫Todas as linhas da tabela são modificadas se a cláusula WHERE for omitida.

SQL> UPDATE emp 2 SET depto_num = 20 3 WHERE enum = 7782;1 row updated.1 row updated.

SQL> UPDATE emp 2 SET depto_num = 20;14 rows updated.14 rows updated.

Page 21: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Eliminando Linhas de uma Tabela▫Linhas específicas podem ser eliminadas

utilizando a cláusula WHERE.

▫Todas as linhas da tabela são eliminadas se a cláusula WHERE for omitida.

SQL> DELETE FROM depto 2 WHERE depto_nome = 'DESENVOLVIMENTO'; 1 row deleted.1 row deleted.

SQL> DELETE FROM depto;4 rows deleted.4 rows deleted.

Page 22: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Exibindo dados de múltiplas tabelas

Page 23: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Joins▫Utilize uma junção para consultar dados de

mais de uma tabela.

▫Especifique a condição de junção na cláusula WHERE.

▫Informe o nome da tabela junto com o nome da coluna, se tabelas diferentes possuírem colunas com os mesmos nomes.

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

Page 24: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Criando Alias para TabelasSQL> SELECT emp.enum, emp.enome, emp.depto_num, 2 depto.depto_num, depto.depto_loc 3 FROM emp, depto 4 WHERE emp.depto_num = depto.depto_num;

SQL> SELECT e.enum, e.enome, e.depto_num, 2 d.depto_num, d.depto_loc 3 FROM emp e, depto d 4 WHERE e.depto_num = d.depto_num;

Page 25: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Funções de Grupo(Agregação)

Page 26: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

O que são Funções de Grupo?▫Funções de grupo operam em conjuntos de

linhas, produzindo um resultado por grupo.EMPEMP

““o maior salário o maior salário da tabela EMP”da tabela EMP”

DEPTO_NUM 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

Page 27: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

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 cargo LIKE ‘VEND%';

Funções AVG e SUM▫Utilize o AVG e SUM apenas para dados

numéricos

Page 28: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SQL> SELECT MIN(dtinicio), MAX(dtinicio) 2 FROM emp;

MIN(DTINI MAX(DTINI--------- ---------17-DEZ-80 12-JAN-83

Funções MIN e MAX▫Utilize MIN e MAX para qualquer tipo de

dado

Page 29: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

COUNT(*)--------- 6

SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE depto_num = 30;

Função COUNT▫COUNT(*) retorna o número de linhas na

tabela

Page 30: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

COUNT(COMIS)------------ 4

SQL> SELECT COUNT(comis) 2 FROM emp 3 WHERE depto_num = 30;

Função COUNT▫COUNT(coluna) retorna o número de linhas

não nulas da tabela

Page 31: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Criando Grupos de Dados: A Cláusula GROUP BY

▫Divida as linhas de uma tabela em pequenos grupos usando a cláusula GROUP BY.

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

Page 32: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY depto_num;

A Cláusula GROUP BY▫Colunas utilizadas em funções de grupo

não precisam estar listadas no GROUP BY.

AVG(SAL)--------- 2916.6667 21751566.6667

Page 33: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Criando Grupos de Dados EMPEMP

““média salarial média salarial por por

departamento”departamento”

2916.66672916.6667

21752175

1566.66671566.6667

DEPTO_NUM 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

DEPTO_NUM AVG(SAL) --------- --------- 10 2916.6667 20 2175 30 1566.6667

Page 34: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

SQL> SELECT depto_num, cargo, sum(sal) 2 FROM emp 3 GROUP BY depto_num, cargo;

Utilizando GROUP BY em Múltiplas Colunas

DEPTO_NUM CARGO SUM(SAL)--------- --------- --------- 10 CAIXA 1300 10 GERENTE 2450 10 PRESIDENTE 5000 20 ANALISTA 6000 20 CAIXA 1900...9 rows selected.

Page 35: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

TRABALHANDO COM O BANCO DE DADOS REALIZADO NA AVALIAÇÃO

Select * From disciplinas

Page 36: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Select estados.nome, Estados.siglas,Cidades.nomeFromEstadosInner join cidadesOn estados.id.estado = cidade.id_estado

Page 37: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

resultado

Page 38: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Select a.nome as aluno,e.nome as estado.E.sigla,c.nome as cidadefromalunos as ainner join cidades as con c.id.cidade = a.id.cidadeinner join estado as eon e.id_estado = c.id_estado

Page 39: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

Resultado

Page 40: SELECT Professor: Virgílio Fries Müller www. vfm.com.br

FIM!

POR FAVORESTUDE-ME EM CASA!