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:
ID | Compra | Data | Quantidade | Total | Descricao |
1 | Café | 15-04-2012 | 1 | 0.60 € | |
2 | Cerveja | 16-04-2012 | 2 | 3.00 € | Com um Amigo |
3 | Almoço | 17-04-2012 | 1 | 9.50 € | |
4 | Camisa | 18-04-2012 | 1 | 25.00 € | |
5 | Combustível | 18-04-2012 | 1 | 20.00 € | |
6 | Café | 17-04-2012 | 1 | 0.60 € | |
7 | Almoço | 19-04-2012 | 1 | 11.00 € | |
8 | Cerveja | 17-04-2012 | 3 | 3.00 € | |
9 | Café | 19-04-2012 | 2 | 1.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