allynson praxedes soares [email protected] java avançado desenvolvendo um script sql

27
Allynson Praxedes Soares [email protected] Java Avançado Desenvolvendo um script SQL

Upload: internet

Post on 21-Apr-2015

138 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares

[email protected]

Java Avançado

Desenvolvendo um script SQL

Page 2: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Linguagem de consulta estruturada• É o padrão oficial de linguagem em

ambiente relacional.• Possui comandos de:

– Definição de dados– Manipulação de dados– Consulta

Page 3: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

Page 4: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Criação de Tabelas– CREATE TABLE <tabela> (<descrição dos atributos> <descrição das chaves>)

• Descrição dos atributos: lista dos atributos com respectivos tipos de dados: smallint, char, money, varchar, integer, decimal, float, real, date, time, timestamp, logical.

Page 5: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• A chave primária deve ser declarada comonot null unique ou PRIMARY KEY (<atributos>)

• Descrição das chaves: lista das chaves estrangeiras na forma:

FOREIGN KEY (<atributo>)

REFERENCES <tabela> (<atributo>)

Page 6: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Exemplo

CREATE TABLE Empregado

(Cad smallint not null,

Nome char (20),

Sexo char,

Salario decimal (10,2),

Num-Dep integer,

Cad-Spv smallint,

PRIMARY KEY (Cad),

FOREIGN KEY Num-Dep REFERENCES Departamento (Numero),

FOREIGN KEY Cad-Spv REFERENCES Empregado (Cad))

Page 7: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Destruição de tabelas– DROP TABLE <tabela>

• Elimina a tabela que foi previamente criada– Exemplo:

• DROP TABLE Empregado

Page 8: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Selecionando atributos (Projeção):

– SELECT <lista de atributos> FROM <tabela>

• Exemplo: Listar nome e salário de todos os empregados

– SELECT Nome, Salario FROM Empregado

• SELECT * FROM <tabela>

Page 9: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Selecionando tuplas da tabela– SELECT <lista de atributos> FROM <tabela>

WHERE <condição>

– onde condição:• <nome atributo> <operador> <valor>

• Operadores Relacionais: =, < >, <, <=, >, >=

• Operadores Lógicos: AND, OR e NOT

Page 10: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Exemplos:• Listar nome e sexo dos empregados do

departamento 15

– SELECT Nome, Sexo FROM Empregado WHERE Num-Dep = 15

• Listar nome e sexo dos empregados do departamento 15 com salário > R$ 1.000,00

– SELECT Nome, Sexo FROM Empregado WHERE Num-Dep = 15 AND Salario > 1000

Page 11: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Operadores BETWEEN e NOT BETWEEN:

• Substituem o uso dos operadores <= e >=... WHERE <nome atributo> BETWEEN<valor1> and <valor2>

• Exemplo:• Listar os empregados com salário entre R$ 1.000,00 e

R$ 2.000,00SELECT * FROM EmpregadoWHERE Salario BETWEEN 1000 and 2000

Page 12: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Operadores LIKE e NOT LIKE: Só se aplicam sobre atributos do tipo char.

Operam como = e < >, utilizando os símbolos: % (substitui uma palavra) e _ (substitui um caracter)

...WHERE <nome atributo> LIKE <valor1>

• Exemplo:Listar os empregados que têm como primeiro nome ‘José‘

SELECT Nome FROM EmpregadoWHERE Nome LIKE ‘José%’

Page 13: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Operadores IN e NOT IN: Procuram dados que estão ou não contidos em

um dado conjunto de valores... WHERE <nome atributo> IN <valores>

• Exemplo:

Listar o nome e data de nascimento dos dependentes com grau de parentesco ‘M’ ou ‘P’

SELECT Nome, Data-Nasc FROMDependentes WHERE Grau-P IN (‘M’, ‘P’)

Page 14: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Ordenando os dados selecionados (ORDER BY)

SELECT <lista atributos> FROM <tabela>[WHERE <condição>] ORDER BY<Nome atributo> {ASC | DESC}

Page 15: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Exemplo:Listar todos os empregados ordenados ascendentemente por nome

SELECT * FROM Empregado ORDER BY Nome

Listar todos os empregados ordenados descendentemente por salário

SELECT * FROM Empregado

ORDER BY Salario DESC

Page 16: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Utilizando funções sobre conjuntosComandos: MAX, MIN, SUM, AVG, COUNT

• Exemplos:

Mostrar o valor do maior salário dos empregados e o nome do empregado

SELECT Nome, Salario FROM EmpregadoWHERE Salario IN (SELECT MAX (Salario)FROM EMPREGADO)

Page 17: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

Mostrar qual o salário médio dos empregados

• SELECT AVG (Salario) FROM Empregado

Quantos empregados ganham mais de R$1.000,00?

SELECT COUNT (*) FROM EmpregadoWHERE Salario > 1000

Page 18: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Cláusula DISTINCTElimina tuplas duplicadas do resultado de uma

consulta

• Exemplo:

Quais os diferentes salários dos empregados?

SELECT DISTINCT Salario FROM Empregado

Page 19: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Recuperando dados de várias tabelas (JOIN)Citar as tabelas envolvidas na cláusula FROM Qualificadores de nomes: para referenciar o nome do empregado, Empregado.Nome

• Exemplos:

Listar o nome do empregado e do departamento onde está alocado

SELECT Empregado.Nome,Departamento.Nome

FROM Empregado, Departamento WHERE

Empregado.Num-Dep = Departamento.Numero

Page 20: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

Listar os departamentos que têm projetos com número superior a 99 e localizados em RJ ou SP ordenados por nome de departamento

SELECT Departamento.NomeFROM Departamento, ProjetoWHERE Projeto.Local IN (‘RJ’, ‘SP’)AND Projeto.Numero > 99AND Projeto.Num-Dep=Departamento.NumeroORDER BY Departamento.Nome

Page 21: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

Listar o nome dos empregados, com seu respectivo departamento que trabalhem mais de 20 horas em algum projeto

SELECT Empregado.Nome, Departamento.NomeFROM Empregado, Departamento, Trabalha-emWHERE Trabalha-em.Horas > 20AND Trabalha-em.Cad-Emp = Empregado.CadAND Empregado.Num-Dep = Departamento.Numero

Page 22: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Adicionando tupla à tabela

INSERT INTO <tabela> (<lista de atributos>)

VALUES (<valores>)

INSERT INTO Empregado(Cad, Nome,

Sexo, Salario, Num_Dep, Cad_Supv)

VALUES (015, ‘José da Silva’, ‘M’, 1000, 1,

020)

Page 23: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Adicionando tuplas usando SELECT

INSERT INTO <tabela> (<lista deatributos>) SELECT <lista de atributos>FROM <tabela> WHERE <condição>

Page 24: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Atualizando tuplas

UPDATE <nome tabela> SET <nome

atributo> = valor WHERE <condição>

UPDATE Empregado SET Salario =

1500 WHERE Cad = 015

Page 25: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

SQL

• Apagando tuplas da tabela

DELETE FROM <tabela> WHERE

<condição>

DELETE FROM Empregado WHERE

Salario > 5000

Page 26: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

Ambiente de Produção

• Rodar o script criado no DB Design na aula passada no servidor MySQL executar comandos de DML e Query Language

Page 27: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Desenvolvendo um script SQL

Allynson Praxedes Soares – [email protected]

Ambiente de Produção

• Acessar um servidor MySQL remoto através do SQLyoug