INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.

IniciosqlINSERT SQL
INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.

by Juan Carlos García

22-Mzo-2024

(2)

Suscribirme al canal:

Hola amigo / amiga, bienvenido a este nuevo post donde revisaremos y aprenderemos a insertar datos dentro de una tabla perteneciente a una base de datos, todo esto lo haremos a través de: INSERT SQL.

El objetivo es que al finalizar aprendas que: mediante el comando INSERT le indicamos al motor de base de datos en que tabla queremos agregar nuevos datos y los campos o atributos que deseamos afectar, así que comencemos con este tema.

¡No te puedes perder las nuevas clases 🧐!

SQL

SQL

SQL: Curso gratuito de SQL ¿Qué es el lenguaje SQL? Sintaxis y sentencias básicas

CREATE, DROP Y ALTER DATABASE

CREATE, DROP Y ALTER DATABASE

¿Cómo crear (CREATE DATABASE), modificar (ALTER DATABASE) y eliminar (DROP DATABASE) una base de datos en SQL Server?

CREATE, DROP Y ALTER TABLE

CREATE, DROP Y ALTER TABLE

Manejo de tablas en SQL Server: CREATE TABLE, ALTER TABLE y DROP TABLE.

SELECT SQL

SELECT SQL

SELECT SQL SERVER: ¿Cómo seleccionar y consultar datos en SQL Server?

INSERT SQL

INSERT SQL

INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.

JOIN SQL

JOIN SQL

JOIN SQL: ¿Qué son y cómo funcionan INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN y CROSS JOIN?

Update SQL

Update SQL

UPDATE SQL: ¿Cómo actualizar datos en una tabla en SQL Server?

DELETE SQL

DELETE SQL

DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?

Stored Procedure en SQL Server

Stored Procedure en SQL Server

Stored Procedure en SQL Server: ¿Cómo crear, modificar y ejecutar procedimientos almacenados en SQL Server?

Conexión Remota en SQL Server

Conexión Remota en SQL Server

Habilitar la Conexión Remota en SQL Server con VirtualBox

Connection String

Connection String

Connection String de SQL Server: Una Guía Completa para Establecer Conexiones con la Base de Datos

SQL Server SUBSTRING

SQL Server SUBSTRING

Guía Completa de SQL Server SUBSTRING: Uso y Ejemplos

CASE en SQL Server

CASE en SQL Server

Cláusula CASE en SQL Server: Uso y Ejemplos de Condicionales en Consultas

SQL Server REPLACE

SQL Server REPLACE

SQL Server REPLACE: Función para la manipulación de cadenas de texto

IF en SQL Server

IF en SQL Server

Sentencias IF, IF-ELSE e IF-EXISTS en SQL Server: Guía completa.

🧐 Autoevaluación: INSERT SQL

¿Qué es y para que sirve INSERT VALUES?

¿Qué es y para que sirve INSERT SELECT?

¿Qué es y para que sirve INSERT INTO?

Para comprender esta clase a la perfección, te recomiendo que des un repaso a estas vídeos, no olvides en suscribirte a mi canal de YouTube:

⚠️ NOTA: recuerda que SQL Server utiliza el lenguaje Transact-SQL (T-SQL) el cual es una variante mejorada del lenguaje SQL, por lo tanto, el comando INSERT lo intentaré hacer lo más apegado a SQL, pero, si hay que profundizar, lo haré tomando en cuenta la sintaxis que proporciona Transact-SQL.

 

INSERT SQL: ¿Cómo insertar datos en una tabla?

Vamos a responder esta pregunta a través de varios ejemplos con INSERT, veremos algunas formas que SQL nos proporciona para agregar datos nuevos a una tabla y, dado que, T-SQL proporciona una gran cantidad de opciones para INSERT, analizaremos los casos básicos para no confundirte.

 

¿Qué es y para que sirve INSERT SQL?

El comando INSERT permite agregar nuevos datos a una tabla perteneciente a una base de datos.

Para poder comprender mejor como se lleva a cabo la inserción de datos, analicemos un por la sintaxis de este comando.

 

Sintaxis T-SQL: INSERT

[ WITH <common_table_expression> [ ,...n ] ]  
INSERT   
{  
        [ TOP ( expression ) [ PERCENT ] ]   
        [ INTO ]   
        { <object> | rowset_function_limited   
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]  
        }  
    {  
        [ ( column_list ) ]   
        [ <OUTPUT Clause> ]  
        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ]   
        | derived_table   
        | execute_statement  
        | <dml_table_source>  
        | DEFAULT VALUES   
        }  
    }  
}  
[;]  
  
<object> ::=  
{   
    [ server_name . database_name . schema_name .   
      | database_name .[ schema_name ] .   
      | schema_name .   
    ]  
  table_or_view_name  
}  
  
<dml_table_source> ::=  
    SELECT <select_list>  
    FROM ( <dml_statement_with_output_clause> )   
      [AS] table_alias [ ( column_alias [ ,...n ] ) ]  
    [ WHERE <search_condition> ]  
        [ OPTION ( <query_hint> [ ,...n ] ) ] 

De esta sintaxis podemos destacar los siguiente:

  • INTO: es una palabra clave que acompaña a INSERT y especifica una forma en que podemos llevar a cabo la inserción de datos.
  • table_or_view_name: hace referencia al nombre de la tabla o vista a la que deseamos agregar nuevos datos.
  • column_list: lista del nombre de las columnas a las que deseamos insertar datos, si una columna en nuestra tabla es autoincremental (IDENTITY) no la pondremos, ya que, en automático, se insertará el valor siguiente.
  • VALUES: Lista de valores a insertar en la tabla, donde:
    • Los datos deben ir en orden que dicta el column_list.
    • Si el column_list, no se encuentra especificado, se tomará el orden de la propia tabla.

Excelente, como ves, T-SQL proporciona una gran cantidad de opciones para el INSERT, no obstante, para este post donde abarcaremos casos básicos, con los parámetros que acabamos de describir, será suficiente por el momento, de todos modos, te dejo la página de la documentación por si quieres revisarla: fuente.

Ahora veamos algunos ejemplos para que te quede más claro.

 

¿Qué es y para qué sirve INSERT VALUES?

Una de las primeras formas que analizaremos para insertar datos en una tabla es INSERT VALUES, con esta instrucción, indicamos en que tabla queremos agregar datos nuevo y, de forma explicita, indicaremos los datos que vamos a insertar, para ello podemos establecer dos casos:

  • Podemos indicar los campos y los datos que deseamos alterar, ambos con el mismo orden.
  • O simplemente, omitimos las columnas y sólo indicamos los datos con el mismo orden de los atributos que tiene la tabla.

Veamos un ejemplo con las tablas que hemos creado en el capítulo: CREATE TABLE.

 

¿Cómo insertar datos en una tabla con INSERT VALUE?

Para comenzar veremos la forma más simple de insertar nuevos datos en una tabla, no obstante, hay alguna cosas que debemos considerar antes de llevar el INSERT.

  • En primer lugar, el usuario con el que estas accediendo tenga los permisos necesarios para ejecutar un INSERT.
  • Por otra parte, debes conocer la tabla donde vas a llevar la inserción de datos, por ejemplo, debes conocer si tiene o no un IDENTITY o llave foránea (FOREIGN KEY).
  • Los atributos IDENTITY pueden ser omitidos en nuestra consulta, ya que, en automático tomaran el siguiente valor disponible durante la ejecución del INSERT.
  • No puedes insertar un valor de llave foránea que no exista.

 

INSERT VALUES y FOREIGN KEY

Entonces, antes de llevar a cabo un INSERT en una tabla que tenga una llave foránea (FOREIGN KEY), debes asegurarte que el valor de la llave foránea exista en la tabla origen, de los contrario SQL Server regresará un error como el siguiente:

The INSERT statement conflicted with the FOREIGN KEY constraint "fk_cod_gps". The conflict occurred in database "ewebikdb", table "dbo.tipos_gps", column 'cod_gps'.

Si has seguido el curso, sabrás que:

  • fk_cod_gps: es la llave foránea que definimos cuando creamos la tabla tipos_gps.

Por lo tanto, primero debemos crear los registros en la tabla tipos_gps, la cual, es la tabla origen y, después, debemos insertar los datos en equipos_gps, que es donde se encuentra la llave foránea.

  • equipos_gps: esta tabla la creamos en la clase de manejo de tablas.

Bien, veamos como sería en código

Insertando datos en la tabla


USE ewebikdb;

-- Insertamos datos en la tabla origen de la llave foránea
INSERT INTO tipos_gps
(fabricante, modelo, protocolo)
VALUES
('Fabricante1', 'Modelo1', 'Protocolo1'),
('Fabricante2', 'Modelo2', 'Protocolo2'),
('Fabricante3', 'Modelo3', 'Protocolo3')
;

-- Insertamos registros en la tabla donde se encuntra la llave foránea
INSERT INTO equipos_gps
(imei, rfc, celular, sim, estatus, fecha, cod_gps)
VALUES
('111111111111111','aaaa111111','1111111111','111111111',1,'2021-11-18',1),
('111111111111112','aaaa111112','1111111112','111111112',1,'2021-11-18',2),
('111111111111113','aaaa111113','1111111113','111111113',1,'2021-11-18',3)
;

 

Del código anterior podemos destacar los siguiente:

  • Primero creamos los registros en la tabla tipos_gps.
  • En tipos_gps existe el atributo cod_gps el cual es un IDENTITY, por lo tanto, podemos omitirlo de la consulta, dado que tomará el valor inmediato superior disponible.
  • Ahora, en equipos_gps, existe la llave foránea fk_cod_gps que hace referencia al IDENTITY cod_gps de la tabla tipos_gps.
  • Por lo tanto, podemos agregar nuevos registros en equipos_gps, haciendo referencia a las llaves existentes de: 1,2 y3.

Y listo, hemos realizado nuestro primer INSERT, pero, también hemos considerado los campos IDENTITY, las llaves primarías y foráneas existentes.

 

¿Qué es y para qué sirve INSERT SELECT?

INSERT SELECT es otra forma en que podemos agregar nuevos registros en una tabla, sigue todo lo descrito en INSERT VALUE, pero, los datos NO los especificaremos a través de VALUES, sino que, estarán especificados en un SELECT, el cual es una instrucción que nos permite leer datos.

En términos simples, INSERT SELECT permite consultar datos de una tabla e insertarlos en otra, además, es una de las mejores maneras de realizar una inserción de datos masiva.

  • El SELECT que utilizaremos, hace uso y se comporta igual que lo que vimos en la clase: SELECT SQL.

 

¿Cómo insertar datos en una tabla utilizando INSERT SELECT?

Esta forma es muy útil y sumamente utilizada en la práctica, ya que, podemos recuperar datos de una tabla, operarlos, ya sea, para obtener un resumen, eliminar duplicados, etc. y, después, insertarlos en otra tabla. En este ejemplo, leeremos datos desde una variable tipo tabla y los insertaremos en nuestra tabla tipos_gps.

  • Las tablas temporales también las vimos en la clase: manejo de tablas en SQL.
USE ewebikdb;

-- DECLARAMOS NUESTRA VARIABLE TIPO TABLA
DECLARE @tipos_temp	TABLE(
	fabricante		VARCHAR(50) NOT NULL DEFAULT '-',
	modelo			VARCHAR(20) NOT NULL DEFAULT '-',
	protocolo		VARCHAR(10) NOT NULL DEFAULT '-'
)

-- INSERTAMOS LOS DATOS A TRAVÉS DE VALUE
INSERT INTO @tipos_temp
VALUES
('Fabricante4', 'Modelo4', 'Protocolo4'),
('Fabricante5', 'Modelo5', 'Protocolo5'),
('Fabricante6', 'Modelo6', 'Protocolo6')
;

-- AHORA, CONSULTAMOS LOS DATOS DE LA TABLA TEMPORAL Y LA INSERTAMOS EN NUESTRA TABLA PERMANENTE
INSERT INTO tipos_gps
SELECT
	fabricante,
	modelo,
	protocolo
from @tipos_temp
;
-- HACEMOS UN SELECT DE NUESTRA TABLA PERMANENTE PARA VALIDAR QUE LOS DATOS SE HAYAN INSERTADO CORRECTAMENTE
SELECT * FROM tipos_gps;
Resultado de ejecutar un INSERT SELECT en SQL Server.

Como puedes observar, el INSERT SELECET, se llevo acabo correctamente, hemos agregado nuevos datos des otra tabla, en casos más complejos, podríamos agregarle al SELECT, alguna función de agregación, un WHERE para agregar condicionales, etc., pero para nuestro caso, no era necesario.

  • Si eres observador, en ambos INSERT, hemos omitido las columnas, cuando haces un INSERT, puedes omitir el nombre de las columnas cuando deseas alterar toda la tabla, y los datos a insertar, deben tener el mismo orden de los atributos de la tabla para que no te regrese un error o los datos se inserten en campos equivocados.

 

¿Qué es y para qué sirve INSERT INTO?

INSERT INTO es otra forma de llevar acabo la inserción de datos de una tabla a otra, pero, NO solo lleva acabo una copia de datos, sino que, crea una tabla completamente nueva, ya sea, permanente o temporal, creando todas o ciertas columnas de la tabla original.

  • Puedes renombrar las columnas en la tabla nueva a través de crear un alias con la clausula “AS”.

¿Cómo insertar datos y crear una tabla nueva a través de INSERT INTO?

Para este caso hagamos dos pruebas, una donde creamos una tabla permanente y otro ejemplo con una tabla temporal.

 

INSERT INTO y tablas permanentes

USE ewebikdb;

SELECT *
INTO
	tipos_gps_2
FROM tipos_gps
where
	cod_gps in (1,3,5);

SELECT * FROM tipos_gps_2;
Resultado de la consulta INSERT INTO en SQL Server

En este ejemplo:

  • Simplemente hemos creado una copia de la tabla tipos_gps, y la hemos nombrado tipos_gps_2.
  • tipos_gps_2 es una tabla permanente que aparece en el árbol de tablas de SQL Server como se ve en la imagen.
  • Al mismo tiempo, en esta tabla tipos_gps_2 hemos copiado únicamente aquellos datos donde donde cod_gps es igual a 1,2 y 3, para ello utilizamos la clausula “IN”.

 

INSERT INTO y tablas temporales

USE ewebikdb;

SELECT *
INTO
	#tipos_gps_3
FROM tipos_gps
where
	cod_gps in (1,3,5);

SELECT * FROM #tipos_gps_3;

En este ejemplo:

  • Llevamos acabo un INSERT INTO, pero, creaos una tabla temporal que solo vive en la sesión actual, esto lo se, porque al nombre de la tabla le antecede el símbolo de numeral (#).
  • Al igual que en el ejemplo anterior, solo copiamos los datos que tengan un cod_gps igual a 1, 2 y 3.
  • En este caso, no se crea ninguna tabla en nuestro árbol de tablas de SQL Server, ya que, la tabla es temporal y solo puede ser accedida desde nuestra sesión actual e inferiores.

Y listo, así es como copiamos datos y al mismo tiempo creamos una tabla nueva a través de INSERT INTO.

 

Conclusión: INSERT SQL

Excelente, hemos llegado al final de este post y como siempre haré un resumen de lo aprendido el día de hoy:

  • Has aprendido a utilizar INSERT VALUES, donde especificas los datos que deseas insertar.
  • Vimos un ejemplo de INSERT SELECT, donde puedes hacer una copia masiva de datos, de una tabla a otra.
  • También aprendiste a utilizar INSERT INTO, donde, además de copiar datos también creas una tabla nueva, ya sea, permanente o temporal.

Y sin más me despido, ya sabes que si te gusta este curso y lo crees pertinente, me ayudarías compartiendo este post en tus redes sociales, y suscríbete a mi boletín y canal de YouTube para que sigas disfrutando de contenido gratuito, hasta la próxima clase.

🧐 Autoevaluación: INSERT SQL

¿Qué es y para que sirve INSERT VALUES?

¿Qué es y para que sirve INSERT SELECT?

¿Qué es y para que sirve INSERT INTO?

Juan Carlos

Juan Carlos García

Desarrollador de software / SEO

Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como: Node JS, PHP, C# y Bases de datos.

Si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

EWebik

Diseño de páginas web y aplicaciones moviles.

© 2024 EWebik