quarta-feira, 25 de abril de 2012

SQL

SQL - Structured Query Language

( Linguagem de Consulta Estruturada)


Na criação de bases de dados em Access, é de grande utilidade a utilização de expressões SQL. É muito usada para pesquisar informação guardada nas tabelas, mas pode também ser usada para estruturar a própria base de dados.

O SQL possui instruções de definição, manipulação e controlo.
- As instruções de definição são as que permitem criar, modificar e apagar tabelas e relações entre as tabelas.
- As instruções de manipulação são as mais usadas e permitem introduzir, modificar e apagar dados, e acima de tudo obter dados através de critérios de pesquisa.
- As instruções de controlo são que estabelecem a segurança da base de dados, nomeadamente gerir permissões a nível de utilizador.


Definição
Manipulação
Controlo
CREATE TABLE
ALTER TABLE
DROP TABLE
CREATE INDEX
INSERT INTO
SELECT INTO
UPDATE
DELETE
SELECT
UNION
TRANSFORM
PARAMETER
ALTER DATABASE
CREATE GROUP
DROP GROUP
CREATE USER
DROP USER
ADD USER
GRANT PRIVILEGE
REVOKE PRIVILEGE



A sintaxe do SQL utiliza palavras reservadas, que não devem ser usadas para nomear quaisquer objectos da base de dados.


Exemplo de utilização do SQL

Para começar abrir o Access e criar uma nova base de dados. Criar uma consulta em modo de estrutura e mudar para vista SQL.

Vamos criar uma tabela Compras como exemplo para exercitar as instruções SQL:
CREATE TABLE Compras (
ID COUNTER CONSTRAINT IDPk PRIMARY KEY,
Compra TEXT(30) NOT NULL,
Data DATE NOT NULL,
Quantidade INTEGER,
Total CURRENCY NOT NULL,
Descricao MEMO
);
Carregar no botão executar para que a tabela seja criada.

Para introduzir dados:
INSERT INTO Compras (Compra,Data,Quantidade,Total)
VALUES('Café',#2012-04-15#,1,0.60)
ou
INSERT INTO Compras
VALUES( 2,'Cerveja',#2012-04-16#,2 ,2.0,’Com um Amigo’)

O texto a inserir tem de estar entre aspas(‘). Para as datas podemos usar o cardinal(#) ou aspas(‘).

Para alterar valores já introduzidos: UPDATE Compras SET Total=3.0 WHERE ID=2

Para apagar registos: DELETE * FROM Compras WHERE Data=#2012-04-15#


Imaginemos que depois de alguns registos temos uma tabela assim:

IDCompraDataQuantidadeTotalDescricao
1Café15-04-201210.60 €
2Cerveja16-04-201223.00 €Com um Amigo
3Almoço17-04-201219.50 €
4Camisa18-04-2012125.00 €
5Combustível18-04-2012120.00 €
6Café17-04-201210.60 €
7Almoço19-04-2012111.00 €
8Cerveja17-04-201233.00 €
9Café19-04-201221.20 €


Sobre estes registos podemos pesquisar de várias formas, consoante a informação que pretendemos.

Todos os registos: SELECT * FROM Compras
Quantidade de registos: SELECT COUNT(*) FROM Compras
Quantidade de artigos: SELECT SUM(Quantidade) FROM Compras
Total gasto: SELECT SUM(Total) FROM Compras
Ou tudo junto: SELECT COUNT(*),SUM(Quantidade),SUM(Total) FROM Compras

Por data: SELECT * FROM Compras WHERE Data=#2012-04-17#
Por compra: SELECT * FROM Compras WHERE Compra = 'Café'
ou: SELECT * FROM Compras WHERE Compra LIKE 'Café'

Resumo por datas com campos nomeados, usando agregação de registos:
SELECT Data,COUNT(*) AS Compras,SUM(Quantidade) AS Artigos,SUM(Total) AS [Valor Total] FROM Compras GROUP BY Data ORDER BY Data