Este documento descreve a linguagem SQL (Structured Query Language), desenvolvida nos anos 1970 para interagir com sistemas de gestão de bases de dados relacionais. A SQL é estruturada em quatro categorias principais: DQL para consultas, DML para manipulação de dados, DDL para definição de objetos e DCL para gestão de privilégios. O documento explica operadores, funções e exemplos de comandos SQL como SELECT, INSERT, UPDATE e DELETE.
Dança Contemporânea na arte da dança primeira parte
SQL | Bases de dados, linguagem e funções
1. Bases de dados: SQL (continuação)
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 08, 14-03-2012
2. SQL | Structured Query Language
Desenvolvida no início dos anos 70. Permite a interação com os SGBD e
as BD aí existentes. Utilizada por todos os SGBDR (embora com pequenas
diferenças!). Está estruturada em várias categorias:
• Data Query Language (DQL) – consultar os dados existentes na BD
• SELECT
• Data Manipulation Language (DML) – criar e modificar os dados na BD
• INSERT, UPDATE, DELETE
• Data Definition Language (DDL) – criar e modificar objectos da BD
(tabelas, views, …), ou a própria BD
• CREATE, ALTER, DROP
• Data Control Language (DCL) – gerir os privilégios dos utilizadores na
gestão da BD, dos seus objectos e dos dados aí existentes
• GRANT, REVOKE
3. SQL | Operadores e algumas funções
símbolo descrição exemplo observações
= Igual EmployeeNo = 2
> Maior EmployeeNo > 2
< Menor EmployeeNo < 2
<> Diferente EmployeeNo <> 2
>= Maior ou igual EmployeeNo >= 2
<= Menor ou igual EmployeeNo <= 2
IN Igual a um valor dentro de uma EmployeeNo IN (2,3,4)
colecção de valores
LIKE Similar LastName LIKE ‘Nunes’
BETWEEN ... AND Dentro de um conjunto de valores, EmployeeNo BETWEEN 2 AND Equivalente a:
incluindo os limites 4 EmployeeNo IN (2,3,4)
IS NULL DateEmployed IS NULL
IS NOT NULL DateEmployed IS NOT NULL
NOW() Devolve a DATA e HORA do servidor
4. SQL | Operadores Lógicos
AND, OR e NOT
• Estes operadores têm uma prioridade inferior relativamente aos
apresentados no slide anterior
• As prioridades podem ser alteradas através da utilização de ( )
símbolo descrição exemplo observações
AND As duas expressões SalesNo > 3 AND Customer O AND tem maior prioridade do que
têm que ter o valor < “Smith” o OR
verdadeiro para o
resultado final ser
verdadeiro
OR Se qualquer uma das SalesNo > 3 OR Customer <
expressões tiver o “Smith”
valor verdadeiro, o
resultado final é
verdadeiro
NOT Inverte o resultado SalesNo NOT IN (2; 3; 4)
booleano
5. SQL: SELECT DISTINCT … FROM
SELECT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;
SELECT DISTINCT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;
6. SQL: SELECT … FROM ... WHERE
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca < 'Fiat' OR
oficinasql.viaturas.Marca > 'Smart';
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE ((oficinasql.viaturas.Marca < 'Fiat') OR
(oficinasql.viaturas.Marca > 'Smart'))
AND oficinasql.viaturas.Modelo LIKE ‘C%’;
7. SQL: SELECT … FROM ... WHERE
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca IN ('Citroen', 'Smart');
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.Marca BETWEEN "Ferrari" AND "Renault"
ORDER BY oficinasql.viaturas.Marca;
8. SQL: exemplos
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.DataVenda IS NULL;
• SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
FROM oficinasql.viaturas
WHERE oficinasql.viaturas.DataVenda IS NOT NULL;
9. SQL: exemplos
• SELECT oficinasql.viaturas.Marca
FROM oficinasql.viaturas
WHERE NOT oficinasql.viaturas.Marca IN ("Subaru", "Ferrari", "Renault");
10. SQL: Funções pré-definidas
Funções pré-definidas que trabalham sobre grupos de dados
• AVG – valor médio
• MIN– valor mínimo
• MAX – valor máximo
• COUNT – número de elementos
• SUM – soma
11. SQL: Funções pré-definidas
• SELECT MAX(oficinasql.viaturas.Preco)
FROM oficinasql.viaturas;
• SELECT COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas;
12. SQL: AS
• SELECT COUNT(oficinasql.viaturas.Modelo) AS TotalViaturas
FROM oficinasql.viaturas;
TotalViaturas
• SELECT COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas AS tViat
... a partir daqui podemos utilizar “tViat” sempre que for necessário referir
a tabela “oficinasql.viaturas”;
13. SQL: Funções pré-definidas
• SELECT oficinasql.viaturas.Marca, COUNT(oficinasql.viaturas.Modelo)
FROM oficinasql.viaturas
GROUP BY oficinasql.viaturas.Marca;
14. SQL INSERT
INSERT INTO oficinasql.clientes VALUES (NULL, 'Joaquim Soares',
981234567, ‘Rua Estreita');
• Desta forma inserem-se valores em todos os campos da tabela pela
ordem como estão declaradas as colunas
• Utiliza-se o NULL em campos com AI (por exemplo, no caso da PK) ou
onde não se queira inserir informação
15. SQL INSERT
INSERT INTO oficinasql.clientes (Nome,Idade) VALUES ('Serafim
Saudade', 24);
• Podem inserir-se valores apenas em alguns campos
• Campos com AI serão actualizados automaticamente
17. SQL DELETE
DELETE FROM oficinasql.clientes
WHERE oficinasql.clientes.idClientes = 12;
DELETE FROM oficinasql.clientes;
• Apagaria todos os registos da tabela!