Sintaxis SELECT
editarSELECT 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
editarWHERE (campoA1, …, campoAn) = | IN ( SELECT campoS1, …, campoSn … )
El uso de = es válido sólo si la subconsulta devuelve un único registro
Subconsultas: EXISTS
editarWHERE [NOT] EXISTS ( SELECT … )
La cláusula EXISTS es Verdadera si la subconsulta devuelve registros y Falsa en caso contrario
Inner Join
editarSELECT ... 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
editarLeft/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
editarSELECT 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
editarSELECT ... FOR UPDATE [NOWAIT]
- NOWAIT devuelve un error si el registro está bloqueado en vez de esperar que se libere.