Anda di halaman 1dari 15

Linguagem de Consulta - SQL

 SQL Structured Query Language

 Linguagem de Consulta Estruturada;


 Originou-se da linguagem SEQUEL (1974);
 Revisada e chamada de SQL em 1976/77;
 Em 1986, padronizada pelo ANSI/ISO - chamada SQL-86;
 Em 1987 a IBM lana seu prprio padro - SAA-SQL;
 Criada extenso para o padro SQL - a SQL-89, em 1989;
 Verso em uso do padro ANSI-ISO: SQL-92;
 Em 1999, aprovada SQL-3.

Linguagem de Consulta - SQL


 Os comandos SQL podem ser agrupados em algumas
classes:

 Linguagem de Definio de Dados (DDL): proporciona


comandos para definio, excluso e modificao de
relaes (tabelas), bem como definio de ndices;
 Linguagem de Manipulao de Dados (DML):
linguagem de consulta baseada em lgebra e clculo
relacional. Engloba tambm comandos para insero,
excluso e modificao de tuplas;
 Outras: DML incorporada, definio de vises,
autorizao, integridade e controle de transaes.
2

1
Linguagem de Consulta - SQL

Autor (1,1)
Escreve
Exemplo Modelo
Entidade-Relacionamento
cod_autor
nome
nascimento (1,n)
titulo
cod_autor
Livro cod_editora
valor
(1,n) publicacao
volume
cod_editora
razao
Publicado Editora endereco
(1,1)
CGC
cidade
3

Linguagem de Consulta - SQL


Exemplo Modelo Relacional

AUTOR ( COD_AUTOR, NOME, NASCIMENTO)

LIVRO (TITULO, COD_AUTOR, COD_EDITORA,


VALOR REAL, PUBLICACAO, VOLUME)
Cod_Autor referencia AUTOR
Cod_Editora referencia EDITORA

EDITORA( COD_EDITORA, RAZAO, CGC, ENDERECO,


CIDADE )
4

2
Linguagem de Consulta - SQL
 Linguagem de Definio de Dados (DDL) - comandos
bsicos

 Create Table - define a estrutura de uma tabela, suas


restries de integridade; cria a tabela vazia.

 Drop Table - elimina a tabela da base de dados;

 Alter Table - permite modificar a definio de uma tabela,


adicionando novas colunas (campos), excluindo campos,
modificando chaves primrias e estrangeiras.
5

Linguagem de Consulta - SQL


 Linguagem de Definio de Dados (DDL) - Create Table

CREATE TABLE Nome_Tabela


( atributo 1 tipo [tamanho] (null/not null),
atributo 2 tipo [tamanho] (null/not null),
...
atributo n tipo [tamanho] (null/not null),
PRIMARY KEY (campo),
FOREIGN KEY (campo) REFERENCES Tabela
UNIQUE KEY (campo) )
6

3
Linguagem de Consulta - SQL
 Alguns Tipos de Dados Aceitos (Padro SQL-92)

 char (n) - character


 int - integer
 smallint;
 real;
 float (n);
 date : ano com 4 dgitos, ms e dia do ms;
 time : horrio, em horas, minutos e segundos.

Linguagem de Consulta - SQL


 Linguagem de Definio de Dados (DDL) - Create Table

Autor ( Cod_Autor, Nome, Nascimento )

CREATE TABLE Autor


( Cod_Autor integer NOT NULL,
Nome char(30) NOT NULL,
Nascimento date NULL
PRIMARY KEY (Cod_Autor))

4
Linguagem de Consulta - SQL
 Linguagem de Definio de Dados (DDL) - Create Table

Editora( Cod_Editora, Razao, CGC,Endereco, Cidade )

CREATE TABLE Editora


( Cod_Editora integer NOT NULL,
Razao char(40) NOT NULL,
CGC char (14) NOT NULL
Endereco char(40) NOT NULL,
Cidade char(25) NOT NULL,
PRIMARY KEY (Cod_Editora),
UNIQUE KEY (CGC) ) 9

Linguagem de Consulta - SQL


 Linguagem de Definio de Dados (DDL) - Create Table
Livro (Titulo, Cod_Autor, Cod_Editora,ValorReal, Publicacao, Volume)
Cod_Autor referencia AUTOR Cod_Editora referencia EDITORA
CREATE TABLE Livro
( Titulo char(30) NOT NULL,
Cod_Autor integer NOT NULL,
Cod_Editora integer NOT NULL,
ValorReal real NOT NULL,
Publicacao date NOT NULL,
Volume integer,
PRIMARY KEY (Titulo, Cod_Autor),
FOREIGN KEY (Cod_Autor) REFERENCES AUTOR,
FOREIGN KEY (Cod_Editora) REFERENCES EDITORA) 10

5
Linguagem de Consulta - SQL
 Linguagem de Definio de Dados (DDL) - DROP Table

DROP TABLE Nome_Tabela

DROP TABLE Editora

OBS : no exclui se tiverem livros referenciando uma


editora.

Clusula ON DELETE CASCADE


11

Linguagem de Consulta - SQL


 Linguagem de Definio de Dados (DDL) - Drop Table
CREATE TABLE Livro
( Titulo char(30) NOT NULL,
Cod_Autor integer NOT NULL,
Cod_Editora integer NOT NULL,
ValorReal real NOT NULL,
Publicacao date NOT NULL,
Volume integer,
PRIMARY KEY (Titulo, Cod_Autor),
FOREIGN KEY (Cod_Autor) REFERENCES AUTOR,
FOREIGN KEY (Cod_Editora) REFERENCES EDITORA
ON DELETE CASCADE) 12

6
Linguagem de Consulta - SQL
 Linguagem de Definio de Dados (DDL) - Alter Table

ALTER TABLE Nome_Tabela ADD Campo Tipo


Tamanho

ALTER TABLE Livro ADD Lingua char(15)

OBS: Inclui o campo Lingua na tabela Livro, do tipo


varchar com tamanho 15

13

Linguagem de Consulta - SQL


 Linguagem de Definio de Dados (DDL) - Alter Table

ALTER TABLE Nome_Tabela DROP Campo

ALTER TABLE Livro DROP Lingua

OBS: Exclui o campo Lingua da tabela Livro.

14

7
Linguagem de Consulta - SQL
 Linguagem de Definio de Dados (DDL) - Alter Table

Caso tenha sido esquecida a declarao de chave estrangeira

ALTER TABLE Livro ADD FOREIGN KEY(Cod_Editora)


REFERENCES Cidade

15

Linguagem de Consulta - SQL


 Linguagem de Manipulao de Dados (DML) -
Comandos Bsicos de Manipulao de Dados

Sintaxe bsica de uma instruo de Consulta

SELECT lista de colunas (campos)


FROM lista de tabelas
WHERE condio

16

8
Linguagem de Consulta - SQL
 Linguagem de Manipulao de Dados (DML) -
Comandos Bsicos de Manipulao de Dados

O modelo bsico de execuo SQL o seguinte:


 feito o produto cartesiano das tabelas envolvidas (caso haja
mais de uma);
 so selecionadas as linhas da tabela que obedecem a condio
estabelecida;
 feita a projeo sobre as colunas que vo ao resultado.

17

Linguagem de Consulta - SQL


 Linguagem de Manipulao de Dados (DML) -
Comandos Bsicos de Manipulao de Dados

Projeo
SELECT lista de colunas(campos)
FROM lista de tabelas Produto Cartesiano
WHERE condio

Seleo

18

9
Linguagem de Consulta - SQL
 Exemplo: selecionar todas as informaes sobre os livros
publicados no ano de 2000

SELECT Titulo, CodEditora,ValorReal, Publicacao,Volume


FROM Livro
WHERE publicacao = 2000
OU
SELECT *
FROM Livro
WHERE publicacao = 2000
19

Linguagem de Consulta - SQL


 Operadores Utilizados para a Condio Where

 =, <>, <, <=, >=, and, not, or (j conhecidos)

 BETWEEN AND : condio entre um limite de valores

 LIKE : a coluna pesquisada tem que ser do char ou varchar


% - indica um conjunto de caracteres
- um caracter

20

10
Linguagem de Consulta - SQL
 Exemplo Clusula Between And : selecionar todas as
informaes sobre os livros publicados entre os anos de
1980 e 2000

SELECT *
FROM Livro
WHERE publicacao BETWEEN 1980 AND 2000

21

Linguagem de Consulta - SQL


 banco de dados Exemplo Clusula like : selecionar todos os
livros cujos ttulos iniciem com a palavra banco

SELECT *
FROM Livro
WHERE Ttulo LIKE banco%

Exemplo: banco de jardim

22

11
Linguagem de Consulta - SQL
 Exemplo Clusula like : selecionar todos os livros cujos
ttulos terminem com a palavra banco

SELECT *
FROM Livro
WHERE Ttulo LIKE %banco

Exemplo: caixa de banco

23

Linguagem de Consulta - SQL


 Exemplo Clusula like : selecionar todos os livros cujos
ttulos tenham a palavra banco

SELECT *
FROM Livro
WHERE Ttulo LIKE %banco%

Exemplo: Sistemas de Banco de Dados

24

12
Linguagem de Consulta - SQL
 Exemplo Clusula like : selecionar todos os livros cujos
ttulos iniciem com a letra Be tenham a terceira letra do
ttulo N

SELECT *
FROM Livro
WHERE Ttulo LIKE B_N%

Exemplo: BANCO DE DADOS

25

Linguagem de Consulta - SQL


 JUNO DE RELAES

Mostrar os dados da editora que publicou o livro de ttulo


Banco de Dados

SELECT Editora.Codigo, Editora.CGC, Editora.Razao ....


FROM Editora, Livro
WHERE Editora.CodEditora = Livro.CodEditora AND
Livro.Ttulo = Banco de Dados
Filtro do Produto
Produto Cartesiano Cartesiano
26

13
Linguagem de Consulta - SQL
 JUNO DE RELAES - Utilizando Apelidos

Mostrar os dados da editora que publicou o livro de ttulo


Banco de Dados

SELECT Editora.Codigo, Editora.CGC, Editora.Razao ....


FROM Editora E, Livro L
WHERE E.CodEditora = L.CodEditora AND
Livro.Ttulo = Banco de Dados

27

Linguagem de Consulta - SQL


 Obter o nome do autor dos livros da editora Santa Maria,
que tenham, nos ttulos do livro, a frase Banco de Dados
Em primeiro lugar, o que precisamos ?
Nome do autor : Autor
Editoras de Santa Maria - nome da editora somente em : Editora
Ter no ttulo do Livro a frase Banco de Dados - ttulo : Livro
LIVRO X EDITORA X AUTOR

28

14
Linguagem de Consulta - SQL
 Obter o nome do autor dos livros da editora Santa Maria,
que tenham, nos ttulos do livro, a frase Banco de Dados
Em primeiro lugar, o que precisamos ?
Nome do autor : Autor
Editoras de Santa Maria - nome da editora somente em : Editora
Ter no ttulo do Livro a frase Banco de Dados - ttulo : Livro
LIVRO X EDITORA X AUTOR
Condies:
Editora - Santa Maria
WHERE Razao = Santa Maria
Livro - frase Banco de Dados
WHERE Ttulo LIKE %Banco de Dados%
Relacionamentos dos produtos cartesianos:
Livros da Editora : Livro.CodEditora = Editora.CodEditora
29
Autor dos Livros : Livro.CodAutor = Autor.CodAutor

Linguagem de Consulta - SQL


 Obter o nome do autor dos livros da editora Santa Maria,
que tenham, nos ttulos do livro, a frase Banco de Dados

JUNO

SELECT Autor.Nome
FROM Autor,Editora,Livro
WHERE Editora.Nome = Santa Maria AND
Livro.Titulo like %Banco de Dados% AND
Editora.CodEditora = Livro.CodEditora AND
Autor.CodAutor = Livro.CodAutor
30

15