Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte IV : SQL
Dr. Sofiane Labidi
labidi@uol.com.br
SQL
SQL (Structured
Query
Language)
uma
linguagem 4GL, criada na dcada de 70, pela IBM San-Jose, na Califrnia, para manipulao de Bancos de Dados Relacionais como Oracle, DB2, SQL Server, Ingres, etc. Primeira Implantao no SGBD ORACLE em 1980. Inicialmente chamada SEQUEL.
SQL
ANSI-SQL a SQL padro (desde 87), definida pelo
Caratersticas da SQL
Linguagem no procedural ;
Sem condicional, nem iterao.
Exprima o O Qu ? e no o Como ?
O SGBD responsvel pela execuo do comando !
Trs Aspectos
SQL uma :
Linguagem de Definio de Dados - LDD ; Linguagem de Manipulao de Dados - LMD ;
LDD
Os comandos de Definio de Dados permitem a
criao de tabelas, ndices, alterao de tabelas,
LMD
Os comandos de Manipulao de Dados permitem a insero, atualizao, excluso e seleo de tuplas de uma tabela.
Exemplo :
INSERT ; UPDATE ; DELETE ; SELECT.
LSD
Eles servem para gernciar o acesso dos usurios a determinadas tabelas, e manter a
integridade dos dados.
Exemplo :
BEGIN TRANSACTION ; COMMIT ; ROLLBACK ; GRANT ; REVOKE.
Select
Select [Tipo] Lista-de-Atributos From Lista-de-Relaes [Condio] ; Para selecionar tuplas nas relaes.
10
Select
Lista-de-Relao : Lista das relaes (tabelas)
separados por virgula, cujo os atributos
selecionados pertencem.
Condio
usando
: uma
defina das
filtro
BY,
da
consulta :
HAVING,
seguintes
clasulas
WHERE,
GROUP
e ORDER BY.
11
Exemplos
Pilotos da companhia :
SELECT * FROM Pilotos;
12
Exerccio
13
Sub-Consultas
So consultas que se baseiam em outras consultas : Isto feito incluindo um comando SELECT na clusula WHERE
o piloto Roberto :
SELECT Nome FROM Pilotos WHERE Salrio = (SELECT Salrio FROM Pilotos WHERE Nome=Roberto);
14
Clasulas
Where GroupBy Having Order By
15
Where
Sintaxe :
WHERE <condio>
16
Funes Agregadas
As funes agregadas :
COUNT ; AVG ; MIN ;
MAX ;
SUM.
17
COUNT
COUNT ( * )
Retorna o nmero de tuplas na tabela.
18
AVG
Determina a mdia dos valores de um determinado atributo ou expresso.
AVG ( [ALL] <val> | DISTINCT <val>);
19
20
Exemplo
Uma outra forma, mais interessante, de definir o maior :
SELECT FROM
WHERE
21
Group By
Sintaxe :
Agrupa GROUP BY <atributo> as tuplas de uma tabela baseado em em
valores comuns de um determinado atributo. utilizado principalmente funes agregadas, tais como SUM, AVG, etc.
usado
em
conjunto
com
comando
22
Exemplos
Mdia Tipo : das capacidades dos avies por
SELECT Tipo, AVG(Capacidade) FROM Avio Group By Tipo; de salrios dos pilotos morando
Soma
Group By Cidade;
23
Having
Sintaxe :
GROUP BY <atributo>
maior de 10.000 R$ :
25
Order By
especfico.
26
Exemplos
Ordem alfabtica ascendente dos pilotos :
SELECT * FROM Pilotos ORDER BY Nome ASC;
27
Insert
Insere uma nova tupla em uma tabela.
Sintaxe:
...)]
Exemplo: Insert Into Pilotos (Nome, Salrio) Values (Joo Nascimento,6000000); Pode-se usar sub-consultas dentro de uma insero (por exemplo incluindo o resultado de uma consulta como tupla em uma tabela).
Prof. Dr. Sofiane Labidi 28
Update
Atualiza tuplas em uma tabela.
Sintaxe :
Aumenta o salrio dos pilotos de 10%: Update Pilotos Set Salrio=Salrio*1.1; Aumenta o salrio apenas dos pilotos de Braslia : Update Pilotos Set Salrio=Salrio*1.1 Where Endereo = Braslia;
29
Delete
Deleta tuplas em uma tabela.
Sintaxe :
Remover todos os voes da companhia : Delete From Voes; Remover apenas os a sada de Belm : Delete From Voes Where CE = Blem; possvel usar sub-consultas.
30
Juno
Acontece quando a partir de informaes em uma tabela se quer buscar informaes em uma outra tabela que est relacionada. Exemplos: Nome dos Pilotos ativos :
SELECT Nome FROM Pilotos, Voes WHERE Voes.PlNum = Pilotos. PlNum
Sinnimos
Para duplicao menos compridos. de Tabelas, usando nomes
Produtos eletrodomsticos :
32
Exemplo
Para duplicao de Tabelas. Pilotos que ganham o mesmo salrio que o Piloto Adriana : SELECT Nome FROM Pilotos Px WHERE Px.Nome<>Adriana and Px.Salrio = (Select Salrio From Pilotos Where Pilotos.Nome=Adriana);
33
Criao de BDs
Criao de uma Base de Dados :
CRETAE DATABASE AirBase;
Abertura/Incio da Base :
START DATABASE AirBase;
Remoo da Base :
DROP DATABASE AirBase;
34
Operadores da Linguagem
Operadores Aritmticos ; Operadores Lgicos ; Operadores Relacionais ; Concatenao de String ;
Operador NULL ;
Operadores Quantitativos.
35
Operadores Aritmticos
Operao
adio subtrao multiplicao diviso
Operador
+ * / ou :
36
Operadores Lgicos
Operao
e ou no
Operador
AND OR NOT
37
Diviso
Alunos que emprestarem todos os livros :
Select CPD, Nome From Aluno where not exists (Select LvNum From Livro Where not Exists (select * From Emprestimo Emp Where Emp.CodAlu=CPD and Emp.CodLivro=LvNum));
38
Diviso
Segunda soluo :
Select CPD, Nome From Aluno where (Select count(LvNum) as numero From Emprestimo Emp Where Emp.CodAluno=CPD and Emp.CodLivro=LvNum)
39
Operadores Relacionais
Operao
igual diferente maior maior ou igual menor menor ou igual
SELECT FROM WHERE
Operador
= <> > >= > >=
40
Operadores Relacionais
Operao
entre de ... a ... em ... como ...
Operador
[NOT] between ... and ... [NOT] in (.., .., .., ) [NOT] like ..%..
41
Exemplos
Livros sobre SQL :
SELECT FROM WHERE * Livro Ttulo like %SQL%;
42
Exemplos
Pilotos que tm a mesma idade que um piloto
cujo o nome comea pela letra J :
SELECT FROM WHERE * Piloto Idade IN (Select Idade From Pilotos Where Nome like J%);
43
Exemplos
Pilotos que dirigem os avies 14 e 15 :
SELECT FROM WHERE PlNum Voes AvNum=14 And PlNum IN (SELECT FROM WHERE PlNum Voes AvNum=15);
44
Concatenao de Strings
o operador ||
Joo || Carlos Joo carlos
Outros Bancos de Dados (como Access) usam o operador +. Mas outros (como dBase) no aceitam concatenao de strings.
45
Operador Null
Para testar se um preenchido (atributo nulo) : Atributo is Null Coloca a 2000R$ o salrio dos pilotos atributo no foi
Piloto
Salrio = 20000 Endereo IS NULL;
46
Operadores Quantitativos
Operao todos algum Operador ALL SOME (ou ANY)
47
Exemplos
Quais os pilotos bem mais pagos :
SELECT Nome, Salrio
FROM WHERE Pilotos Salrio >= ALL (Select Salrio From Pilotos)
48
Exemplos
Pilotos que ganham mais do que todos os pilotos Maranhenses :
SELECT Nome, Salrio FROM WHERE Pilotos Salrio >= ALL (Select Salrio From Pilotos Where Estado=Maranho)
49
Funes
50
UPPER transformao em maisculo LOWER transformao em minsculo LTRIM retira os caracteres em branco a esquerda
LTRIM(' Roberta)
RTRIM; retira os caracteres em branco a direita SUBSTRING. Cria uma substring a partir de uma
outra string
SUBSTRING(Maria de Ftima, 2, 4) retorna aria
51
Exemplo
Capital da Colmbia :
SELECT Nome, Capital FROM Paises
WHERE
Seno tem que escrever o nome (Colmbia) exatamente como est na Relao! Pode-se tambm usar o : LOWER(nome) = colmbia;
52
Atributos Virtuais
possvel atribuir o resultado de uma consulta SQL, usando uma operao matemtica, a um atributo da relao :
SELECT SUM(Salario) AS SomaSalario FROM Clientes
53
Tipos de Dados
Caracteres ; Numricos ; Datas ; Dados extensos ; Outros.
54
Tipo Caractere
Dois tipos : Char VarChar Exemplo :
CREATE TABLE Clientes (Nome char(35)) Insert Into Clientes Values(Maria) Maria ser representado sobre 35 caracteres, Porm, caso a declarao foi feita com varchar apenas 5 caracteres sero representados.
55
Tipos Numricos
smallint: nmeros inteiros de -32.768 a 32.767.
integer (int) : nmeros inteiros de -2.147.483.648
a 2.147.483.648.
Numeric[(p, d)] : nmero com preciso de at 15 dgitos (p corresponde preciso). d corresponde ao nmero de decimais.
Exemplo : numeric(10,3) ter dez dgitos,
sendo trs depois da vrgula e apenas sete dgitos correspondem parte inteira.
56
Tipos Numricos
decimal (p, d): semelhante ao tipo numeric.
57
Data
O tipo chamado date Uma data colocada entre apstrofos Em Microsoft, a data colocada entre jogo da velha !
58
Exemplo:
CREATE TABLE Clientes (foto blob)
59
Outros Tipos
Existe outros tipos como :
Boolean ou Logical, ou Yes/No ;
60
Paradox
Alpha Alpha
Access
Text Text
SQL Server
char varchar
smallint
float
Short
Number
Number (integer)
Number (Double)
smallint
float
numeric
decimal date blob
Number
#BCD date memo
Number (Double)
Date/Time memo
numeric
decimal datetime
61
Os Comandos
CREATE TABLE, ALTER TABLE, DROP TABLE; CREATE INDEX, DROP INDEX; CREATE VIEW, DROP VIEW. CRETAE DATABASE, START DATABASE, DROP DATABASE
63
SQL / LDD
Correspondncia :
Relao Atributo Domnio Table Column ?
64
Create Table
CREATE TABLE NomeTabela (At1 tipo <descrio>, At2 tipo <descrio>, <restries>)
NOT NULL
UNIQUE
Key
(no existe no
|
paradox e dBase, NULL no tem no Access) Primary Foreign Key (atts) References Relao
65
Exemplos
Create Table Produto (Codigo smallint, Nome char(30), Preco float) Create Table Produto (Codigo smallint, Nome char(30), Preco float Not Null) Create Table Produto (Codigo smallint, Nome char(30), Preco float Not Null Primary Key (Codigo))
66
67
Alter Table
Adicionar um novo atributo :
Alter Table Pilotos ADD Idade smallInt Deletar/Alterar um atributo :
Alter Table Pilotos DROP COLUMN Idade Alter Table Avio MODIFY CAP TO Smallint
68
Drop Table
69
Create Index
Criao de ndices pata tabelas. Os ndices so usados para aumentar a velocidade do acesso s tabelas.
CREATE INDEX iNome ON Clientes(Nome)
ndice mltiplo :
CREATE INDEX iNomeIdade ON Clientes(Nome,Idade)
ndice nico :
CREATE UNIQUE INDEX iNome ON Clientes(Nome)
70
Drop Index
Deletar ndices :
71
Create View
Criar uma viso de uma ou mais tabelas. Uma Viso uma tabela virtual :
CREATE VIEW NomeViso (atributos) AS <subconsulta>
Exemplo :
CREATE VIEW PilotosMaranhenses AS SELECT * FROM PILOTOS WHERE Estado=Maranho;
no
suportado
pelo
72
Drop View
Deletar Uma Viso : DROP VIEW NomeViso
73
Nome
PilotosMaranhenses Idade <=30;
74
Os Comandos
GRANT, REVOKE ;
BEGIN TRANSACTION ;
COMMIT, ROLLBACK.
76
Grant
Para limitar o acesso do usurio aos dados das tabelas :
Sintaxe :
GRANT tipoAcesso ON NomeTabela TO login, senha
Exemplo :
GRANT Select ON Voes TO GU1, senha
77
Revoke
Este comando revoga concesses anteriormente pelo comando GRANT. feitas
Sintaxe :
REVOKE listaPrivilgios FROM login, senha
Exemplo :
REVOKE Select ON Voes FROM GU1
78
Os Direitos
Select, Insert, Delete, Update, ... O ALL dar todos os direitos : GRANT ALL
ON
TO
Voes
GU2;
79
80
Begin Transaction
Este comando inicia uma transao. Enquanto o comando COMMIT no for executado, todas as inseres, alteraes, etc. feitas aps um comando BEGIN TRANSACTION no so efetivadas.
Sintaxe:
BEGIN TRANSACTION NomeTransacao
81
Commit
Este comando efetiva as operaes no banco de dados.
Sintaxe :
COMMIT NomeTransacao
82
RollBack
Este comando elimina as operaes que ainda no foram efetivadas.
Sintaxe :
ROLLBACK NomeTransacao
83
Palavras Chave
ACTIVE, ADD, ALL, AFTER, ALTER, AND, ANY, AS, ASC, ASCENDING, AT, AUTO, AUTOINC, AVG BASE_NAME, BEFORE, BEGIN, BETWEEN, BLOB, BOOLEAN, BOTH, BY, BYTES CACHE, CAST, CHAR, CHARACTER, CHECK, CHECK_POINT_LENGTH, COLLATE, COLUMN, COMMIT, COMMITTED, COMPUTED, CONDITIONAL, CONSTRAINT, CONTAINING, COUNT, CREATE, CSTRING, CURRENT, CURSOR
DATABASE, DATE, DAY, DEBUG, DEC, DECIMAL, DECLARE, DEFAULT, DELETE, DESC, DESCENDING, DISTINCT, DO, DOMAIN, DOUBLE, DROP
ELSE, END, ENTRY_POINT, ESCAPE, EXCEPTION, EXECUTE, EXISTS, EXIT, EXTERNAL, EXTRACT FILE, FILTER, FLOAT, FOR, FOREIGN, FROM, FULL, FUNCTION GDSCODE, GENERATOR, GEN_ID, GRANT, GROUP, GROUP_COMMIT_WAIT_TIME
Prof. Dr. Sofiane Labidi 84
Palavras Chave
HAVING, HOUR IF, IN, INT, INACTIVE, INDEX, INNER, INPUT_TYPE, INSERT, INTEGER, INTO, IS, ISOLATION JOIN KEY LONG, LENGTH, LOGFILE, LOWER, LEADING, LEFT, LEVEL, LIKE, LOG_BUFFER_SIZE MANUAL, MAX, MAXIMUM_SEGMENT, MERGE, MESSAGE, MIN, MINUTE, MODULE_NAME, MONEY, MONTH NAMES, NATIONAL, NATURAL, NCHAR, NO, NOT, NULL, NUM_LOG_BUFFERS, NUMERIC OF, ON, ONLY, OPTION, OR, ORDER, OUTER, OUTPUT_TYPE, OVERFLOW PAGE_SIZE, PAGE, PAGES, PARAMETER, PASSWORD, PLAN, POSITION, POST_EVENT, PRECISION, PROCEDURE, PROTECTED, PRIMARY, PRIVILEGES
Prof. Dr. Sofiane Labidi 85
Palavras Chave
RAW_PARTITIONS, RDB$DB_KEY, READ, REAL, RECORD_VERSION, REFERENCES, RESERV, RESERVING, RETAIN, RETURNING_VALUES, RETURNS, REVOKE, RIGHT, ROLLBACK SECOND, SEGMENT, SELECT, SET, SHARED, SHADOW, SCHEMA, SINGULAR, SIZE, SMALLINT, SNAPSHOT, SOME, SORT, SQLCODE, STABILITY, STARTING, STARTS, STATISTICS, SUB_TYPE, SUBSTRING, SUM, SUSPEND TABLE, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIGGER, TRIM UNCOMMITTED, UNION, UNIQUE, UPDATE, UPPER, USER VALUE, VALUES, VARCHAR, VARIABLE, VARYING, VIEW WAIT, WHEN, WHERE, WHILE, WITH, WORK, WRITE YEAR
86