Sintaxis SELECT

editar
SELECT expr1 [alias1], expr2 [alias2] ...
FROM tabla1 [aliasT1], tabla2 [aliasT2] ...
WHERE condiciones
GROUP BY expr1, expr2 ...
HAVING condiciones
ORDER BY expr1[DESC] , expr2 [DESC] ...

Subconsultas: = IN

editar
WHERE (campoA1, …, campoAn) = | IN (
    SELECT campoS1, …, campoSn
    …
)

El uso de = es válido sólo si la subconsulta devuelve un único registro

Subconsultas: EXISTS

editar
WHERE [NOT] EXISTS (
    SELECT 
    …
)

La cláusula EXISTS es Verdadera si la subconsulta devuelve registros y Falsa en caso contrario

Inner Join

editar
SELECT ...
FROM tabla1 t1, tabla2 t2, ...
WHERE t1.campoT1 = t2.campoT2 ...

Inner Join: Producto cartesiano entre los elementos (registros) de las tablas

Left y Right Joins

editar

Left/Right Join: Obtiene los elementos de una tabla y luego, si existen, los elementos de la otra

SELECT ...
FROM tabla1 t1, tabla2 t2, ...
WHERE t1.campoT1(+) = t2.campoT2
  • El (+) se coloca luego de la columna cuya tabla puede no tener registros para ese valor.

También soporta la sintaxis ANSI:

SELECT ...
FROM tabla1 t1
    LEFT | RIGHT JOIN tabla2 t2
    ON t1.campoT1 = t2.campoT2 ...

Operaciones de Conjuntos

editar
SELECT campoA1, …, campoAn FROM ...
   UNION [ALL] | INTERSECT | MINUS
SELECT campoB1, …, campoBn FROM ...
  • UNION: Unión de consultas. ALL: incluye elementos repetidos
  • INTERSECT: Intersección de consultas
  • MINUS: Resta de consultas. Obtiene los registros del 1er SELECT que no están en el 2do SELECT

Bloqueo de Registros

editar
SELECT ...
FOR UPDATE [NOWAIT]
  • NOWAIT devuelve un error si el registro está bloqueado en vez de esperar que se libere.