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. 1
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
Linguagem de Consulta - SQL
Autor cod_autor nome nascimento (1,1)
Escreve
Exemplo Modelo Entidade-Relacionamento
(1,n)
Livro (1,n)
titulo cod_autor cod_editora valor publicacao volume
Publicado
Editora (1,1)
cod_editora razao endereco 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
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
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. 7
Linguagem de Consulta - SQL
Linguagem de Definio de Dados (DDL) - Create Table Autor ( Cod_Autor, Nome, Nascimento ) CREATE TABLE Autor ( Cod_Autor integer Nome char(30) Nascimento date
NOT NULL, NOT NULL, NULL
PRIMARY KEY (Cod_Autor))
8
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) )
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
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
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
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
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
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 Produto Cartesiano Filtro do Produto 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 Autor dos Livros : Livro.CodAutor = Autor.CodAutor
29
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