SQL

21
SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura de dados Modificação de dados no BD Especificação de restrições de segurança

Transcript of SQL

Page 1: SQL

SQL

Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD,

possui muitos outros recursos como: Definição da estrutura de dados Modificação de dados no BD Especificação de restrições de segurança

Page 2: SQL

Linguagens de consulta

SQL Combina álgebra relacional e cálculo

relacional QBE (Query-by-Example)

Baseada no cálculo relacional de domínio QUEL

Baseada no cálculo relacional de tuplas

Page 3: SQL

SQL

Versão original desenvolvida pela IBM, no início dos anos 70

Originalmente denominada Sequel Structured English Query Language Linguagem de Consulta Estruturada em Inglês

Page 4: SQL

SQL

É composta de: Linguagem de definição de dados Linguagem de manipulação de dados Incorporação DML Definição de visões Autorização Integridade Controle de transações

Page 5: SQL

SQL A estrutura básica de uma expressão em

SQL é composta de três cláusulas: Select

Corresponde à operação de PROJEÇÃO da álgebra relacional

From Corresponde à operação de produto cartesiano

da álgebra relacional Where

Corresponde à seleção do predicado da álgebra relacional

Page 6: SQL

Encontre os nomes de todas as agencias da relação emprestimo select agencia_nome from emprestimo; (omissão de where predicado é TRUE)

Encontre os nomes de todas as agencias da relação emprestimo, eliminando duplicidades select distinct agencia_nome from emprestimo;

 

Cláusula select

Page 7: SQL

Cláusula select Encontre os nomes de todas as agencias da

relação emprestimo, especificando explicitamente que as duplicidades não serão eliminadas select all agencia_nome from emprestimo;

Multiplicar os totais da relação emprestimo por 100 select agencia_nome, emprestimo_numero, total*100 from emprestimo;

Page 8: SQL

Cláusula where

Encontre todos os números de emprestimos feitos na agencia “Monteiro Lobato” com totais acima de R$1200 select emprestimo_numero from emprestimo where agencia_nome= "Monteiro Lobato" and

total>1200;

Page 9: SQL

Cláusula where Encontrar os números de emprestimo cujos

totais estejam entre R$500 e R$1000 inclusive select emprestimo_numero from emprestimo where total between 500 and 1000;

ou

  select emprestimo_numero from emprestimo where total >= 500 and total <= 1000;

Page 10: SQL

Cláusula from

Encontre os nomes, números de emprestimo e total de todos os clientes que tenham um emprestimo no banco select cliente_nome,

devedor.emprestimo_numero, total from devedor, emprestimo where

devedor.emprestimo_numero=emprestimo.emprestimo_numero;

Page 11: SQL

Cláusula from

Encontre os nomes e os números de emprestimo de todos os clientes que tenham um emprestimo na agencia “Independência” select cliente_nome,

devedor.emprestimo_numero from devedor, emprestimo where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and agencia_nome = "Independência";

Page 12: SQL

Operação Rename Encontre os nomes e os números de

emprestimo de todos os clientes que tenham um emprestimo na agencia “Independência”, substituindo o atributo emprestimo_numero por emprestimo_id select cliente_nome,

devedor.emprestimo_numero as emprestimo_id from devedor, emprestimo where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and agencia_nome = "Independência";

•AS não é opcional

•Não funciona substituir os campos emprestimo_numero, por emprestimo_id

•AS não é opcional

•Não funciona substituir os campos emprestimo_numero, por emprestimo_id

Page 13: SQL

Variáveis Tuplas Para todos os clientes que possuem um

emprestimo, encontre seus nomes e respectivos números de emprestimo e totais select distinct cliente_nome, d.emprestimo_numero,

total from devedor as d, emprestimo as e where d.emprestimo_numero = e.emprestimo_numero;

  Encontre os nomes das agencias que tenham fundos

maiores que ao menos uma agencia de Taubaté select distinct a.agencia_nome from agencia a, agencia g where a.fundos>g.fundos and

g.agencia_cidade="Taubaté";a palavra

chave AS é opcional

Page 14: SQL

Operações com strings Encontre os nomes de agencias que

comecem pela letra c select agencia_nome from agencia where agencia_nome like "C%";Obs: no access usa-se *.

Encontre os nomes de agencias que possuam a substring “ça” em seus nomes select agencia_nome from agencia where agencia_nome like "%ça%";

Page 15: SQL

Operações com strings

Encontre os nomes de agencias que não comecem pela letra c select agencia_nome from agencia where agencia_nome not like "C%";

Page 16: SQL

Operações com strings

Encontre os nomes de agencias que possuam pelo menos 4 caracteres na string do seu nome select agencia_nome from agencia where agencia_nome like "____%";

Page 17: SQL

Ordenação

Classificar em ordem alfabética os nomes de todos os clientes que tenham um emprestimo na agencia “Monteiro Lobato” select cliente_nome from devedor, emprestimo where

devedor.emprestimo_numero=emprestimo.emprestimo_numero and agencia_nome= "Monteiro Lobato"

order by cliente_nome;

Page 18: SQL

Ordenação

Listar a relação emprestimo inteira em ordem decrescente de Total. Se emprestimos possuírem totais iguais, organizar os números de emprestimo em ordem ascendente select * from emprestimo order by total desc, emprestimo_numero asc;

Page 19: SQL

Operação de União Encontre os nomes de todos os clientes

que tenham um emprestimo, uma conta ou ambos no banco select cliente_nome from depositante union select cliente_nome from devedor;

Exercício: obter o resultado da consulta anterior com todas as repetições

Como na Álgebra relacional, as

relações participantes da

operação de união precisam ser compatíveis

Page 20: SQL

Operação Interseção Encontre os nomes de todos os clientes que

tenham emprestimo e conta no banco

select distinct depositante.cliente_nome from depositante, devedor where depositante.cliente_nome=devedor.cliente_nome;

Exercício: obter o resultado da consulta anterior com todas as repetições

Como na Álgebra relacional, as

relações participantes da

operação de interseção precisam

ser compatíveis

Page 21: SQL

Operação Diferença Encontre os nomes de todos os clientes que

tenham uma conta e nenhum emprestimo no banco

select distinct cliente_nome from depositante where cliente_nome not in (select cliente_nome from

devedor);

Exercício: obter o resultado da consulta anterior com todas as repetições

Como na Álgebra relacional, as

relações participantes da

operação Diferença precisam ser compatíveis