Anda di halaman 1dari 9

Anlisis y consultas SQL

HERNAN DAVID CONRADO MEDINA


851817

Instructor
Julin Tres palacios
Docente

Sevicio nacional de aprendizaje-Sena


Diseo de bases de datos
Valledupar

2016
FUNCIONES SQL
Las funciones se pueden ver como cajas negras a las que les pasamos unos
parmetros de entrada y tras procesarlos devuelven un nico resultado o dato de
salida.
Con anterioridad en este curso apareci la funcin CONCAT, que realiza la
concatenacin de dos o ms cadenas de texto. Los parmetros de entrada en este
caso son tantas cadenas como deseemos separadas por comas, y el resultado
que devuelve es una nica cadena con la concatenacin de todas las cadenas de
entrada.

select concat ('Esto ','es ','un ','ejemplo ',


'de ','concatenacin ', 'de ', 'cadenas ',
'de ','texto.') as EJEMPLO_CONCAT

SQL Server 2005 proporciona numerosas funciones integradas y permite crear


funciones definidas por el usuario.
Existen diferentes tipos de funciones:
Funciones de conjuntos de filas: devuelven un objeto que se puede utilizar, en
instrucciones Transact-SQL, en lugar de una referencia a una tabla.
Funciones de agregado (tambin llamadas funciones de columna): Operan sobre
una coleccin de valores y devuelven un solo valor de resumen. Por ejemplo, la
funcin de suma sobre la columna importe para conocer el importe
total: SUM(importe)
Funciones de categora: Devuelven un valor de categora para cada fila de un
conjunto de filas, por ejemplo, devuelve el nmero de la fila, el ranking de la fila en
una determinada ordenacin, etc.
Funciones escalares: Operan sobre un valor y despus devuelven otro valor. Son
las funciones que estamos acostumbrados a utilizar. Las funciones escalares se
clasifican segn el tipo de datos de sus operandos.

INNER JOIN
El INNER JOIN palabra clave selecciona todas las filas de ambas tablas, siempre
y cuando hay una coincidencia entre las columnas de ambas tablas.
Sintaxis
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
O
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
Inner left Join
La izquierda JOIN devuelve la palabra clave todas las filas de la tabla izquierda
(tabla 1), con las filas coincidentes en la tabla de la derecha (Tabla 2). El resultado
es NULL en el lado derecho, cuando no hay ninguna coincidencia.
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
O
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

Inner right Join


El DERECHO JOIN devuelve la palabra clave todas las filas de la tabla derecha
(Tabla 2), con las filas coincidentes en la tabla a la izquierda (tabla 1). El resultado
es NULL en el lado izquierdo cuando no hay ninguna coincidencia.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
O
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
Inner Full Join
El FULL OUTER JOIN devuelve la palabra clave todas las filas de la tabla
izquierda (Tabla 1) y de la tabla de la derecha (Tabla2).
El FULL OUTER JOIN palabra clave combina el resultado tanto de izquierda y
derecha se une.
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
Subconsultas
Una subconsulta es una sentencia SELECT que aparece dentro de otra
sentencia SELECT que llamaremos consulta principal.
Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la
clusula HAVING de la consulta principal.

Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal
exceptuando que aparece encerrada entre parntesis, no puede contener la
clusula ORDER BY, ni puede ser la UNION de varias sentencias SELECT,
adems tiene algunas restricciones en cuanto a nmero de columnas segn el
lugar donde aparece en la consulta principal. Estas restricciones las iremos
describiendo en cada caso.
Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se
ejecuta por cada fila de la consulta principal.
Se aconseja no utilizar campos calculados en las subconsultas, ralentizan la
consulta.
Las consultas que utilizan subconsultas suelen ser ms fciles de interpretar por el
usuario.

Referencias externas subconsultas


A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia
al valor de una columna en la fila actual de la consulta principal, ese nombre de
columna se denomina referencia externa.
Una referencia externa es un nombre de columna que estando en la
subconsulta, no se refiere a ninguna columna de las tablas designadas en
la FROM de la subconsulta sino a una columna de las tablas designadas en la
FROM de la consulta principal. Como la subconsulta se ejecuta por cada fila de
la consulta principal, el valor de la referencia externa ir cambiando.
Ejemplo:
SELECT numemp, nombre, (SELECT MIN(fechapedido) FROM pedidos
WHERE rep = numemp)
FROM empleados;
En este ejemplo la consulta principal es SELECT... FROM empleados.
La subconsulta es (SELECT MIN(fechapedido) FROM pedidos WHERE rep =
numemp ).
En esta subconsulta tenemos una referencia externa (numemp) es un campo de
la tabla empleados (origen de la consulta principal).
Qu pasa cuando se ejecuta la consulta principal?
- se coge el primer empleado y se calcula la subconsulta sustituyendo numemp
por el valor que tiene en el primer empleado. La subconsulta obtiene la fecha
ms antigua en los pedidos del rep = 101,
- se coge el segundo empleado y se calcula la subconsulta con numemp = 102

(numemp del segundo empleado) ... y as sucesivamente hasta llegar al ltimo


empleado.
Al final obtenemos una lista con el nmero, nombre y fecha del primer pedido de
cada empleado.
Si quitamos la clusula WHERE de la subconsulta obtenemos la fecha del
primer pedido de todos los pedidos no del empleado correspondiente.
ANIDAR SUBCONSULTAS

Las subconsultas pueden anidarse de forma que una subconsulta


aparezca en la clusula WHERE (por ejemplo) de otra subconsulta que a
su vez forma parte de otra consulta principal. En la prctica, una consulta
consume mucho ms tiempo y memoria cuando se incrementa el nmero
de niveles de anidamiento. La consulta resulta tambin ms difcil de leer,
comprender y mantener cuando contiene ms de uno o dos niveles de
subconsultas.
Ejemplo:
SELECT numemp, nombre
FROM empleados
WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT
numclie FROM clientes WHERE nombre = 'Julia Antequera'))
En este ejemplo, por cada linea de pedido se calcula la subconsulta de
clientes, y esto se repite por cada empleado, en el caso de tener 10 filas de
empleados y 200 filas de pedidos (tablas realmente pequeas), la
subconsulta ms interna se ejecutara 2000 veces (10 x 200).
SUBCONSULTAS EN LA LISTA DE SELECCIN
Cuando la subconsulta aparece en la lista de seleccin de la consulta
principal, en este caso la subconsulta, no puede devolver varias filas ni
varias columnas, de lo contrario se da un mensaje de error.
Muchos SQL no permiten que una subconsulta aparezca en la lista de
seleccin de la consulta principal pero eso no es ningn problema ya
que normalmente se puede obtener lo mismo utilizando como origen de
datos las dos tablas. El ejemplo anterior se puede obtener de la
siguiente forma:

SELECT numemp, nombre, MIN(fechapedido)


FROM empleados LEFT JOIN pedidos ON empleados.numemp =
pedidos.rep
GROUP BY numemp, nombre

Subconsulta en las clusulas WHERE y HAVING


Se suele utilizar subconsultas en las clusulas WHERE o HAVING cuando
los datos que queremos visualizar estn en una tabla, pero para seleccionar
las filas de esa tabla necesitamos un dato que est en otra tabla.
Ejemplo:
SELECT numemp, nombre
FROM empleados
WHERE contrato = (SELECT MIN(fechapedido) FROM pedidos)
En este ejemplo listamos el nmero y nombre de los empleados cuya
fecha de contrato sea igual a la primera fecha de todos los pedidos de
la empresa.
En una clusula WHERE / HAVING tenemos siempre una condicin y
la subconsulta acta de operando dentro de esa condicin.
En el ejemplo anterior se compara contrato con el resultado de la
subconsulta. Hasta ahora las condiciones estudiadas tenan como
operandos valores simples (el valor contenido en una columna de una
fila de la tabla, el resultado de una operacin aritmtica...) ahora la
subconsulta puede devolver una columna entera por lo que es
necesario definir otro tipo de condiciones especiales para cuando se
utilizan con subconsultas.

VISTAS
Las consultas que hemos visto hasta ahora son trozos de cdigo SQL que
podemos guardar en un archivo de texto y abrir y ejecutar cuando queramos, pero
si queremos que nuestra consulta de recuperacin de datos se guarde en la propia
base de datos y se comporte como una tabla (algo parecido a una consulta
almacenada de Access), la tenemos que definir como una vista. Esta vista tiene la

ventaja entre otras de poder ser utilizada como si fuese una tabla en otras
consultas. Realmente al ejecutarla obtenemos una tabla lgica almacenada en
memoria y lo que se guarda en la base de datos es su definicin, la instruccin
SQL que permite recuperar los datos.

Para definir
una vista en
el Explorador
de
Objetos desplegamos la base de
datos donde la
guardaremos y elegimos la opcin Nueva vista del men contextual de la
carpeta Vistas, se pondr en funcionamiento el generador de consultas
pidindonos las tablas en las que se basar la vista. Pulsamos sobre la tabla a
aadir al diseo de la vista y pulsamos el botn Agregar, podemos aadir as
cuntas tablas queramos.
Despus de Cerrar, vemos a la derecha del Explorador de Objetos la pestaa con
la definicin de la vista que puede incluir varios paneles:

La
de estos
es

aparicin
paneles

configurable, en la barra de herramientas Diseador de vistas los iconos


remarcados en azul son los correspondientes a cada panel:

Anda mungkin juga menyukai