Академический Документы
Профессиональный Документы
Культура Документы
Caractersticas da SQL
SQL uma linguagem de pesquisa declarativa para banco de dados relacional. Muitas das caractersticas originais do SQL foram inspiradas na lgebra relacional; Foi desenvolvida originalmente no incio dos anos 70 nos laboratrios da IBM em San Jose e tinha por objetivo demonstrar a viabilidade da implementao do modelo relacional proposto por E. F. Codd; O nome original da linguagem era SEQUEL, acrnimo para "Structured English Query Language".
Caractersticas da SQL
A linguagem SQL um grande padro de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela uma linguagem declarativa em oposio a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.
Caractersticas da SQL
Diviso da linguagem SQL:
Linguagem de Definio de Dados (DDL): A DDL da SQL fornece comandos para definir esquemas de relao, excluir relaes e modificar esquemas; Linguagem de Manipulao de Dados (DML): A DML inclui uma linguagem de consulta. Tambm possui comandos para inserir, excluir e modificar dados no BD;
Caractersticas da SQL
Diviso da linguagem SQL:
Linguagem de Controle de Dados (DCL): Controla os aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. Linguagem Transao de Dados (DTL): Controla as transaes do Banco de Dados.
Caractersticas da SQL
Instrues da DML:
SELECT: Instruo que permite ao usurio especificar uma consulta como uma descrio do resultado desejado. INSERT: Instruo que usada para inserir um registro numa tabela existente. UPDATE: Instruo que altera os valores de dados em um registro da tabela especificada. DELETE: Instruo que permite remover registros existentes de uma tabela.
Caractersticas da SQL
Instrues da DDL:
CREATE: Instruo que cria um objeto (uma tabela, por exemplo) dentro da base de dados. DROP: Instruo que apaga um objeto do banco de dados.
Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usurio alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente.
Caractersticas da SQL
Instrues da DCL:
GRANT: Instruo que utoriza ao usurio executar ou configura operaes. REVOKE: Instruo que remove ou restringe a capacidade de um usurio de executar operaes.
Caractersticas da SQL
Instrues da DTL:
BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o comeo de uma transao de banco de dados que pode ser completada ou no. COMMIT envia todos os dados das mudanas permanentemente. ROLLBACK faz com que as mudanas nos dados existentesdesde que o ltimo COMMIT ou ROLLBACK sejam descartadas.
SQL - DDL
real, double precision: nmeros de ponto flutuante e ponto flutuante de preciso dupla, com preciso dependente da mquina. float(n): um nmero de ponto flutuante, com preciso de pelo menos n dgitos.
create table cliente ( id_cliente integer, nome_cliente varchar(60), endereco varchar(60), primary key(id_cliente) )
Restrio de Integridade do tipo chave primria
Outras Restries:
Integridade de Vazio - not null; Integridade de Chave Alternativa - unique; Restrio Semtica - check(<predicado>).
Exemplo:
alter table cliente add email varchar(255)
Exemplo:
alter table cliente drop email
SQL - DML
Consultando Tabelas
Instruo SELECT
select C1,C2,...,Cn from T1,T2,...,Tm where P Em que:
Ci Tj P Coluna i; Tabela j; Predicado
Consultando Tabelas
Exemplo:
Tabela: aluno
id_aluno 1 2 nome_aluno TIRIRICA ABILOALDO TIMTEO nome_disciplina ALGORITMO
Tabela: disciplina
id_disciplina 1
Tabela: curso
id_curso nome_curso 1 SI
Consultando Tabelas
A consulta acima equivale a, primeiro, efetuar a operao aluno x disciplina x curso:
id_aluno 1 2 nome_aluno TIRIRICA ABILOALDO TIMTEO id_disciplina 1 1 nome_disciplina ALGORITMO ALGORITMO id_curso 1 1 nome_curso SI SI
Clusula Where
Exemplo:
select nome_aluno, nome_disciplina, nome_curso from aluno, disciplina, curso where nome_aluno="TIRIRICA"
nome_aluno TIRIRICA nome_disciplina ALGORITMO nome_curso SI
Clusula Where
A clusula where pode conter diversos conectivos lgicos como and, not e or. A clusula ainda suporta diversos operadores de comparao como <,<=,>,>=,= e <>.
Clusula Where
Considere a tabela cliente:
id_cliente 1 2 3 4 nome_cliente Jos de Melo Bico Antnio Barbudinho Waldick Soriano Tiririca da Silva credito 1000 800 1200 350
Distinct
SQL permite duplicidades nas tuplas de resposta. Quando desejamos forar a eliminao de duplicidade, podemos inserir a palavra chave DISTINCT depois de SELECT.
id_cliente 1 2 3 4 nome_cliente Jos de Melo Bico Antnio Barbudinho Waldick Soriano Tiririca da Silva bairro Potengi Nova Natal Nova Natal Lagoa Nova
id_cliente 3 4 1 2
nome_cliente Waldick Soriano Tiririca da Silva Jos de Melo Bico Antnio Barbudinho
Funes Agregadas
As funes agregadas so aquelas que tomam uma coleo de valores como entrada e retornam um nico valor; A SQL oferece cinco funes bsicas embutidas:
Mdia (average): avg; Mnimo: min; Mximo: max; Soma: sum; Conta: count.
Funes Agregadas
A entrada para sum e avg deve ser numrica, mas os outros operadores podem operar em colees de tipos de dados no numricos, como strings.
id_cliente 1 2 3 4 nome_cliente Jos de Melo Bico Antnio Barbudinho Waldick Soriano Tiririca da Silva credito 1000 800 1200 350
Retorna 1200
select max(credito) from cliente select min(credito) from cliente select sum(credito) from cliente
Retorna 350 Retorna 3350
Funes Agregadas
A Clusula GROUP BY utilizada para agrupar linhas da tabela que compartilham os mesmos valores em todas as colunas da lista.
id_saque 1 2 3 4 5 6 data 10/11/2007 10/11/2007 11/11/2007 11/11/2007 11/11/2007 12/11/2007 nome_cliente Jos de Melo Bico Antnio Barbudinho Waldick Soriano Tiririca da Silva Waldick Soriano Jos de Melo Bico valor 300 120 50 20 200 150
Clusula Having
A clusula HAVING restringe os resultados do GROUP BY.
select nome_cliente, sum(valor) from saque group by nome_cliente having sum(valor)>200
nome_cliente Jos de Melo Bico Waldick Soriano sum 450 250
Consultas Aninhadas
A SQL permite testas registros que participam em outras consultas; O conectivo in testa a presena em uma consulta; O conectivo not in testa a ausncia em uma consulta;
Consultas Aninhadas
Exemplo:
cliente (id_cliente,nome_cliente); dependente (num_dependente,id_cliente,nome_dependente) id_cliente referencia cliente
Como listar todos os clientes que possuem dependentes? A consulta select id_cliente from dependente mostra o id de todos os cliente que possuem dependentes.
Consultas Aninhadas
select nome_cliente from cliente where id_cliente in (select id_cliente from dependente)
id_cliente 1 2 3 4 5 6 nome_cliente Joo Cesimar Gustavo Thsio Clodoaldo Xuxu num_dependente 1 1 1 1 2 id_cliente 1 2 4 3 3 nome_dependente Rita Zero Hora Toninha Caminho Tat Jr. Maria Gasolina Guga Jr.
Consultas Aninhadas
select nome_cliente from cliente where id_cliente in (select id_cliente from dependente)
nome_cliente Joo Cesimar Gustavo Thsio
Junes
Considere o esquema:
Fornecedor(id_fornecedor, nome_fantasia); Produto(id_produto,id_fornecedor,descricao,preco) id_fornecedor referencia Fornecedor
Tabelas:
id_fornecedor 1 2 3 4 nome_fantasia Seu Z Distribuidora Chico Tripa Atacado Barbudinho LTDA Xuxu Distribuidora id_produto 1 2 3 4 5 6 id_fornecedor 1 1 2 3 3 3 descricao Bala Chiclete Pirulito Picol Chocolate Dad valor 0.25 0.50 0.70 1.00 1.20 0.20
Juno Interna
select * from Fornecedor inner join Produto on Fornecedor.id_fornecedor=Produto.id_fornecedor
id_fornecedor 1 1 2 3 3 3 nome_fantasia Seu Z Distribuidora Seu Z Distribuidora Chico Tripa Atacado Barbudinho LTDA Barbudinho LTDA Barbudinho LTDA id_produto 1 2 3 4 5 6 id_fornecedor 1 1 2 3 3 3 Descricao Bala Chiclete Pirulito Picol Chocolate Dad valor 0.25 0.50 0.70 1.00 1.20 0.20
Os registros da tabelas esquerda so inseridos, porm com os dados que no tm correspondncia com a tabela da direita so preenchidos com NULL.
Outras Junes
Juno Externa Direita (right outer join)
Completa com os registros no relacionados da tabelas direita;
select * from Fornecedor right outer join Produto on Fornecedor.id_fornecedor=Produto.id_fornecedor
Juno Externa Completa (full outer join) Completa com os registros no relacionados da tabelas direita e esquerda;
Juno Natural
Na juno natural (natural inner join), o resultado semelhante ao inner join, porm sem atributos repetidos aparecendo na juno;
select * from Fornecedor natural inner join Produto
id_fornecedor 1 1 2 3 3 3 nome_fantasia Seu Z Distribuidora Seu Z Distribuidora Chico Tripa Atacado Barbudinho LTDA Barbudinho LTDA Barbudinho LTDA id_produto 1 2 3 4 5 6 Descricao Bala Chiclete Pirulito Picol Chocolate Dad valor 0.25 0.50 0.70 1.00 1.20 0.20
Excluso de Registros
Sintaxe:
delete from tabela where predicado
A instruo acima deleta todos registros da tabela em que o predicado especificado seja verdadeiro; Exemplo:
delete from turma_professor where id_professor=4
Atualizao de Registros
Sintaxe:
update tabela set tabela.A1=novo_valor_A1, tabela.A2=novo_valor_A2,..., tabela.An=novo_valor_An where predicado
A instruo acima atualiza todos os atributos A1,...,An dos registros da tabela em que o predicado especificado seja verdadeiro; Exemplo:
update turma_professor set id_professor=5 where id_professor=4