Escolar Documentos
Profissional Documentos
Cultura Documentos
per
nombre
apellido1
apellido2
dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendramos que hacer
un JOIN de las 2 tablas "personas" y "departamentos", que se relacionaran por la columna "dep".
Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la informacin
de la tabla "departamentos".
INNER JOIN
La sentencia INNER JOIN es el sentencia JOIN por defecto, y consiste en combinar cada fila de una
tabla con cada fila de la otra tabla, seleccionado aquellas filas que cumplan una determinada condicin.
per
nombre
apellido1
apellido2
dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
SELECT nombre, apellido1, departamento FROM personas INNER JOIN departamentos WHERE
personas.dep = departamentos.dep
nombre
apellido1
departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
PEDRO
RUIZ
INFORMATICA
LEFT
JOIN
La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda tabla.
Siempre devolver las filas de la primera tabla, incluso aunque no cumplan la condicin.
SELECT
*
LEFT
JOIN
WHERE tabla1.columna1 = tabla2.columna1
Ejemplo de SQL LEFT JOIN
Tabla personas, con la clave primaria "per "
FROM
tabla1
tabla2
per
nombre
apellido1
apellido2
dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
Departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
SELECT
nombre,
FROM
LEFT
JOIN
WHERE personas.dep = departamentos.dep
apellido1,
nombre
apellido1
departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
PEDRO
RUIZ
departamento
personas
departamentos
Aunque el departamento '4' de PEDRO RUIZ no existe en la tabla de departamentos, devolver la fila
con esa columna 'departamento' en blanco.
RIGHT
JOIN
La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la segunda tabla.
Siempre devolver las filas de la segunda tabla, incluso aunque no cumplan la condicin.
En algunas bases de datos, la sentencia RIGHT JOIN es igual a RIGHT OUTER JOIN
per
nombre
apellido1
apellido2
dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
SELECT
nombre,
FROM
RIGHT
JOIN
WHERE personas.dep = departamentos.dep
apellido1,
nombre
apellido1
departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
departamento
personas
departamentos
COMERCIAL
Aunque no exista ninguna persona del departamento 'COMERCIAL' (3), esta fila aparecer con las otras
columnas en blanco
FULL
JOIN
La sentencia FULL JOIN combina los valores de la primera tabla con los valores de la segunda tabla.
Siempre devolver las filas de las dos tablas, aunque no cumplan la condicin.
La sentencia FULL JOIN es la unin de LEFT JOIN y RIGHT JOIN
Per
nombre
apellido1
apellido2
dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
SELECT
nombre,
FROM
FULL
JOIN
WHERE personas.dep = departamentos.dep
apellido1,
nombre
apellido1
departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
PEDRO
RUIZ
COMERCIAL
departamento
personas
departamentos
UNION
La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT.
Las dos sentencias SELECT tienen que tener el mismo nmero de columnas, con el mismo tipo de dato y
en el mismo orden.
Sintaxis SQL UNION
SELECT
UNION
columna1,
columna2
FROM
tabla1
per
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Tabla "personas_empresa2"
per
nombre
apellido1
apellido2
JUAN
APARICIO
TENS
ANTONIO
GARCIA
RODRIGUEZ
LUIS
LOPEZ
VAZQUEZ
SELECT
nombre,
apellido1
UNION
SELECT nombre, apellido1 FROM personas_empresa2
nombre
apellido1
ANTONIO
PEREZ
ANTONIO
GARCIA
PEDRO
RUIZ
JUAN
APARICIO
LUIS
LOPEZ
FROM
personas_empresa1
La persona 'ANTONIO GARCIA RODRIGUEZ' aparecer solo una vez en el resultado, porque no
aparecern las filas repetidas.
PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado es un conjunto de instrucciones a las que se les da un nombre,
que se almacena en el servidor. Permiten encapsular tareas repetitivas.
SQL Server permite los siguientes tipos de procedimientos almacenados:
1) del sistema: estn almacenados en la base de datos "master" y llevan el prefijo "sp_";
permiten recuperar informacin de las tablas del sistema y pueden ejecutarse en cualquier base
de datos.
2) locales: los crea el usuario
3) temporales: pueden ser locales, cuyos nombres comienzan con un signo numeral (#), o
globales, cuyos nombres comienzan con 2 signos numeral (##). Los procedimientos
almacenados temporales locales estn disponibles en la sesin de un solo usuario y se eliminan
automticamente al finalizar la sesin; los globales estn disponibles en las sesiones de todos
los usuarios.
4) extendidos: se implementan como bibliotecas de vnculos dinmicos (DLL, Dynamic-Link
Libraries), se ejecutan fuera del entorno de SQL Server. Generalmente llevan el prefijo "xp_".
No los estudiaremos.
Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar
si son correctas sintcticamente. Si no se detectan errores, SQL Server guarda el nombre del