O comando para leitura de dados por SQL em um sistema relacional é SELECT. Por exemplo, para obter todos os dados de uma relação utiliza-se a forma básica:
SELECT * FROM table
Através do mesmo comando, é possível especificar projeções e seleções de uma tabela:
SELECT columns FROM table WHERE condition
A condição pode envolver comparações entre atributos e/ou
valores constantes, podendo para tanto utilizar comparadores
tais como igual (=
), maior que (>
),
menor que (<
), maior ou igual que
(>=
), menor ou igual que (<=
),
diferente (!=
ou <>
) e
comparadores de strings (LIKE 'string'
,
onde 'string'
pode usar os caracteres
'_
' e '%
' para indicar um caráter
qualquer os uma seqüência qualquer de caracteres,
respectivamente). As comparações podem ser combinadas através
dos conectivos lógicos And, Or e Not.
É possível expressar as quatro operações aritméticas (+, -, *, /), tanto para a condição como para a especificação de recuperação dos dados.
Para especificar a ordem desejada de apresentação dos dados, utiliza-se a forma SELECT ... ORDER BY .... Uma alternativa a esse comando é SELECT ... GROUP BY ..., que ordena os dados e não apresenta elementos que tenham o mesmo valor para a cláusula de agrupamento.
Uma importante categoria de funções de SQL incluem as funções de agregação, que permitem computar a média (Avg), a quantidade (Count), o maior ou menor valor (Max ou Min) e o total (Sum) das expressões especificadas.
Através do mesmo comando Select, é possível especificar consultas envolvendo múltiplas tabelas, como em
SELECT nome, data FROM Pedidos, Clientes WHERE Pedidos.NumCliente = Clientes.NumCliente
Nesse caso, a junção das duas tabelas Pedidos e Clientes é realizada tendo como NumCliente como atributo de junção.
É possível especificar consultas internas a uma consulta, como em
SELECT NumProduto From Produtos WHERE PrecoUnit > (SELECT Avg(PrecoUnit) FROM Produtos)
Para qualificar os resultados de uma subconsulta, podem ser utilizadas as funções All (a condição foi verdadeira para todos os elementos resultantes da subconsulta), Any (verdade para pelo menos um elemento), Exists (verdade se resultado da consulta tem pelo menos um elemento), In (verdade se o valor especificado faz parte do resultado), Not Exists (verdade se subconsulta teve resultado vazio) e Not In (verdade se valor especificado não faz parte do resultado da subconsulta).
SQL oferece ainda mecanismos para inserir elementos em uma tabela,
INSERT INTO table (columns) VALUES (values)
para modificar valores de colunas de um elemento,
UPDATE table SET column = value [, column = value]* WHERE condition
e para remover elementos de uma tabela,
DELETE FROM table WHERE condition