SQL
O que é SQL?
SQL, ou Structured Query Language, ou Linguagem de Consulta Estruturada
é a linguagem de pesquisa declarativa padrão para banco de dados relacional (base de dados relacional).
As características originais do SQL foram inspiradas na álgebra relacional..
A linguagem:
Adicionar um novo registro
x
Insert Into clientes (nome, sobrenomes, endereço, cidade, código postal, e-mail, pedidos) Values ('Pedro', 'Palotes', 'Percebe n°13', 'Londrina', '123456', 'pedro@criarweb.com', 33)
Apagar um registro
x
Delete From nome_tabela Where condicoes_de_selecao
Atualizar um registro
x
Update clientes Set nome='José' Where nome='Pedro'
Seleção de tabelas I:
x
Select * From clientes
Mostrar os clientes da cidade 'Rio de janeiro':
x
Select * From clientes Where cidade Like 'Rio de janeiro'
Ordenar o resultado pelo campo nome:
x
Select * From clientes Where cidade Like 'Rio de janeiro' Order By nome
Ordenar o resultado pelos campos nome e sobrenome:
x
Select * From clientes Where cidade Like 'Rio de Janeiro' Order By nome, sobrenome
É possível também usar ordem inversa:
x
Select * From clientes Order By pedidos Decres
Uma opção interessante é a de efetuar seleções sem coincidência. Se por exemplo,
buscássemos saber em que cidades se encontram nossos clientes sem a necessidade de que para isso apareça várias vezes a mesma cidade,
usaríamos uma sentença desta classe:
seleções sem coincidência:
x
Ex.: Select Distinct cidade From clientes Order By cidade
Nesta sentença selecionamos todos os clientes de Salvador cujo nome não seja Jose.
Como se pode ver, empregamos Like ao invés de = simplesmente para evitar inconvenientes devido ao emprego ou não de maiúsculas.
SQL:
x
Select * From clientes Where cidade Like 'salvador' And Not nome Like 'Jose'
Se quiséssemos recolher em uma seleção aos clientes de nossa tabela cujo sobrenome começa por A e cujo número de pedidos esteja compreendido entre 20 e 40:
SQL:
x
Select * From clientes Where sobrenomes like 'A%' And pedidos Between 20 And 40
O operador In, será visto mais adiante, é muito prático para consultas em várias tabelas. Para casos em uma única tabela é empregada da seguinte forma:
SQL:
x
Select * From clientes Where cidade In ('Salvador','Fortaleza','Florianopolis')
Select em varias tabelas:
SQL:
x
Select clientes.sobrenomes, clientes.email From clientes,pedidos Where pedidos.data like '25/02/00' And pedidos.id_cliente= clientes.id_cliente
Select pedidos.id_pedido, artigos.titulo From pedidos, artigos Where pedidos.id_artigo=artigos.id_artigo
Select pedidos.id_pedido, artigos.titulo From pedidos, artigos Where pedidos.id_artigo=artigos.id_artigo
Dado que o campo da função não existe no banco de dados, pois o estamos gerando virtualmente, isto pode criar inconvenientes quando estivermos trabalhando com nossos scripts na hora de tratar seu valor e seu nome de campo. É por isso que o valor da função tem que ser recuperada a partir de um apelido que nós especificaremos na sentença SQL a partir da instrução AS. A coisa poderia ficar assim:
SQL:
x
Select Soma(total) As soma_pedidos From pedidos
A partir desta sentença calculamos a soma dos valores de todos os pedidos realizados e armazenamos esse valor em um campo virtual chamado soma_pedidos que poderá ser utilizado como qualquer outro campo por nossas páginas dinâmicas.
Obviamente, tudo que foi visto até agora pode ser aplicado neste tipo de funções de modo que, por exemplo, podemos estabelecer condições com a cláusula Where construindo sentenças como esta:
SQL:
x
Select Soma(quantidade) as soma_artigos From pedidos Where id_artigo=6
Isto nos proporcionaria a quantidade de exemplares de um determinado livro que foram vendidos.
Outra propriedade interessante destas funções é que permitem realizar operações com vários campos dentro de um mesmo parênteses:
SQL:
x
Select Avg(total/quantidade) From pedidos
Esta sentença dá como resultado o preço médio que estão sendo vendidos os livros. Este resultado não tem porquê coincidir com o do preço médio dos livros presentes no inventário, já que, pode ser que as pessoas tenham tendência a comprar os livros caros ou os baratos:
SQL:
x
Select Avg(precio) as preco_venda From artigos
Uma cláusula interessante no uso das funções é Group By. Esta cláusula nos permite agrupar registros aos quais vamos aplicar a função. Podemos por exemplo calcular o dinheiro gastado por cada cliente:
SQL:
x
select id_cliente, Soma(total) as soma_pedidos From pedidos Group By id_cliente
Ou saber o número de pedidos que foram realizados:
SQL:
x
Select id_cliente, Count(*) as numero_pedidos From pedidos Group By id_cliente