3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso...

49
EPUSP-PMR Prof. Dr. Marcos Tsuzuki 1 PROGRAMA 3.SQL Básico 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação

Transcript of 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso...

Page 1: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 1

PROGRAMA

• 3.SQL Básico• 3.1 Criação de tabelas• 3.2 Queries simples• 3.3 Subqueries• 3.4 Agregação

Page 2: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 2

3.SQL Básico

A linguagem SQL foi desenvolvida para o ambienterelacional, podendo ser adaptada a ambientes nãorelacionais;

A idéia original só previa o seu uso de formainterativa. Após sofrer alguns acréscimos,ela passou a ter capacidade de ser utilizadaem linguagens hospedeiras, tais como,COBOL, FORTRAN, C, etc...

Page 3: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 3

3.SQL Básico

SQL – Structured Query Language• Fundamentos no modelo relacional de Codd• Sua primeira versão SEQUEL (Structured

English Query Language) – definida porChamberlin

• Tornou-se ANSI (American NationalStandard Institute) em 1982.

Page 4: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 4

3.SQL Básico

Breve Histórico• SQL89

– Integrity Enhancement Feature (IEF)– Data Language Embedded SQL

• SQL92 (SQL2)– Grandes expansões; sinônimo de SQL

• SQL/CLI (95)• SQL3 (em andamento)

– recursão, triggers, objetos

Page 5: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 5

AVISOSintaxe Simplificada!

Page 6: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 6

3.1.Criação de Tabelas

CREATE TABLE

CREATE TABLE <table_name> ( <lista_colunas>)

<def_coluna>::= <nome> <tipo>

Page 7: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 7

3.1.Criação de Tabelas

Tipos de Dados ANSI• Bit• Character• Date• Decimal• Double Precision• Float• Integer• Interval

• Numeric• Real• Smallint• Timestamp• Time• Varbit• Varchar

Page 8: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 8

3.1.Criação de Tabelas

ExemploCREATE TABLE s_dept( id DECIMAL(7), name VARCHAR(25),

region_id DECIMAL(7))CREATE TABLE s_emp( id DECIMAL(7), name VARCHAR(25),

dept DECIMAL(7)salary DECIMAL(8,2)

)

Page 9: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 9

Tabela Cliente

CREATE TABLE CLIENTE (CODIGO_CLIENTE SMALLINT NOT NULL UNIQUE,NOME CLIENTE CHAR(20),ENDERECO CHAR(30),CIDADE CHAR(15),CEP CHAR(8),UF CHAR(2),CGC CHAR(20),IE CHAR(20),PRIMARY KEY (CODIGO_CLIENTE)

);

3.1.Criação de Tabelas

Page 10: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 10

Tabela Pedido

CREATE TABLE PEDIDO (NUM_PEDIDO INT NOT NULL UNIQUE,PRAZO_ENTREGA SNALLINT NOT NULL,CODIGO_CLIENTE SMALLINT NOT NULL,CODIGO_VENDEDOR SMALLINT NOT NULL,PRIMARY KEY (NUM_PEDIDO),FOREIGN KEY (CODIGO_CLIENTE) REFERENCES CLIENTE,FOREIGN KEY (CODIGO_VENDEDOR) REFERENCES VENDEDOR

);

3.1.Criação de Tabelas

Page 11: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 11

Tabela Item do Pedido

CREATE TABLE ITEM_DO_PEDIDO (NUM_PEDIDO INT NOT NULL UNIQUE,CODIGO_PRODUTO SMALLINT NOT NULL UNIQUE,QUANTIDADE DECIMAL,FOREIGN KEY (NUM_PEDIDO) REFERENCES PEDIDO,FOREIGN KEY (CODIGO_PRODUTO) REFERENCES PRODUTO,PRIMARY KEY (NUM_PEDIDO,CODIGO_PRODUTO)

);

3.1.Criação de Tabelas

Page 12: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 12

Tabela Vendedor

CREATE TABLE VENDEDOR (CODIGO_VENDEDOR SMALLINT NOT NULL UNIQUE,NOME_VENDEDOR CHAR(20),SALARIO_FIXO MONEY,FAIXA_COMISSAO CHAR(1),PRIMARY KEY (CODIGO_VENDEDOR)

);

3.1.Criação de Tabelas

Page 13: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 13

Tabela Produto

CREATE TABLE PRODUTO (CODIGO_PRODUTO SMALLINT NOT NULL UNIQUE,UNIDADE CHAR(3),DESCRICAO_PRODUTO CHAR(30),VAL_UNIT MONEY,PRIMARY KEY (CODIGO_PRODUTO)

);

3.1.Criação de Tabelas

Page 14: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 14

3.1.Destruição de Tabelas

DROP TABLE

DROP TABLE <nome>

Page 15: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 15

3.1.Alteração de Tabelas

ALTER TABLE

ALTER TABLE <nome> ADD <def_coluna>

ALTER TABLE <nome> DROP <coluna>

Page 16: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 16

3.1.População de Tabelas

INSERT INTO

INSERT INTO <nome>{ (lista_colunas) }VALUES ( <lista_valores> )

Page 17: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 17

3.1.População de Tabelas

Exemplo

• Insere o Departamento de ComprasINSERT INTO s_deptVALUES ( 1, “Compras”, 1 )

Page 18: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 18

3.2. Queries simples

SELECT

SELECT { ALL | DISTINCT } <lista_itens> FROM <lista_tabelas> WHERE <expressão_seleção>

Page 19: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 19

3.2. Queries simples

Projeção

<lista_itens> contém algumas colunas

Seleção

<expressão_seleção> seleciona itens

Page 20: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 20

3.2. Queries simples

Exemplos• Seleciona nomeSELECT nome FROM s_dept

• Seleciona tudoSELECT * FROM s_dept

• Seleciona nome de todos os Departamentos da região 3SELECT nome FROM s_deptWHERE region_id=3

• Seleciona o nome de todos os empregados da região 3SELECT s_emp.nome FROM s_emp, s_deptWHERE (s_dept.region_id=3 AND

s_emp.dept=s_dept.id)

Page 21: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 21

3.2. Queries simples

Operadores IN e NOT IN

WHERE <nome da coluna> IN <valores>WHERE <nome da coluna> NOT IN <valores>

Listar os vendedores que são da faixa de comissão A e B

SELECT NOME_VENDEDOR FROM VENDEDORWHERE FAIXA_COMISSAO IN (‘A’,’B’)

Page 22: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 22

3.2. Queries simples

Operadores IS NULL e IS NOT NULL

Mostrar os clientes que não tenham inscrição estadual

SELECT * FROM CLIENTE WHERE IE IS NULL

Page 23: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 23

3.2. Queries simples

Ordenando os dados selecionados

SELECT <NOME_COLUNA> FROM <TABELA>WHERE <CONDICOES> ORDER BY<NOME_COLUNA> ASC ou <NOME_COLUNA> DESC

Mostrar em ordem alfabética a lista de vendedores e seus respectivossalários fixos

SELECT NOME_VENDEDOR, SALARIO_FIXO FROMVENDEDOR ORDER BY NOME_VENDEDOR

Page 24: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 24

3.2. Queries simples

LIKE

WHERE <NOME_COLUNA> LIKE <VALOR>WHERE <NOME_COLUNA> NOT LIKE <VALOR>

% substitui uma palavra_ substitui um caracter

‘LAPIS%’ == ‘LAPIS PRETO’, ‘LAPIS CERA’, ‘LAPIS BORRACHA’‘BROCA N_’ == ‘BROCA N1’, ‘BROCA N2’, ‘BROCA N9’

Page 25: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 25

3.2. Queries simples

Listar os nomes, cidades e estados de todos os clientes,ordenados por estado e cidade de forma descendente

SELECT NOME_CLIENTE, CIDADE, UF FROMCLIENTE ORDER BY UF DESC, CIDADE DESC

Page 26: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 26

3.2. Queries simples - problemas

Listar todos os produtos com as respectivas descrições,unidades e valores unitários

SELECT DESCRICAO_PRODUTO, UNIDADE, VAL_UNIT FROMPRODUTO

Listar o nome do cliente com seu endereço e CGC

SELECT NOME_CLIENTE, ENDERECO, CGC FROM CLIENTE

Page 27: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 27

3.2. Queries simples - problemas

Listar todo o conteúdo de vendedor

SELECT * FROM VENDEDOR

Listar o NUM_PEDIDO, o COD_PRODUTO e aquantidade dos itens do pedido com a quantidade igual a35

SELECT NUM_PEDIDO, CODIGO_PRODUTO, QUANTIDADEFROM ITEM_PEDIDO WHERE QUANTIDADE = 35

Page 28: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 28

3.2. Queries simples - problemas

Listar os clientes que moram em NITEROI

SELECT NOME_CLIENTE FROM CLIENTE WHERE CIDADE =‘NITEROI’

Listar os produtos que tenham unidade igual a ‘M’ e valorunitário igual a R$ 1,05

SELECT DESCRICAO_PRODUTO FROM PRODUTO WHEREUNIDADE = ‘M’ AND VAL_UNIT = 1.05

Page 29: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 29

3.2. Queries simples - problemas

Listar os clientes e seus respectivos endereços, que moremem São Paulo ou estejam na faixa de CEP entre 30077-000 e 30079-000

SELECT NOME_CLIENTE, ENDERECO FROM CLIENTEWHERE (CEP >= ‘30077000’ AND CEP <= ‘30079000’) ORCIDADE = ‘SÃO PAULO’

Listar todos os pedidos que não tenham prazo de entregaigual a 15 dias

SELECT NUM_PEDIDO FROM PEDIDO WHERE NOT(PRAZO_ENTREGA = 15)

Page 30: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 30

3.2. Queries simples - problemas

Listar o código e a descrição dos produtos que tenham ovalor unitário na faixa de R$ 0,32 até R$ 2,00

SELECT CODIGO_PRODUTO, DESCRICAO_PRODUTO FROMPRODUTO WHERE VAL_UNIT BETWEEN 0.32 AND 2.00

Listar todos os produtos que tenham a sua unidadecomeçando por ‘K’

SELECT CODIGO_PRODUTO, DESCRICAO_PRODUTO FROMPRODUTO WHERE UNIDADE LIKE ‘K_’

Page 31: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 31

3.2. Queries simples - problemas

Listar os vendedores que não começam por ‘JO’

SELECT CODIGO_VENDEDOR, NOME_VENDEDOR FROMVENDEDOR WHERE NOME_VENDEDOR NOT LIKE ‘JO’

Listar a descrição e o valor unitário de todos os produtosque tenham a unidade ‘KG’, em ordem crescente devalor unitário

SELECT DESCRICAO, VAL_UNIT FROM PRODUTO WHEREUNIDADE = ‘KG’ ORDER BY 2 ASC

Page 32: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 32

3.2. Queries simples

UPDATE

UPDATE <tabela> SET <lista_atribuições> {WHERE <expressão_seleção>}

Page 33: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 33

3.2. Queries simples

Exemplos• Duplica todos os saláriosUPDATE s_empSET salario=salario*2

• Duplica o salário de todos os “Marcos”UPDATE s_empSET salario=salario*2WHERE nome=“Marcos”

Page 34: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 34

3.2. Queries simples - problemas

Alterar o valor unitário do produto parafuso de R$ 1.25para R$ 1.62

UPDATE PRODUTO SET VAL_UNIT = 1.62 WHEREDESCRICAO = ‘PARAFUSO’

Alterar o salário fixo de todos os vendedores em 27% maisuma bonificação de R$ 100,00

UPDATE VENDEDOR SET SALARIO_FIXO = (SALARIO_FIXO *1.27) + 100.00

Page 35: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 35

PRÁTICA

Queries Simples

Page 36: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 36

Prática: Queries simples

PRODUTO

OF

DETALHE

(1,n)

(1,n)(1,n)

(1,1)

IDNome

IDDueDate

IDTipo de operaçãoTempo

Page 37: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 37

Prática: Queries simples

1.Representar o modelo E-R no modelo relacional2.Codificar a criação das tabelas3.Codificar a população das tabelas4.Executar as seguintes queries:

4.1.Quais são todos os produtos4.2.Quais são todas as OF?4.3.Quais são todas as OF de um dado produto?4.4.Quais são todos os detalhes de uma OF de um dadoproduto?

Page 38: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 38

3.3.Subqueries

CONCEITO

Uma subquery é um SELECT inserido em umacláusula de outro comando SQL

SELECT { ALL | DISTINCT } <lista_itens> FROM <lista_tabelas> WHERE <expressão_seleção>

<expressão_seleção> ::= <expr> <operator> (SELECT ....)

Page 39: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 39

3.3.Subqueries

CONCEITO(ii)

<expressão_seleção> ::= <expr> <operator> (SELECT ....)

<operator>::= [ >|=|>=|<|<>|<= ] | [ IN | NOT IN ]

Page 40: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 40

3.3.Subqueries

Exemplo(i): Subquery retorna uma única linha

Obter todos os departamentos que se encontram namesma região que o departamento de Compras.

SELECT nome FROM s_deptWHERE region_id =

(SELECT region_id FROM s_deptWHERE nome = ‘Compras’)

Page 41: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 41

3.3.Subqueries

Exemplo(ii): Subquery retorna várias linhas

Obter todos os funcionários de todos osdepartamentos que se encontram na mesma região

SELECT nome FROM s_empWHERE dept IN

(SELECT dept FROM s_deptWHERE region_id=3)

Page 42: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 42

3.4.Agregações

Operadores de agregação

• Count• AVG• MIN• MAX• SUM

Page 43: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 43

3.4.Agregações

Exemplo

• Determina o número de funcionáriosSELECT count(*) FROM s_emp;

• Determina o salário médioSELECT AVG(salary) FROM s_emp;

Page 44: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 44

3.4.Agregações

Agrupamento

GROUP BY <critério_agrupamento>

Formação de grupos

Uso: junto com SELECT

Page 45: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 45

3.4.Agregações

Exemplo

• Calcular o total de salários por departamentoSELECT dept, SUM(salary) FROM s_empGROUP BY dept

Page 46: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 46

3.4.Agregações

Pertinência

HAVING <critério_pertinência>

Seleção baseada em alguma propriedade do grupo (ou seja,após o cálculo do GROUP BY)

Uso: junto com SELECT

Page 47: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 47

3.4.Agregações

Exemplo

• Calcular o total de salários por departamento detodos os departamentos com folha superior ao deum dado departamento (no caso, o 32)

SELECT dept, SUM(salary) FROM s_empGROUP BY deptHAVING AVG(salary) >

(SELECT AVG(salary) FROM s_empWHERE dept = 32)

Page 48: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 48

PRÁTICA

Subqueries e Agregações

Page 49: 3.1 Criação de tabelas • 3.2 Queries simples • 3.3 ...sites.poli.usp.br/d/pmr2490/Curso SQL-2-PMR.pdfPrática: Queries simples 1.Representar o modelo E-R no modelo relacional

EPUSP-PMR Prof. Dr. Marcos Tsuzuki 49

Prática: Subqueries e agregações

1.Executar as seguintes queries:1.Dados um produto, quantas OF há?2.Admitindo que cada OF tenha um campo “Duração”,qual é a duração média de uma OF?3.Quais são todas as OF com operaçãoTORNEAMENTO, agrupadas por Produto?