Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduo
SQL Structured Query Language Linguagem declarativa noprocedural Desenvolvidapelo laboratrio da IBM em San Jose anos 60/70 Inicialmente chamada SEQUEL (Structured English QUEry Language) Criada como interface entre usurios e o primeiro SGBDR SYSTEM R
Introduo
SQL Structured Query Language Padro industrial que atinge grande parte do mercado de SGBDs Atrativo: pequena quantidade de comandos para realizar uma grande quantidade de operaes necessrias para definio e manipulao de relaes Simplicidade Grande poder de consulta Padro facilita migrao
Introduo
Recursos: DDL e DML Criao de vises (views) Especificaes de segurana e autorizaes Definio de restries de integridade Controle de transao Regras para integrao com linguagens de programao Regras e triggers
Introduo
Dois conjuntos principais de comandos: DDL Data Definition Language: Especificao do esquema da base de dados DML Data Manipulation Language: insero, remoo, alterao e consultas na instncia da base de dados
DDL
Alguns comandos da DDL CREATE SCHEMA CREATE TABLE ALTER TABLE DROP TABLE CREATE DOMAIN DROP DOMAIN CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX
Facilita a redefinio de tipos de dados de um domnio utilizados por muitos atributos de um esquema, alm de melhorar a legibilidade do esquema.
Por exemplo: CREATE DOMAIN TIPO_ID AS CHAR(9);
10
11
12
13
14
15
16
17
18
DML - Insero
INSERT insere uma ou mais tuplas em uma tabela
Insero de 1 tupla: INSERT INTO tabela [(atrib1,atrib2,...)] VALUES (valor1, valor2,...) Insero de mltiplas tuplas: INSERT INTO tabela [(atrib1,atrib2,...)] <comando SELECT>
19
DML - Insero
Exemplo 1 Insero de uma nica tupla: Inserir 3 as tuplas na relao PROJETO:
INSERT INTO PROJETO VALUES ('ProductX', '1', 'Bellaire', '5') INSERT INTO PROJETO VALUES ('ProductY', '2', 'Sugarland', '5') INSERT INTO PROJETO VALUES ('ProductZ', '3', 'Houston', '5')
O terceiro valor 5 corresponde ao departamento 5. Logo, o departamento 5 deve existir na relao DEPARTAMENTO para que as inseres tenham sucesso; pois caso
20
DML - Insero
Exemplo 2 Insero de mltiplas tuplas: Popular uma tabela temporria DEPTS_INFO:
21
DML - Alterao
UPDATE modifica o valor de um atributo em uma ou mais tuplas da tabela
Por exemplo, UPDATE tabela SET atributo1 = <valor ou expresso>, atributo2 = <valor ou expresso>, WHERE <condio de localizao>; UPDATE PROJETO SET PLOCALIZACAO = 'Bellaire', DNUM = 5 WHERE PNUMERO=10;
22
DML - Remoo
DELETE remove uma ou mais tuplas da tabela.
Exemplos: DELETE FROM tabela1 [FROM tabela2] WHERE <condio de localizao>]; DELETE FROM EMPREGADO WHERE ID = 1234; DELETE FROM EMPREGADO WHERE DNUM IN (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOME='Research'); DELETE FROM EMPLOYEE;
23
DML - Consulta
SELECT Comando de consulta.
Forma geral: SELECT [ DISTINCT | ALL ] <lista de atributos> FROM <lista de tabelas> [ WHERE <condies> ] [ GROUP BY atributo ] [ HAVING <condies> ] [ ORDER BY atributo [ ASC | DESC ] ];
24
DML - Consulta
SELECT seleciona O QUE se deseja na tabela resultado:
<lista de atributos> ou * (para todos os atributos) ALL inclui tuplas duplicadas ( o default) DISTINCT elimina tuplas duplicadas FROM DE ONDE retirar os dados necessrios WHERE CONDIES de seleo dos resultados.
25
26
Assim, uma consulta com apenas uma relao na clusula FROM similar a um par de operaes SELECTPROJECT da lgebra Relacional. A diferena que podemos obter tuplas repetidas no resultado.
Sistemas de Banco de Dados
2009 by Rafael Alexandre
27
28
29
30
31
32
ALIASES
Algumas consultas precisam referenciar duas vezes a mesma relao
Em alguns casos, pseudnimos (aliases) so atribudos ao nome da relao Por exemplo, considere a seguinte consulta: Para cada empregado, recupere o nome do empregado e onome de seu supervisor imediato.
33
ALIASES
Na consulta anterior, E e S so chamados de aliases ou variveis de tupla da relao EMPREGADO.
Podemos pensar em E e S como duas cpias distintas de EMPREGADO: E representa os supervisionados e S representa os supervisores. Aliases podem ser usados em qualquer consulta SQL. Pode-se, tambm, usar a palavrachave AS:
34
35
extremamente importante no negligenciar a especificao de qualquer condio de seleo ou de juno na clusula WHERE; sob a pena de gerar resultados incorretos e volumosos.
36
O uso do *
Um * usado para recuperar todos os valores de atributos da tupla selecionada.
37
O uso do *
A SQL no trata uma relao como um conjunto; tuplas duplicadas podem ocorrer.
Para eliminar tuplas duplicadas no resultado de uma consulta, a palavra DISTINCT usada. A primeira consulta abaixo pode gerar tuplas duplicadas, mas a segunda no:
38
Operao de conjunto
Algumas operaes de conjunto foram incorporados linguagem SQL.
Existe uma operao de Unio e, em algumas verses da SQL, existem as operaes de Subtrao e Interseco. As relaes resultantes dessas operaes so sempre conjunto de tuplas; tuplas duplicadas so eliminadas do resultado. O conjunto de operaes aplicamse somente s relaes que so compatveis
39
Operao de conjunto
Listar os nmeros de projetos em que o empregado de sobrenome Smith trabalhe ou que sejam controlados por algum departamento gerenciado pelo empregado de sobrenome Smith:
40
Operao de conjunto
A SQL tambm possui operaes sobre multiconjuntos (conjuntos que permitem repetio de elementos) UNION ALL EXCEPT ALL INTERSECT ALL.
41
Consultas aninhadas
Uma consulta SELECT completa, chamada de consulta aninhada, pode ser especificada dentro da clusula WHERE de uma outra consulta, chamada consulta externa. Por exemplo: Recupere o nome e o endereo de todos os empregados que rabalham para o departamento de Pesquisa.
42
43
44
Conjuntos explcitos
possvel utilizar um conjunto de valores explicitamente enumerado na clusula WHERE ao invs de utilizar uma consulta aninhada.
Por exemplo: Recupere o ID de todos os empregados que trabalham nos projetos de nmeros
45
46
47
Juno de relaes
Pode se especificar uma juno de relaes na clusula FROM.
A juno de relaes uma relao como outra qualquer, mas o resultado de uma juno. Permite que o usurio especifique tipos diferentes de junes ("theta" JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN, etc).
48
Juno de relaes
Por exemplo:
49
Juno de relaes
Por exemplo:
50
Juno de relaes
Por exemplo:
51
Funes agregadas
A SQL possui as seguintes funes agregadas: COUNT, SUM, MAX, MIN e AVG
Exemplo: Encontrar o maior salrio, o menor salrio, e a mdia salarial de todos os empregados.
52
Funes agregadas
Exemplo: Recuperar o total de empregados da companhia (Consulta A) e o nmero de empregados do departamento Pesquisa
53
Agrupamento
Como na extenso da lgebra Relacional, a SQL tem uma clusula GROUP BY para especificar os atributos de agrupamento, que devem aparecer na clusula SELECT. Por exemplo: Para cada departamento, recuperar o seu nmero, a quantidade de empregados que possui e a sua mdia salarial.
54
Agrupamento
Algumas vezes queremos recuperar os valores das funes agregadas que satisfaam a certas condies A clusula HAVING usada para especificar essa condio Por exemplo: Para cada projeto em que trabalhem mais de dois empregados, recupere o nmero do projeto, o nome do projeto e o nmero de empregados que trabalham no projeto.
55
Comparao de substrings
O operador de comparao LIKE usado para comparar partes de uma string Os dois caracteres reservados so usados: O '%' (ou '* em algumas implementaes) pesquisa um nmero arbitrrio de caracteres O '_ pesquisa um nico caractere arbitrrio. Por exemplo: Recupere todos os empregados que morem em Houston, Texas. Aqui, o valor do atributo endereo deve conter a substring 'Houston,TX'.
56
Comparao de substrings
Encontre todos os empregados que nasceram durante a dcada de 50.
Se o caractere % ou _ for necessrio como um caractere normal de uma string, ele deve ser precedido por um caractere de escape. A string AB_CD%EF deve ser escrita como: AB\_CD\%EF.
57
Operaes aritmticas
Os operadores aritmticos padro +, -, * e / podem ser aplicados valores numricos como um resultado de uma consulta SQL. Por exemplo: Recupere todos os empregados (nome e sobrenome) e seus respectivos salrios que trabalham no projeto ProdutoX com um aumento de 10%.
58
Order By
A clusula ORDER BY usada para ordenar tuplas resultantes de uma consulta com base nos valores de alguns atributos. Por exemplo: Recuperar a lista de empregados e dos projetos em que eles trabalhem, ordenados pelo departamento do empregado e cada departamento ordenado alfabeticamente pelo sobrenome do empregado.
59
Order By
A ordem padro ascendente, mas podemos utilizar a palavra-chave DESC para especificar que queremos a ordem descendente. A palavra-chave ASC pode ser usada para especificar explicitamente a ordem ascendente.
60