martes, 22 de diciembre de 2015

INSERT INTO desde SELECT

Buenas tardes queridos lectores, el día de hoy veremos cómo crear una tabla nueva en SQL SERVER a partir de una consulta SELECT, pero vayamos a los ejemplos y luego a la explicación:

Ejemplo 1: Script que permita replicar los registros de la tabla PASAJERO en una nueva tabla llamada MIS PASAJEROS. Utilizaremos la cláusula INTO
Hay que tener en cuenta que la cláusula INTO permite crear la tabla y además definir sus columnas en base a las columnas especificadas en la consulta. Vamos a ver el script que realiza el proceso

IF OBJECT_ID('MISPASAJEROS') IS NOT NULL
BEGIN
       DROP TABLE MISPASAJEROS
END
GO

SELECT P.*
       INTO MISPASAJEROS
       FROM PASAJERO P
GO

SELECT * FROM MISPASAJEROS
GO

En el primer bloque se tiene que verificar que la tabla no existe para poder continuar con el proceso de creación y asignación de valores, caso contrario se tendrá que eliminar la tabla. En este caso se usa la función OBJECT_ID para verificar que existe la tabla MISPASAJEROS al asignarle IS NOT NULL estamos indicando que la tabla si existe, dentro de la condicional se especifica la eliminación de la tabla con sentencia DROP TABLE.

En el segundo bloque se hace referencia a todas las columnas de la tabla de origen con P.* donde P es el alias de la tabla PASAJERO, luego se especifica la nueva tabla con INTO MISPASAJEROS, como en el primero bloque se verificó que la tabla no existía, entonces esta línea no causará errores al usuario, finalmente se especifica de donde provienen los datos de origen con FROM PASAJERO P.

En el último bloque se hace la consulta en referencia a la nueva tabla creada por consecuencia de la consulta del segundo bloque.

Podríamos usar la misma tabla para replicar a los pasajeros que cumplan con una determinada condición como por ejemplo, que copie solo a los pasajeros que tengan el correo HOTMAIL. Para esto, debemos colocar el siguiente script:

IF OBJECT_ID('MISPASAJEROS') IS NOT NULL
BEGIN
       DROP TABLE MISPASAJEROS
END
GO

SELECT P.*
       INTO MISPASAJEROS
       FROM PASAJERO P
       WHERE P.EMAIL LIKE '%HOTMAIL%'
GO

SELECT * FROM MISPASAJEROS
GO

Como notará en el segundo bloque se hace referencia a la condición de solo email de HOTMAIL usando la clausula WHERE que explicaremos en otra ocasión.

Hasta aquí el post queridos lectores, pero vamos a continuar con más de la sentencia SELECT, ya que es muy completa, espero comenten, le den +1 o algún clic a algún anuncio de su interés.

Saludos a todos

Banderas de Visitantes

Flag Counter