Sei sulla pagina 1di 38

SQL - parte 1 SELECT Bsico

Termos
COLUNAS CHAVE

DCOD
LINHAS

DNOM INF0 OPER

GER 030 090 TABELA

CO1 E11

ENTIDADE: DEPARTAMENTO

SQL
STRUCTURED QUERY LANGUAGE
Semelhante ao ingls falado Fcil de escrever, ler e entender

Componentes do SQL
DML - Data Manipulation Language
SELECT UPDATE INSERT DELETE

DDL - Data Definition Language


CREATE ALTER DROP

DCL Data Control Language


GRANT REVOKE
4

SELECT BSICO

Tabelas Usadas nos Exemplos


STAFF
ID 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 NOME SANTANA ORSINI DANTAS OBRIEN SOUZA SUZUKI ALMEIDA JAMES KOONITZ PLOTZ NGAN NAUGHTON YAMAGUCHI FRAYE OLIVEIRA MOLINARI KERMISCH ABRAHAMS SNEIDER SCOUTTEN LU SMITH LUNDQUIST DANIELS WHEELER JONES LEA WILSON PINHO DANIVS GRAHAM GONZALES BURKE VIEIRA GAFNEY DEPT 20 20 38 38 15 38 15 20 42 42 15 38 42 51 51 10 15 38 20 42 10 51 51 10 51 10 66 66 84 84 66 66 66 84 84 CARGO GER VENDAS GER VENDAS GER VENDAS VENDAS ATEND VENDAS GER ATEND ATEND ATEND GER VENDAS GER ATEND ATEND ATEND ATEND GER VENDAS ATEND GER ATEND GER GER VENDAS GER VENDAS VENDAS VENDAS ATEND VENDAS ATEND TEMP 7 8 5 6 10 7 6 7 5 6 6 6 7 4 3 8 10 7 3 5 6 12 9 9 10 5 13 4 1 7 5 SALARIO 18357.50 18171.25 17506.75 18006.00 20659.80 16808.30 16502.83 13504.60 18001.75 18352.80 12508.20 12954.75 10505.90 21150.00 19456.50 22959.20 12258.50 12009.75 14252.75 11508.60 20010.00 17654.50 13369.80 19260.25 14460.00 21234.00 18555.50 18674.50 19818.00 15454.50 21000.00 16858.20 10988.00 17844.00 13030.50 COMIS 612.45 846.55 650.25 1152.00 128.20 1386.70 206.60 180.00 75.60 637.65 110.10 236.50 126.50 84.20 992.80 189.65 513.30 811.50 806.10 200.30 844.00 55.50 1285.00 188.00

Tabelas Usadas nos Exemplos (cont)


ORG

DEPTCOD 10 15 20 38 42 51 66 84

DEPTNOME MATRIZ CAMPINAS RIO MINAS BAHIA RECIFE RIO GRANDE PARANA

GERENTE 160 50 10 30 100 140 270 290

DIVISAO CENTRO SUDESTE SUDESTE SUDESTE NORDESTE NORDESTE SUL SUL

LOCAL SAO PAULO CAMPINAS R.JANEIRO B.HORIZONTE SALVADOR RECIFE PORTO ALEGRE CURITIBA

Query
Sequncia Obrigatria
SELECT NOME, TEMP, SALARIO
Especifica quais colunas mostrar

FROM STAFF
Especifica de quais tabelas

WHERE DEPT = 38
Especifica quais linhas selecionar

ORDER BY NOME
Especifica como ordenar o resultado

Query em formato Livre

SELECT NOME, TEMP, SALARIO FROM STAFF WHERE DEPT = 38 ORDER BY NOME

SELECT ... FROM


SELECT algumas das colunas da tabela resultado
Lista as colunas desejadas na sequncia de esquerda para a direita Vrgulas separam as colunas Resultado:

FROM lista de tabelas


Simples: EMP Qualificado: AUTHID.EMP

Exemplo
SELECT DEPTNOME, DEPTCOD FROM ORG

DEPTNOME -------------------MATRIZ CAMPINAS RIO MINAS . .

DEPTCOD -----------------10 15 20 38 . .

10

SELECT de todas as colunas


Para selecionar todas as colunas de uma tabela na mesma sequncia em que foram definidas: SELECT * FROM ORG
Resultado:
DEPTCOD -------------DEPTNOME GERENTE -------------------- -------------DIVISAO --------------LOCAL ----------------------

10
15 20 38 . .

MATRIZ
CAMPINAS RIO MINAS . .

160
50 10 30 . .

CENTRO
SUDESTE SUDESTE SUDESTE . .

SAO PAULO
CAMPINAS R.JANEIRO B.HORIZONTE . .

11

Controle de Linhas
WHERE
Traz certas linhas Estabelece condies

Listar empregados do departamento 20


SELECT DEPT, NOME,
Resultado:
DEPT --------20 20 20 20 NOME ---------------SANTANA ORSINI JAMES SNEIDER CARGO -------------GER VENDAS ATEND ATEND COMIS -----------612.45 128.20 126.50
12

CARGO, COMIS
FROM STAFF WHERE DEPT = 20

Exemplos de WHERE
Selecionar linhas atravs de dado numrico
SELECT DEPT, NOME, CARGO FROM STAFF WHERE DEPT = 20

Selecionar linhas atravs de dado alfanumrico


SELECT NOME, CARGO, COMIS FROM STAFF WHERE NOME = SANTANA

13

Operadores de comparao
= ! = ou < > ou = > >= < <= ~ > ou > ou !> ~ < ou < ou !<
SELECT NOME, COMIS FROM STAFF WHERE COMIS > = 1000

Igual Diferente Maior Maior ou igual Menor Menor ou igual No maior No menor
SELECT NOME, DEPT, TEMP FROM STAFF WHERE CARGO < > GER
14

Nulidade
Na insero de linha, uma coluna que :
NOT NULL o valor deve ser fornecido (ALLOW) NULL o valor pode ser omitido Um valor NULO: NO ZERO
NO BRANCO DESCONHECIDO

15

NOT NULL WITH DEFAULT


Uma coluna pode ser not null with default O sistema fornece um valor se omitido durante a insero.
Zero se coluna numrica Branco se coluna definida como caracter

16

Seleo de Nulos
Valor nulo como critrio de SELECT
SELECT NOME, CARGO, COMIS FROM STAFF WHERE COMIS IS NULL
Resultado:
NOME -----------SANTANA DANTAS SOUZA PLOTZ . CARGO ----------GER GER GER GER . COMIS ---------.
17

Seleo de Nulos
Valor no nulo como critrio de SELECT
SELECT NOME, CARGO, COMIS FROM STAFF WHERE COMIS IS NOT NULL
Resultado:
NOME --------------ORSINI OBRIEN SUZUKI ALMEIDA JAMES . CARGO ------------VENDAS VENDAS VENDAS VENDAS ATEND . COMIS ----------612.45 846.55 650.25 1152.00 128.20 .

18

Mltiplas Condies
Operadores para mltiplas condies:
AND OR

Dadas duas condies:


CARGO = VENDAS SALARIO < 17000

Para ter ambas satisfeitas: AND


WHERE CARGO = VENDAS AND SALARIO < 17000 Resultado:
NOME -------------SUZUKI ALMEIDA . CARGO ------------VENDAS VENDAS . SALARIO ------------16808.30 16502.83 .

19

Mltiplas Condies
Para ter qualquer uma satisfeita: OR
WHERE CARGO = VENDAS OR SALARIO < 17000

Resultado:

NOME -------------ORSINI OBRIEN SUZUKI ALMEIDA JAMES . .

CARGO ------------VENDAS VENDAS VENDAS VENDAS ATEND . .

SALARIO ------------18171.25 18006.00 16808.30 16502.83 13504.60 . .

20

Mltiplas Condies
(cont)
WHERE (CARGO = VENDAS AND COMIS > 1200) OR TEMP > 10

Resultado:

NOME -------------KOONITZ JONES GRAHAM VIEIRA

CARGO ------------VENDAS GER VENDAS VENDAS

TEMP --------6 12 13 7

COMIS -----------1386.70 200.30 1285.00

No equivale a:
WHERE CARGO = VENDAS AND (COMIS > 1200 OR TEMP > 10) Resultado:
NOME -------------KOONITZ GRAHAM VIEIRA CARGO ------------VENDAS VENDAS VENDAS TEMP --------6 13 7 COMIS -----------1386.70 200.30 1285.00

21

IN
Valor deve coincidir com algum elemento da lista
WHERE DEPT IN (38,20,42)

Equivale a:

Mltiplos ORs para a mesma coluna:


WHERE DEPT=38 OR DEPT=20 OR DEPT=42

22

BETWEEN
Para selecionar intervalo fechado de valores
SELECT NOME, CARGO, TEMP FROM STAFF WHERE TEMP BETWEEN 9 AND 11

Equivale a:
SELECT NOME, CARGO, TEMP FROM STAFF WHERE TEMP >= 9 AND TEMP <= 11

Resultado:
NOME -------------SOUZA LU LEA WILSON PINHO CARGO TEMP -------------- --------GER 10 GER 10 GER 9 VENDAS 9 GER 10
23

Pesquisas Parciais
Para pesquisar um subconjunto de caracteres: LIKE
* ou % Conjunto de caracteres quaisquer

? ou _

Um caracter qualquer

24

Pesquisas Parciais
Exemplos:
WHERE NOME LIKE G% inclui GRAHAM GONZALES GAFNEY WILSON JASON

WHERE NOME LIKE %SON

inclui

WHERE NOME LIKE %M%N%


WHERE NOME LIKE __ WHERE NOME LIKE _R%

inclui

SAMANTA MOLINARI
LU FRAYE GRAHAM
25

inclui inclui

Negao
Para reverter o teste:
WHERE NOME NOT LIKE G%

Exclui:

GRAHAM

GONZALES
GAFNEY

WHERE TEMP NOT BETWEEN 9 AND 11


Exclui: TEMP de 9 a 11

26

Manipulando a tabela resultante


Para classificar as linhas:
ORDER BY

Para eliminar linhas duplicadas:


SELECT DISTINCT

27

ORDER BY
Para classificar numa sequncia especificada: Lista classificada do pessoal do depto 84
SELECT NOME, CARGO, TEMP FROM STAFF WHERE DEPT = 84 ORDER BY NOME Resultado:
NOME -------------DAVIS GAFNEY PINHO VIEIRA CARGO -------------VENDAS ATEND GER VENDAS TEMP --------5 5 10 7
28

ORDER BY - Observaes
Colunas classificadas devem ser referenciadas pelo SELECT (DB2, SQL/DS). Em alguns SGBDs as colunas do ORDER BY no precisam ser referenciadas no SELECT. Em alguns SGBDs nulos so considerados como valor mais baixo Em alguns SGBDs nulos so considerados como valor mais alto (DB2, SQL/DS) Podemos especificar colunas para o ORDER BY fornecendo um nmero que indica a posio da mesma na clusula SELECT. O ORDER BY o nico que permite isto A clusula ORDER BY classifica uma tabela resultante. Logo deve ser SEMPRE NICA e a LTIMA a aparecer numa instruo SELECT
29

ORDER BY
Para classificar pelas coluna(s) em ordem ASCendente (default) ou DESCendente
SELECT NOME, CARGO, TEMP FROM STAFF WHERE DEPT = 84 ORDER BY CARGO, TEMP DESC Resultado:
NOME -------------GAFNEY PINHO VIEIRA DAVIS CARGO -------------ATEND GER VENDAS VENDAS TEMP --------5 10 7 5
30

ORDER BY
ORDER BY TEMP DESC, CARGO

Resultado:

NOME -------------PINHO VIEIRA GAFNEY DAVIS

CARGO -------------GER VENDAS ATEND VENDAS

ANOS --------10 7 5 5

31

SELECT DISTINCT
SELECT DEPT FROM STAFF
DEPT -------20 20 38 38 15 38 10 . .

Para eliminar linhas duplicadas:


SELECT DISTINCT DEPT FROM STAFF

DEPT -------10 15 20 38 . .

32

SELECT DISTINCT
Mltiplas colunas
SELECT DISTINCT DEPT, CARGO FROM STAFF
DEPT -------10 15 15 15 20 20 20 38 . . CARGO -------------GER ATEND GER VENDAS ATEND GER VENDAS ATEND . .
33

SELECT DISTINCT - observaes


A palavra chave DISTINCT deve aparecer logo depois do SELECT Classificao no ocorre alguns SGBDs ORDER BY deve ser usada para controlar a classificao DEPT CARGO ------------------15 ATEND Exemplo: 20 ATEND
SELECT DISTINCT DEPT, CARGO FROM STAFF ORDER BY CARGO
38 . . 10 15 20 . . 15 20 . . ATEND . . GER GER GER . . VENDAS VENDAS . .

34

SELECT de valores calculados


+ Soma - Subtrao * / DIV MOD Multiplicao Diviso (quociente fracionrio) Diviso (Quociente Inteiro) Resto da diviso

Ganho total de cada pessoa do DEPT 20


SELECT ID, SALARIO, COMIS, SALARIO + COMIS FROM STAFF ID SALARIO COMIS WHERE DEPT = 20
----10 20 80 190 ------------18357.50 18171.25 13504.60 14252.75 ---------612.45 128.20 126.50

------------18783.70 13632.80 14379.25


35

ORDER BY por valor calculado


Exemplo 1:
SELECT NOME, SALARIO + COMIS FROM STAFF WHERE SALARIO + COMIS > 20000 ORDER BY 2 DESC
NOME --------------GRAHAM OLIVEIRA
-------------21200.30 20094.15

Exemplo 2:
SELECT CARGO, SALARIO + COMIS FROM STAFF ORDER BY CARGO, 2
36

Condies com valor calculado


Pessoa cujo salrio mais comisso excede $20.000
SELECT NOME, SALARIO + COMIS FROM STAFF WHERE SALARIO + COMIS > 20000

NOME --------------OLIVEIRA GRAHAM

-------------20094.15 21200.30

37

Operador de concatenao
string1 || string2 string1string2 ABC || XYZ ABCXYZ

TABELAX (colunas char: snom e nome)


SNOM JONES NOME JOHN MID P

MARQUES .

FRANCO .

X .

SELECT NOME + ',' + CARGO + '.' FROM STAFF

Resultado: JONES, JOHN P. MARQUES, FRANCO X. ...

38

Potrebbero piacerti anche