aula 08 - sql - dml

38
Structured Query Language (SQL) PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Upload: britomanu

Post on 08-Mar-2015

110 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aula 08 - SQL - Dml

Structured Query Language(SQL)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 2: Aula 08 - SQL - Dml

• Inclusão de dados:INSERT INTO NOME_TABELA (COL1,

COL2,...,COLN)VALUES (VAL1, VAL2,...,VALN);

• Exemplo:Insert Into PESSOA (CPF, NOME, SEXO)values ('11122233344','Paulo Abreu', 'M');

Insert Into PESSOA (CPF, NOME, SEXO)Select CPF, NOME, SEXO From Aluno

2

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 3: Aula 08 - SQL - Dml

• Consulta simples:SELECT COL1, COL2,...,COLNFROM NOME_TABELAWHERE (expressão lógica)GROUP BY (atributos de agrupamento)HAVING (condição de agrupamento)ORDER BY (lista de atributos)

• Where: filtra antes do agrupamento.• Having: filtra depois do agrupamento.

3

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 4: Aula 08 - SQL - Dml

• Exemplo:Select * From PESSOA;

Select CPF, NOME, SEXO, IDADEFrom PESSOAWhere sexo = ‘M’ or sexo = ‘F’;ouWhere sexo in (‘M’, ‘F’);

Select CPF, NOME, SEXO, IDADEFrom PESSOAWhere IDADE > ANY (10,20,30);ouWhere IDADE > ALL (10,20,30);

4

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 5: Aula 08 - SQL - Dml

5

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 6: Aula 08 - SQL - Dml

• Exemplo:

SELECT * FROM DEPTWHERE DNAME LIKE '/_%' ESCAPE '/‘

Select CPF, NOME, SEXOFrom PESSOAWhere nome like ‘P%’; (‘[CK]%’) (‘[C-K]%’ intervalo) (not like)

Select CPF, NOME, SEXOFrom PESSOAWhere idade is null; (not null)

Select CPF, NOME, SEXOFrom PESSOAWhere idade >= 10 and idade <= 20; (between 10 and 20)

6

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 7: Aula 08 - SQL - Dml

• Exemplo com Alias (apelidos):Select CPF as Meu_CPFFrom PESSOA

Select CPF, NOME, SEXOFrom PESSOA as PWhere P.idade is null;

Select NOME, IDADE + 5 AS NOVA_IDADEFrom PESSOA;

7

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 8: Aula 08 - SQL - Dml

• Atualização:UPDATE NOME_TABELASET COL1=VAL1, COL2=VAL2,...,COLN=VALNWHERE (expressão lógica)

• Exemplo:UPDATE PESSOASET idade = 30WHERE nome = ‘Paulo’;

8

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 9: Aula 08 - SQL - Dml

• Deleção:DELETE FROM NOME_TABELAWHERE (expressão lógica)

• Exemplo:DELETE FROM PESSOAWHERE nome = ‘Paulo’;

• TRUNCATE TABLE NOME_TABELA (sem rollback):

– O comando TRUNCATE remove rapidamente todas as linhas da tabela.Tem o mesmo efeito do comando DELETE sem a cláusula WHERE, mascomo não varre a tabela é mais rápido. É mais vantajoso para tabelasgrandes.

– O comando TRUNCATE não pode ser utilizado dentro de um bloco detransação (delimitado por BEGIN/COMMIT), porque não existe apossibilidade de desfazê-lo.

9

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 10: Aula 08 - SQL - Dml

• Funções Agregadas:SELECT COUNT(*) FROM PESSOA;SELECT COUNT(NOME) FROM PESSOA;

SELECT SUM(idade) FROM PESSOA;SELECT AVG(idade) FROM PESSOA;SELECT MAX(idade) FROM PESSOA;SELECT MIN(idade) FROM PESSOA;

10

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 11: Aula 08 - SQL - Dml

• Tabela Livro:(Codigo, Titulo, Preco, Lancamento, Assunto,

Editora)Assunto References Assunto(Sigla)Editora References Editora(Codigo)

• Tabela Assunto:(Sigla, Descricao)

• Tabela Editora:Editora(Codigo, Nome) 11

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 12: Aula 08 - SQL - Dml

12

Linguagem de Manipulação de Dados (DML)

Editora Assunto

Livro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 13: Aula 08 - SQL - Dml

• Funções Agregadas:SELECT ASSUNTO, AVG(PRECO)FROM LIVROGROUP BY ASSUNTO;– Preço médio dos livros por assunto

SELECT ASSUNTO, COUNT(*)FROM LIVROGROUP BY ASSUNTO;– Quantidade de livros por assunto

13

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 14: Aula 08 - SQL - Dml

• Funções Agregadas:SELECT ASSUNTO, MAX(PRECO)FROM LIVROGROUP BY ASSUNTO;– Preço do livro mais caro de cada assunto.

SELECT ASSUNTOFROM LIVROGROUP BY ASSUNTOHAVING AVG(PRECO) > 50;– Assuntos cuja média de preço dos livros seja maior

que R$ 50,00.

14

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 15: Aula 08 - SQL - Dml

• Funções Agregadas:SELECT ASSUNTO, COUNT(*)FROM LIVROGROUP BY ASSUNTOHAVING COUNT(*) > 2;– Assuntos que possuem pelo menos três livros.

15

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 16: Aula 08 - SQL - Dml

• Eliminação de Repetições:SELECT DISTINCT ASSUNTO AS ASSUNTOFROM LIVRO;– Assuntos distintos.

SELECT COUNT (ASSUNTO) AS Qtd_ASSUNTOFROM LIVRO;– Quantidade de ocorrência de assuntos.

SELECT COUNT (DISTINCT ASSUNTO) ASDif_ASSUNTO

FROM LIVRO;– Quantidade de assuntos distintos. 16

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 17: Aula 08 - SQL - Dml

• Ordenação de Resultados:SELECT ASSUNTO, TITULO, PRECOFROM LIVROORDER BY ASSUNTO ASC, PRECO DESC;

SELECT ASSUNTO, TITULO, PRECOFROM LIVROORDER BY ASSUNTO, PRECO DESC;

SELECT ASSUNTO, TITULO, PRECOFROM LIVROORDER BY 2, PRECO DESC;

17

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 18: Aula 08 - SQL - Dml

• Funções para cadeias de caracteres:- LOWER(col) = apresenta o resultado em minúsculas.

- UPPER (col)= apresenta o resultado em maiúsculas.

- INITCAP (col)= apresenta o resultado com a primeira letra maiúscula decada palavra.

- REPLACE (col, cadeia1, cadeia2)= Substitui um caractere ou caracteresde uma cadeia com 0 ou mais caracteres.

Ex: REPLACE(nome, ‘be’, ‘da’) – Abel Adal

- SUBSTR (col, inicio, qtd)= Obtém parte de uma cadeia.

Ex: SUBSTR(nome,2,2) – Abel be

- CONCAT (col1, col2)= Devolve “col1" concatenada com “col2".

18

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 19: Aula 08 - SQL - Dml

• Funções para cadeias de caracteres:- LPAD (col, tam, ‘char’)= Adiciona caracteres à esquerda do resultado até que

tenha uma certa longitude.

- RPAD (col, tam, ‘char’)= Adiciona caracteres à direita do resultado até que tenhauma certa longitude.

Ex: LPAD(nome, 10, ‘*’) = ******Abel

Ex: RPAD(nome, 10, ‘*’) = Abel******

- LTRIM (col, ‘chars’)= Suprime um conjunto de caracteres à esquerda doresultado.

- RTRIM (col, ‘chars’)= Suprime um conjunto de caracteres à direita da cadeia.

Ex: LTRIM(nome, ‘a’) = Abel - bel

Ex: RTRIM(nome, ‘el’) = Abel - Ab

19

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 20: Aula 08 - SQL - Dml

• Funções para números:• ABS(n)= Devolve o valor absoluto de (n).• CEIL(n)=Obtém o valor inteiro imediatamente superior ou

igual a "n".• FLOOR(n) = Devolve o valor inteiro imediatamente inferior

ou igual a "n".• MOD (m, n)= Devolve o resto resultante de dividir "m" por

"n".• NVL (col, valor)= Substitui um valor nulo por outro valor.• NULLIF(col, valor) = retorna NULL se col = valor;• POWER (m, exponente)= Calcula a potência de um

número.• SQRT(n)= Devolve a raiz quadrada de "n". 20

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 21: Aula 08 - SQL - Dml

• Funções para conversão de tipos:– CAST– Sintaxe:

• CAST(dado_origem as tipo_dado_destino)

SELECT CAST (AVG(PRECO) AS DECIMAL(10,2))

FROM PRODUTO;

SELECT CAST (’11/02/2002’ AS DATE)FROM DUAL; 21

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 22: Aula 08 - SQL - Dml

• Junção Interna:– Select Titulo, Descricao

From Livro INNER JOINAssuntoon Assunto = SiglaWhere Preco > 100

– Select Nome, TituloFrom LivroINNER JOIN Editora Eon Editora = E.Codigo

INNER JOIN Assuntoon Assunto = Sigla 22

Linguagem de Manipulação de Dados (DML)

Select Titulo, DescricaoFrom Livro, AssuntoWhere Assunto = Siglaand Preco > 100

Select Nome, IdadeFrom PessoaINNER JOIN GenteUSING (CPF)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 23: Aula 08 - SQL - Dml

• Junção Externa à Esquerda:– Select *

From Livro li LEFT OUTER JOIN Assuntoaon li.cod_assunto = a.cod_assunto

23

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 24: Aula 08 - SQL - Dml

• Junção Externa à Direita:– Select *

From Livro li RIGHT OUTER JOINAssunto aon li.cod_assunto = a.cod_assunto

24

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 25: Aula 08 - SQL - Dml

• Junção Externa Completa:– Select *

From Livro li FULL OUTER JOIN Assunto aon li.cod_assunto = a.cod_assunto

25

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 26: Aula 08 - SQL - Dml

• Junção Cruzada (Produto Cartesiano):– Select Cod_Pac, Nome_Pac, Cod_Med, Nome_Med

From Paciente CROSS JOIN Medico

26

Linguagem de Manipulação de Dados (DML)

PACIENTE

MEDICO

PACIENTE X MEDICO

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 27: Aula 08 - SQL - Dml

• Subconsultas não-correlacionadas:– SELECT Nome

FROM EditoraWHERE Codigo IN (SELECT Editora

FROM LivroWHERE Lancamento IS NOT NULL)

– Nome das editoras que já lançaram livros.

27

Linguagem de Manipulação de Dados (DML)

EditoraLivro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 28: Aula 08 - SQL - Dml

• Subconsultas não-correlacionadas:– SELECT Descricao

FROM AssuntoWHERE Sigla NOT IN (SELECT Assunto

FROM LivroWHERE Lancamento IS NOT NULL)

– Assuntos que não foram lançados livros.

28

Linguagem de Manipulação de Dados (DML)

Livro Assunto

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 29: Aula 08 - SQL - Dml

• Subconsultas correlacionadas:– SELECT Nome

FROM Editora EDWHERE EXISTS (SELECT Editora

FROM Livro LWHERE Lancamento IS NOT NULLAND ED.Codigo = L.Editora)

29

Linguagem de Manipulação de Dados (DML)

29

EditoraLivro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 30: Aula 08 - SQL - Dml

• Subconsultas correlacionadas:– SELECT Descricao

FROM Assunto AWHERE NOT EXISTS (SELECT Assunto

FROM Livro LWHERE Lancamento IS NOT NULLAND A.Sigla = L.Assunto)

30

Linguagem de Manipulação de Dados (DML)

Livro Assunto

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 31: Aula 08 - SQL - Dml

• União:– SELECT Titulo

FROM LivroWHERE Assunto = ‘B’

Union [ALL] (com linhas repetidas)SELECT TituloFROM LivroWHERE Assunto = ‘P’

31

Linguagem de Manipulação de Dados (DML)

Livro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 32: Aula 08 - SQL - Dml

• União:– SELECT *

FROM LivroWHERE Assunto = ‘B’

UNION CORRESPONDING BY (Nome, Autor, Data_Lancamento)SELECT *FROM ObraWHERE Area_Concentracao = ‘P’;

32

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 33: Aula 08 - SQL - Dml

• Interseção:– SELECT Titulo

FROM LivroWHERE Assunto IN (‘B’, ‘R’)

INTERSECTSELECT TituloFROM LivroWHERE Assunto IN (‘B’, ‘P’)

33

Linguagem de Manipulação de Dados (DML)

Livro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 34: Aula 08 - SQL - Dml

• Diferença:– SELECT Titulo

FROM LivroWHERE Assunto IN (‘B’, ‘R’)

EXCEPTSELECT TituloFROM LivroWHERE Assunto IN (‘B’, ‘P’)

34

Linguagem de Manipulação de Dados (DML)

Livro

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 35: Aula 08 - SQL - Dml

• Comando MERGE (UPSERT):MERGE INTO Cliente CUSING AUTOR AON (A.CPF = C.CPF)WHEN MATCHED THEN

UPDATE SET C.NOME = A.NOMEC.ENDERECO = A.ENDERECOC.DATA_NASCIMENTO = A. DATA_NASCIMENTO

WHEN NOT MATCHED THENINSERT (CODIGO, NOME, CPF, ENDERECO, DATA_NASCIMENTO)VALUES (A.MATRICULA, A.NOME, A.CPF, A.ENDERECO,

A.DATA_NASC)

• Atualização da tabela Cliente a partir da tabela Autor35

Linguagem de Manipulação de Dados (DML)

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 36: Aula 08 - SQL - Dml

36

Índice sobre campo chaveCREATE INDEX ind-nome ON EMPREGADO (CPF);

DROP INDEX ind-nome ON tabela-nome;

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 37: Aula 08 - SQL - Dml

37

Controle de Segurança em SQLGRANT CREATE TAB ON DATABASE TO usuario;

GRANT INSERT, DELETE ON EMPREGADO, PROJETO TO usuario;

GRANT SELECT ON EMPREGADO TO usuario;

GRANT CONTROL ON INDEX ind-dep TO usuario1, usuario2;

GRANT ALL PRIVILEGES ON EMPREGADO TO usuario1;

CREATE ROLE role1;

GRANT role1 TO usuario1;

REVOKE role1 FROM usuario1;

REVOKE CONTROL ON INDEX ind-dep FROM usuario2;

REVOKE DELETE ON EMPREGADO FROM usuario2;

REVOKE ALL PRIVILEGES ON EMPREGADO FROM usuario1;

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com

Page 38: Aula 08 - SQL - Dml

PDF Creator - PDF4Free v2.0 http://www.pdf4free.com