La declaración SQL SELECT INTO en el lenguaje de consulta estructurado, copia el contenido de una tabla existente en la nueva tabla. SQL server crea la nueva tabla utilizando la estructura de la tabla existente.
Si no hemos creado la tabla de destino, la instrucción SQL Select Into puede ser útil para insertar los datos en la tabla de destino. Si tiene una tabla existente, use Insert Into Select.
Sintaxis SQL SELECT INTO
SQL Server SELECT INTO se puede escribir como:
SELECT[nombre de columnas]
INTO [nueva tabla]
FROM tabla origen
WHERE Condición --opcional
- Columnas: Nos permite elegir el número de columnas a Seleccionar de las tablas. Puede ser uno o más.
- Nueva_Tabla: especifique el nombre único totalmente calificado para SQL Server.
- Tabla origen: Una o más tablas presentes en la Base de Datos. Use JOINS para unir múltiples.
Nota: Al usar la declaración SQL select into, hay ciertas cosas que debemos tener en cuenta que se enumeran a continuación:
Podemos utilizar otras cláusulas y sentencias junto con la sentencia SELECT como UNION, HAVING, INNER JOIN y GROUP BY para obtener una fila recuperada de una sentencia select.
En caso de que la instrucción de consulta utilizada mediante la instrucción de selección no recupere ninguno de los valores de fila, entonces SQL generará una excepción de NO_DATA.
Puede utilizar la declaración SELECT INTO en SQL para recuperar la fila que contiene valores de una o varias columnas en la resultante para almacenarlos en variables.
Ejemplos de sentencia SQL SELECT INTO
En la siguiente captura de pantalla, puede ver los pasos donde copiamos la tabla Empleados de la base de datos ejemplo y la insertamos en la base de datos departamentos, usando la declaración SQL SELECT INTO.
1. clic en el comando nueva consulta.
2. Digitamos el query.
3. Clic en comando ejecutar.
4. Clic en el botón refrescar del explorador de objetos, esto hace que aparezca los resultados del query
Nota: Si la base de datos ya tiene una tabla con el mismo nombre, SELECT INTO da error. Cuando usa la instrucción SELECT INTO es que creará una nueva tabla con la misma estructura que las columnas de la tabla de la instrucción SELECT. Esto significa que las restricciones, índices u otros objetos de base de datos asociados con la tabla original no se incluirán en la nueva tabla. Si necesita incluir estos objetos en la nueva tabla, deberá crearlos por separado.
Para copiar datos de tabla existente (en vez de crear una nueva tabla), usamos la instrucción INSERT INTO SELECT .
Ejemplo instrucción SELECT INTO con condición WHERE
SELECT Id,Nombre,
INTO [Condominio].[dbo].[Empleados]
FROM [ejemplo].[dbo].[Empleado]
WHERE País = 'MEXICO';
Aquí, el comando SQL copia las filas a la nueva tabla si el valor del país es igual MEXICO.
Ejemplo instrucción SELECT INTO copia tabla a otra base de datos
Si queremos copiar información de tabla a otra base de datos, podemos hacerlo usando la cláusula IN
. Por ejemplo,
SELECT Id, Nombre,
INTO [Condominio].[dbo].[Empleados]
IN otra_db.mdb
FROM [ejemplo].[dbo].[Empleado]
Nota: El usuario de SQL server debe tener privilegio de ESCRITURA .
Copiar solo esquema de tabla
SELECT *
INTO Nuevoclientes
FROM Clientes
WHERE false;
Limitaciones y Restricciones
La instrucción SQL SELECT INTO tiene algunas limitaciones a continuación:
- No se puede crear una tabla particionada usando SQL SELECT INTO . No es útil incluso cuando la tabla principal o existente es una tabla particionada. Nota: La tabla particionada es una tabla grande que se divide en tablas pequeñas para que sea más fácil de administrar y consultar los datos.
- Los índices, las restricciones y los disparadores no se incluiran a la nueva tabla. Estamos obligados a definirlos manualmente después de la instrucción SQL SELECT INTO.
- La cláusula ORDER BY no garantiza el orden especificado de los registros en la nueva tabla.
No podemos completar una columna mientras la insertamos usando select into declaración. Incluso si usamos una expresión, solo inserta valores antiguos.