Está en la página 1de 50

Enero - 2009

CURSO
BASE DE
DATOS

RESUMEN SQL

Resumen SQL
Resumen - SQL

Curso Base de Datos


Pgina 1

Seleccin de datos (SELECT)


SELECT * FROM Tabla

Resumen - SQL

Pgina 2

SELECT Columna1 [as Alias1], Columna2 [as Alias2], FROM tabla

Resumen - SQL

Pgina 3

Clusulas
WHERE

Para especificar la condicin de seleccin de registros

SELECT * FROM Tabla [WHERE Condicin]


SELECT Columna1 [as Alias1], Columna2 [as Alias2], FROM tabla [WHERE
Condicin]

Resumen - SQL

Pgina 4

Operadores de comparacin
Operador
=

Propsito
Igual que

Ejemplo
select * from emp where deptno = 20;

!= , <>

Distinto de

select * from emp where deptno != 20;

<

Menor que

select * from emp where deptno < 25;

>

Mayor que

select * from emp where deptno > 25;

<=

Menor igual que

select * from emp where deptno <= 20;

>=

Mayor igual que

select * from emp where deptno >= 20;

in

Contenido en

select * from emp where deptno in (20,30);

not in

No contenido en

select * from emp where deptno not in (20,30);

between

Entre

select * from emp where deptno between 20 and 30;

not between

No entre

select * from emp where deptno not between 20 and 30;

like

Como

select * from emp where cp like 280% ;

not like

No como

select * from emp where cp not like 28% ;

is null

Es nulo

select * from emp where comm is null;

is not null

No es nulo

select * from emp where comm is not null;

Resumen - SQL

Pgina 5

VARIABLES EN SQL*PLUS
Se pueden definir variables utilizables fuera del propio programa. Una variable en SQL*PLUS
puede asimilarse a una columna de una tabla con una sola fila de datos. Las variables igual que
las columnas de las tablas, tienen asignado un tipo de dato y contienen datos.
DEFINE nombre_variable = valor
DEFINE ndep = 30

Las variables definidas previamente, pueden ser usadas como una columna ms. Se podr
incorporar dentro de las consultas, usando la siguiente sintaxis :
& nombre_variable
SELECT dname FROM dept WHERE deptno = &ndep

Para ver todas las variables existentes


DEFINE

Para eliminar una variable se utiliza la sentencia UNDEFINE nombre_variable


UNDEFINE ndep

Resumen - SQL

Pgina 6

Se puede utilizar una variable como variable de sustitucin, para ello bastar con usar la
variable sin tenerla definida, entonces se nos pedir que introduzcamos un valor por teclado.

En ocasiones se desea evitar que Oracle pida mltiples veces el valor de una variable que se
utiliza de forma repetida. Para esta finalidad se hace referencia a las variables precedidas de
&&, en cuyo caso Oracle pide el valor de la variable una sola vez. Cuando se define una
variable con &&, es necesario eliminarla con la sentencia UNDEFINE cuando se desea dar un
nuevo valor.

Resumen - SQL

Pgina 7

Funciones SQL

Funciones de conversin de caracteres

LOWER:

Convierte a minsculas.
LOWER(<CADENA>)

UPPER:

Convierte a maysculas.
UPPER(<CADENA>)

INITCAP:

Convierte la primera letra de cada palabra en maysculas, y el resto en


minscula.
INITCAP (<CADENA>)

Resumen - SQL

Pgina 8

Funciones manipulacin caracteres

CONCAT:

Concatena dos valores.


CONCAT (<CADENA-1>,<CADENA-2>)

SUBSTR:

Extrae una subcadena a partir de una posicin dada .


SUBSTR (<CADENA>, <NUM-POSICION>, <NUM-CARACTERES>)

Resumen - SQL

Pgina 9

LENGTH:

Devuelve la longitud de la cadena.


LENGTH(<CADENA>)

INSTR:

Devuelve la posicin de un carcter o subcadena.


INSTR(<CADENA>,<SUB-CADENA>)

LPAD:

Justifica a la derecha la cadena.


LPAD(<CADENA>, <NUMERO> ,<CADENA>)

RPAD:

Justifica a la izquierda la cadena.


RPAD(<CADENA>, <NUMERO> ,<CADENA>)

REPLACE:

Remplaza parte de una cadena por otro texto.


REPLACE(<CADENA>, <SUB-CADENA-ANTERIOR> ,<SUB-CADENA-NUEVA>)

Resumen - SQL

Pgina 10

TRIM:

Elimina parte de una cadena, al principio y/o al final de la cadena.


TRIM(<CARACTER> FROM <CADENA>)

Resumen - SQL

Pgina 11

Funciones Numricas

ROUND:

Redondea un nmero, a una determinada posicin de decimales. Si el numero


de posiciones a redondear es negativo, los nmeros a la izquierda del punto
decimal se redondean a decenas, centenas, ...
ROUND ( <NUMERO>, <NUM-POSICIONES>)

TRUNC:

Trunca en la posicin decimal indicada. Si el nmero de posiciones es


negativo, los nmeros a la izquierda del punto decimal se truncan a cero.
TRUNC (<NUMERO>, <NUM-POSICIONES>)

MOD:

Devuelve el resto de la divisin de un numero entre un divisor.


MOD (<NUMERO>, <NUM-DIVISOR>)

Resumen - SQL

Pgina 12

Trabajando con fechas


Oracle almacena fechas en un formato numrico interno de 7 bytes:
Siglo

Ao

Mes

Da

Horas

Minutos

Segundos

El formato de fecha por defecto es DD-MON-YY o DD-MM-YY


SYSDATE es una funcin que devuelve fecha y hora.

Operaciones con fechas


Sumar o restar un nmero a una fecha da por resultado una fecha. El nmero indicado lo toma
como das;
<FECHA>

<NUMERO>

<FECHA>

Restar dos fechas devuelve la cantidad de das entre esas fechas.


<FECHA>

<FECHA>

<NUMERO>

Sumar horas a una fecha se consigue dividiendo la cantidad sumada entre 24.
<FECHA>

Resumen - SQL

<NUMERO>/24

<FECHA>

Pgina 13

Funciones de Fecha
MONTHS_BETWEEN:

Nmero de meses entre dos fechas. El resultado puede ser positivo o


negativo.
MONTHS_BETWEEN (<FECHA-1>,<FECHA-2>)

ADD_MONTHS:

Aade un nmero de meses a la fecha, segn calendario. El nmero


indicado debe de ser un nmero entero y puede ser negativo.
ADD_MONTHS (<FECHA>,<NUMERO>)

NEXT_DAY:

Devuelve la fecha del da de la semana especificado, siguiente a fecha.


El da de la semana puede ser un nmero representando un da o una
cadena de caracteres, por ejemplo LUNES MARTES MIRCOLES
JUEVES VIERNES SBADO DOMINGO o 1 para el Lunes, 2 Martes, , 7
Domingo.

NEXT_DAY (<FECHA>,<DIA-SEMANA>)

Resumen - SQL

Pgina 14

LAST_DAY:

Devuelve la fecha del ltimo da del mes que contiene fecha.


LAST_DAY (<FECHA>)

ROUND:

Cuando no se especifica ningn formato, devuelve la fecha del primer


da del mes contenido en fecha. Si FORMATO es igual a YEAR,
encuentra el primer da del ao.
ROUND (<FECHA>,<FORMATO>)

Dependencia

Formato

Regla de redondeo

Ao

YYYY , YEAR, YYY, YY, Y

Redondea desde 1 de julio

Trimestre

Redondea hasta el 16 da del


segundo mes del trimestre

Mes

MON, MM

Redondea hasta el 16 da del


mes

Semana

WW

Redondea da de la semana

Da

DDD, DD, J

Inicio da de la semana DAY, D


Hora

HH, HH12, HH24

Minuto

MI

Resumen - SQL

Pgina 15

TRUNC:

Devuelve la fecha con la porcin del da truncado en la unidad especificada por


el modelo de formato. Si se omite el formato, la fecha se trunca en el da ms
prximo.
TRUNC (<FECHA>, <FORMATO>)

Resumen - SQL

Pgina 16

Formatos de Fecha
Siglos y aos
CC

Siglo

SCC

Siglo. Si es AC (Antes de Cristo), lleva un signo -

YYYY

Ao, formato de 4 dgitos

SYYY

Ao, formato de 4 dgitos. Si es AC lleva un signo -

YY

Ao, formato de 2 dgitos

YEAR

Ao, escrito en letras y en ingls (por ejemplo, 'TWO THOUSAND TWO')

SYEAR

dem, pero si es AC lleva el signo -

BC

Antes o Despus de Cristo (AC o DC) para usar con los anteriores, por
ejemplo YYYY BC
Meses

Trimestre: Ene-Mar=1, Abr-Jun=2, Jul-Sep=3, Oct-Dic=4

MM

Nmero de mes (1-12)

RM

Nmero de mes en nmeros romanos (I-XII)

MONTH

Nombre del mes completo rellenado con espacios hasta 10 espacios


(SEPTIEMBRE)

FMMONTH

Nombre del mes completo, sin espacios adicionales

MON

Tres primeras letras del mes: ENE, FEB,...


Semanas

WW

Semana del ao (1-52)

Semana del mes (1-5)

Resumen - SQL

Pgina 17

Das
DDD

Da del ao (1-366)

DD

Da del mes (1-31)

Da de la semana (1-7)

DAY

Nombre del da de la semana rellenado a 9 espacios (MIRCOLES)

FMDAY

Nombre del da de la semana, sin espacios

DY

Tres primeras letras del nombre del da de la semana

DDTH

Da (ordinal): 7TH

DDSPTH

Da ordinal en palabra, en ingls: SEVENTH

Resumen - SQL

Pgina 18

horas
HH

Hora del da (1-12)

HH12

Hora del da (1-12)

HH24

Hora del da (1-24)

SPHH

Hora del da, en palabra, ingls: SEVEN

AM

am o pm, para usar con HH, como 'HH:MI am'

PM

am o pm

A.M.

a.m. o p.m.

P.M.

a.m. o p.m.
Minutos y segundos

MI

Minutos (0-59)

SS

Segundos (0-59)

SSSS

Segundos despus de medianoche (0-86399)

Adems de estas palabras clave, el formato puede incluir espacios y los signos de
puntuacin -/,.;:. Cualquier otro carcter debe ir "entre comillas dobles".

Resumen - SQL

Pgina 19

Funciones de conversin
La conversin de tipos de datos puede ser:
VARCHAR2 o CHAR

NUMBER

VARCHAR2 o CHAR

DATE

NUMBER

VARCHAR2

DATE

VARCHAR2

TO_CHAR:

Convierte un nmero o fecha en una cadena de caracteres VARCHAR2 con el


modelo de formato indicado.
TO_CHAR (<NUMERO>|<FECHA> [, <FORMATO> ] )

9: Representa un nmero
0: Fuerza a que se muestra el cero
U: Signo del Euro
.: Imprime el punto decimal
;: Imprime el indicador de millar
Para fechas, los formatos anteriores.

TO_NUMBER: Convierte una cadena de caracteres con dgitos en un nmero.


TO_NUMBER (<CADENA>)

TO_DATE:

Convierte una cadena de caracteres representando una fecha en un valor de


fecha segn el formato especificado. Si se omite el formato tomar DD-MMYY.
TO_DATE (<CADENA>)

Resumen - SQL

Pgina 20

Funciones generales

NVL:

Convierte un nulo <EXPRE-1> a un valor de tipo fecha, cadena o nmero


<EXPRE-2>.
NVL (<EXPRE-1> , <EXPRE-2>)

NVL2:

Si la primera expresin no es nulo <EXPRE-1> devuelve <EXPRE-2>; en caso de


ser nula la primera expresin, devuelve , <EXPRE-3>).
NVL2 (<EXPRE-1> , <EXPRE-2> , <EXPRE-3>)

Resumen - SQL

Pgina 21

NULLIF:

Si la primera expresin <EXPRE-1> es igual a la segunda <EXPRE-2>, la funcin


devuelve el valor NULL. En el caso, que los valores de <EXPRE-1> y <EXPRE-2>,
sean distintos, la funcin devuelve el valor de la primera expresin <EXPRE-1>.
NULLIF ( <EXPRE-1> , <EXPRE-2> )

COALESCE:

Esta funcin retorna la primera expresin no nula de la lista.


EXPRE-1 es la expresin que se retorna si no es nula. EXPRE-2 es la expresin
que se retorna si expr1 es nula y si esta expresin no es nula.
EXPRE-N es la expresin que se retorna si la anterior expresin es nula. Si todas
las expresiones son nulas, la funcin retorna un nulo.
COALESCE ( <EXPRE-1> , <EXPRE-2>, <EXPRE-N> ) )

Resumen - SQL

Pgina 22

Expresiones condicionales

EXPRESIN CASE:
La expresin CASE permite utilizar la lgica IF-THEN-ELSE en sentencias
SQL sin tener que invocar procedimientos. Esta expresin se incluye a partir de
la versin Oracle9i.
La siguiente es la sintaxis que presenta la expresin CASE:
CASE <EXPRESION> WHEN <EXPRESION-COMPARACION> THEN <EXPREXION-RETORNADA>
[ WHEN <EXPRESION-COMPARACION-2> THEN <EXPREXION-RETORNADA-2>
WHEN <EXPRESION-COMPARACION-3> THEN <EXPREXION-RETORNADA-3>

WHEN <EXPRESION-COMPARACION-N> THEN <EXPREXION-RETORNADA-N>


ELSE <EXPRESION-SINO>]
END

Resumen - SQL

Pgina 23

En caso de omitir <EXPRESION>, se puede escribir en cada <EXPRESION-COMPARACION> una


condicional, utilizando los operadores de SQL (<,>,=,LIKE,BETWEEN,AND,OR,).

Resumen - SQL

Pgina 24

DECODE:

Hace las veces de sentencia CASE o IF-THEN-ELSE, para facilitar consultas


condicionales. Descifra una expresin despus de compararla con cada valor
de bsqueda. Si la expresin es la misma que la bsqueda, se devuelve el
resultado. Si se omite el valor por defecto, se devolver un valor nulo donde
una bsqueda no coincida con ninguno de los valores resultantes.
DECODE( <EXPRESION>,

<VALOR-BUSQUEDA-1>, <RESULTADO-1>

, <VALOR-BUSQUEDA-2>, <RESULTADO-2>
, <VALOR-BUSQUEDA-N>, <RESULTADO-N>]

Resumen - SQL

, <VALOR-DEFECTO> ] )

Pgina 25

SELECT DISTINCT Columna1 FROM tabla


Selecciona solo los valores distintos de Columna1. (Si valores de Columna1 son 1, 2, 2, 3 el
SELECT solo devolver 1,2,3)

Clusulas
WHERE

Para especificar la condicin de seleccin de registros

ORDER BY
Para ordenar el resultado de la seleccin por una o varias columnas
SELECT * FROM Tabla1 ORDER BY Columna1 [,Columna2,] [ASC]/[DESC]

Resumen - SQL

Pgina 26

GROUP BY
Permite agrupar resultados.
SELECT Columna1, SUM(Columna2) FROM Tabla1 GROUP BY Columna1
Devuelve la suma de los valores de Columna2 correspondientes a cada uno de los valores diferentes
de Columna1.

HAVING

Permite establecer condiciones dentro de agrupaciones, donde no se puede usar la clusula


WHERE

SELECT Columna1, SUM(Columna2) FROM Tabla1 GROUP BY Columna1 HAVING SUM(Columna2) >
Valor1
Devuelve la suma de los valores de Columna2 correspondientes a cada uno de los valores diferentes de
Columna1, siempre que el resultado de la suma sea mayor que Valor1.

Resumen - SQL

Pgina 27

Agrupaciones
SELECT <EXP-AGRUPADO-1> [, <EXP-AGRUPADO-2> , ],
FROM <NOMBRE-TABLA>
[ WHERE <CONDICION> ]
[ GROUP BY <EXP-AGRUPACION> ]
[ HAVING <CONDICION> ]
El agrupamiento combina los registros con valores idnticos, en la lista de campos
especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye
una funcin SQL agregada, como por ejemplo SUM o COUNT, en la instruccin SELECT.
GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL
agregada en la instruccin SELECT.
Los valores NULL en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores
NULL no se evalan en ninguna de las funciones SQL agregadas.
Se utiliza la clusula WHERE para excluir aquellas filas que no se desea agrupar, y la clusula
HAVING para filtrar los registros una vez agrupados.

Resumen - SQL

Pgina 28

Funciones de tipo agrupado


AVG:

SUM:

COUNT:

MAX:

MIN:

Calcula la media aritmtica de un conjunto de valores contenidos en un campo


especificado de una consulta. <EXPRESION> representa el campo que contiene
los datos numricos para los que se desea calcular la media o una expresin
que realiza un clculo utilizando los datos de dicho campo. La media calculada
por AVG es la media aritmtica (la suma de los valores dividido por el nmero
de valores). La funcin Avg no incluye ningn campo Null en el clculo.
AVG(<EXPRESION>)
Devuelve la suma del conjunto de valores contenido en un campo especifico de
una consulta. En donde <EXPRESION> representa el nombre del campo que
contiene los datos que desean sumarse o una expresin que realiza un clculo
utilizando los datos de dichos campos.
SUM(<EXPRESION>)
Calcula el nmero de registros devueltos por una consulta. En donde
<EXPRESION> contiene el nombre del campo que desea contar. Puede contar
cualquier tipo de datos incluso texto. COUNT simplemente cuenta el nmero
de registros sin tener en cuenta qu valores se almacenan en los registros. La
funcin COUNT no cuenta los registros que tienen campos NULL a menos que
<EXPRESION> sea el carcter comodn asterisco (*). Si utiliza un asterisco,
COUNT calcula el nmero total de registros, incluyendo aquellos que contienen
campos NULL. COUNT(*) es considerablemente ms rpida que
COUNT(<EXPRESION>). No se debe poner el asterisco entre comillas ('*').
COUNT(<EXPRESION>)

Devuelven el mximo de un conjunto de valores contenidos en un campo


especifico de una consulta. En donde <EXPRESION> es el campo sobre el que
se desea realizar el clculo.
MAX(<EXPRESION>)
Devuelven el mnimo de un conjunto de valores contenidos en un campo
especifico de una consulta. En donde <EXPRESION> es el campo sobre el que
se desea realizar el clculo.
MIN(<EXPRESION>)

Resumen - SQL

Pgina 29

Resumen - SQL

Pgina 30

Resumen - SQL

Pgina 31

Unin de tablas
En la mayora de las veces, todos los datos no estarn en la misma tabla, sino que por diseo
de la base de datos, habrn quedado repartidos en diferentes tablas.
En esas ocasiones, para hacer las consultas correspondientes es necesario combinar todas las
tablas en las que estn los datos.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ NATURAL JOIN <NOMBRE-TABLA-2> ]

[ JOIN <NOMBRE-TABLA-2> USING ( <COLUMNA-COMUN> ) ]

[ JOIN <NOMBRE-TABLA-2>
ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

[ LEFT | RIGHT | FULL | OUTER JOIN <NOMBRE-TABLA-2>


ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

[ CROSS JOIN <NOMBRE-TABLA-2> ] ;

Resumen - SQL

Pgina 32

CROSS JOIN
Cruza ambas tablas dando como resultado una fila por cada combinacin de registros de
ambas tablas. Es decir que si una tabla tiene 4 registros y la otra otros 4, el resultado del
SELECT dar 16 filas (4x4).
La composicin (JOIN) de tablas se produce cuando se combinan datos de dos o ms tablas. Es
un caso particular de la operacin del lgebra relacional llamada producto cartesiano. Para
obtener un producto cartesiano se debe poner en la clusula FROM el nombre de las tablas
que se quieran combinar
Para especificar el nombre de una columna comn entre varias tablas, deberemos poner en

alguno de los casos, el nombre de la tabla y un punto, delante del nombre de la columna
(NOMBRE-TABLA.COLUMNA> ) .

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ CROSS JOIN <NOMBRE-TABLA-2> ] ;

Resumen - SQL

Pgina 33

Lo mismo se consigue si escribimos la definicin CROSS JOIN.

Resumen - SQL

Pgina 34

NATURAL JOIN

Para poder hacer un NATURAL JOIN es preciso que las dos tablas que se combinan tengan el
mismo nombre y el mismo tipo de datos para el atributo por el que se hace la composicin
Pero si ocurriera que aun teniendo el mismo nombre, las dos columnas no tienen el mismo
tipo de dato, habra que recurrir a la clusula USING que puede ser usada para especificar
aquellas columnas que participarn en la unin siempre y cuando las columnas que participen
en la composicin no tengan un calificador (nombre de tabla o alias).
Da como resultado los elementos que tienen un valor comn en una columna de cada tabla.
La condicin se evala antes de juntar las tablas, de tal manera que solo se juntan los registros
que previamente cumplen la condicin
En el supuesto de tener ambas tablas, varios campos comunes, deber coincidir los valores de
los diversos campos comunes.
SELECT <EXPRESION-1> [, <EXPRESION-2> , ],
FROM

<NOMBRE-TABLA-1>

[ NATURAL JOIN <NOMBRE-TABLA-2> ]

Resumen - SQL

Pgina 35

JOIN USING

Para poder hacer un USING JOIN es preciso que las dos tablas que se combinan tengan el
mismo nombre pero no el mismo tipo de datos para el atributo por el que se hace la
composicin
La clusula USING puede ser usada para especificar aquellas columnas que participarn en la
unin siempre y cuando las columnas que participen en la composicin no tengan un nombre
de tabla o alias.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ JOIN <NOMBRE-TABLA-2> USING ( <COLUMNA-COMUN> ) ]

Resumen - SQL

Pgina 36

INNER JOIN

Da como resultado los elementos que tienen un valor comn en una columna de cada tabla.
Dichas columnas hay que indicarlas expresamente, despus de la preposicin ON.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ JOIN <NOMBRE-TABLA-2>
ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

Resumen - SQL

Pgina 37

LEFT JOIN

Da como resultado los elementos que tienen un valor comn en una columna de cada tabla, y
devuelve el conjunto completo de valores de la tabla de la izquierda, dejando nulas las
columnas de tabla de la derecha que no cumplen la condicin.
Dichas columnas hay que indicarlas expresamente, despus de la preposicin ON.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ LEFT JOIN <NOMBRE-TABLA-2>


ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

Resumen - SQL

Pgina 38

RIGHT JOIN

Da como resultado los elementos que tienen un valor comn en una columna de cada tabla, y
devuelve el conjunto completo de valores de la tabla de la derecha, dejando nulas las
columnas de tabla de la izquierda que no cumplen la condicin.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ RIGHT JOIN <NOMBRE-TABLA-2>


ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

Resumen - SQL

Pgina 39

FULL JOIN

Da como resultado los elementos que tienen un valor comn en una columna de cada tabla, y
devuelve el conjunto completo de valores de la tabla de la derecha, y devuelve el conjunto
completo de valores de la tabla de la derecha.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM

<NOMBRE-TABLA-1>

[ FULL JOIN <NOMBRE-TABLA-2>


ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]

Resumen - SQL

Pgina 40

JOIN MULTIPLES

Podemos realizar consultas con mltiples tablas.

SELECT <EXPRESION-1> [, <EXPRESION-2> , ],


FROM
[

<NOMBRE-TABLA-1>

JOIN <NOMBRE-TABLA-2>

ON <TABLA-1.COLUMNA> = <TABLA-2.COLUMNA> ]
[

JOIN <NOMBRE-TABLA-3>

ON <TABLA-2.COLUMNA> = <TABLA-3.COLUMNA> ]

Resumen - SQL

Pgina 41

Resumen - SQL

Pgina 42

Subconsultas
Una Subconsulta es una consulta cuyo resultado es pasado como argumento a otra consulta.

Las subconsultas podrn formar parte de la expresin condicional.

Para subconsultas que devuelven una sola fila como resultado, podemos utilizar los
operadores =, <>, >, <, >=, <=.

Resumen - SQL

Pgina 43

Para subconsultas que devuelven ms de una fila como resultado, podemos utilizar los
operadores IN, ANY, ALL.

IN

ANY
Comparan el resultado de la subconsulta con cada una de las filas de la consulta, devolviendo
"verdadero" por cada fila de la consulta que tiene un resultado en la subconsulta.
Esto puede parecer igual que el resultado obtenido usando "IN". La diferencia estriba que
"ANY" puede ser usado con otros operadores distintos de "=", tales como ">", "<", "<>", etc.

Resumen - SQL

Pgina 44

ALL
Lo contrario a ANY es ALL (Cualquier valor, Todos los valores)

EXISTS
EXISTS toma un subconsulta como argumento y devuelve "verdadero" si la subconsulta
devuelve algo y "falso" si no devuelve nada.

Admite la posibilidad de la negacin NOT EXISTS.

Resumen - SQL

Pgina 45

Subconsultas utilizadas como una expresin


Una subconsulta se puede usar all donde se pueda utilizar una expresin en las ordenes
SELECT, INSERT, UPDATE, DELETE, excepto en una lista ORDER BY.

Resumen - SQL

Pgina 46

Subconsultas con mltiples niveles de anidamiento


Una consulta puede incluir en su interior una o varias subconsultas y en una instruccin se
pueden anidar cualquier nmero de subconsultas.

UNION
Da como resultado los registros distintos de las subconsultas implicadas. Las consultas deben
devolver el mismo nmero de columnas y del mismo tipo de dato.

Resumen - SQL

Pgina 47

UNION ALL
Da como resultado todos los registros de las subconsultas implicadas.

Resumen - SQL

Pgina 48

INTERSECT
Da como resultado los registros iguales de las subconsultas implicadas. Las consultas deben
devolver el mismo nmero de columnas y del mismo tipo de dato.

MINUS
Da como resultado los registros nicos de la primera subconsulta respecto a la segunda
consulta implicada. Las consultas deben devolver el mismo nmero de columnas y del mismo
tipo de dato.

Resumen - SQL

Pgina 49

La consulta anterior, cambiando el orden de las tablas.

Resumen - SQL

Pgina 50

También podría gustarte