Linguagem de manipulação de dados de SQL

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