Y vamos con los datos. Una colección de datos (cada uno en su columna) almacenados en forma de fila es lo que se denomina un registro de tabla, el cual reúne las características de una determinada entidad, abstracta o concreta.

En este artículo vamos a almacenar, incluir o insertar registros en la tabla creada en el anterior post. Se realiza con el comando INSERT, y como casi siempre, existen varias formas de hacerlo.

Este post forma parte del Tutorial básico de SQL Server cuyo índice completo puedes ver aquí: Tutorial básico de SQL Server

De nuevo, el botón derecho

Sobre la tabla Clientes de la base de datos Primera, elementos creados en anteriores post, podemos pulsar o desplegar Generar script de tabla como.

A continuación vemos la posibilidad de realizar (como ya hicimos) acciones de creación como bases de datos y tablas, así como posibilidad de realizar modificaciones con ALTER o borrados con DROP. También tenemos la posibilidades de acceder a plantillas para el tratamiento de registros.

Eso ya lo veremos en próximos artículos; la que nos ocupa en este momento es INSERT To.

Las posibilidades aumentan al tener las opciones de generar el script en una Nueva ventana del Editor de consultas(es lo que haremos) así como llevarlo a un archivo, dejarlo en el portapapeles o llevarlo a un agente para programarlo.

El anterior script incorpora la instrucción USE para insertar sobre la base de datos adecuada. INSERT tiene varias opciones con INTO le indicamos en que tabla debe insertar, en esta caso indica la tabla y el esquema al que pertenece.

VALUES ya permite especificar los valores separados por comas. en este caso reemplazamos las plantillas con indicación de tipo de dato por los valores que necesitemos:

Importante destacar que los alfanuméricos indicados con varchar deben ir entrecomillados, mientras que el entero int y el bit no deben llevar comillas.

Al Ejecutar (F5) nos indica en la pestaña de Mensajes '(1 fila afectada) + Hora de finalización'.

Para comprobarlo vamos a hacer mención al comando SELECT en su forma mas simple. Ya veremos mas posibilidades en el siguiente post.

SELECT permite seleccionar los registros en base a unos criterios de filtro, ordenación, agrupamiento etc. En este caso no vamos a poner filtro. El comando básico de SELECT que podemos utilizar es:

SELECT * FROM Clientes

Este comando nos seleccionará y visualizará todos los registros de la tabla Clientes (en este caso solo uno). Podemos indicarlo a continuación del comando INSERT después del GO y a continuación seleccionado solo esta instrucción dar al botón Ejecutar o F5.

En la pestaña Resultados vemos nuestro primer registro.

Un Script T-SQL

Realmente acabamos de hacer un script. Si, de acuerdo, pero podemos ver las modalidades del mismo y aprovechar para insertar mas registros.

Asimismo nos percataremos de un pequeño problema en la construcción de la tabla que enseguida veremos.

INSERT INTO [dbo].[Clientes]
     VALUES
           ('Sonia', 'Merino', 41,'Calle Imaginada 6 28013 Madrid',1)
GO

A la hora de insertar a la hermana de Juan, hemos omitido la especificación de columnas por ser opcionales si se va a dar valor a todos los campos. Además hemos puesto los valores en una sola línea lo que aporta claridad.

(Recuerda seleccionar solo este INSERT INTO antes de ejecutar)

Podemos comprobar seleccionando y ejecutando solo la línea del SELECT.

Pongamos mas ejemplos, puedes pegar y copiar en tu editor lo siguiente:

INSERT INTO [dbo].[Clientes]
     VALUES
           ('Carlos', 'López Muñoz', 16,'Plaza Supuesta nº 44 08080 Barcelona',0),
           ('Beatriz', 'Herrera Gonzalez', 26,'Calle Invisible 12 08100 Barcelona',0),
           ('Alba', 'Pérez Asensio', 61,'Calle Perdida 102 41010 Sevilla',1)
GO

Como vemos, los ejemplos se pueden poner en una misma instrucción INSERT separados por comas.

Con la ejecución de SELECT, vemos como nuestros registros van creciendo.

¿Y si probamos esto?:

INSERT INTO [dbo].[Clientes]
     VALUES
           ('José', 'Fallo Imprevisto', 34)
GO

Efectivamente, el número, orden o tipo de los valores que le hemos proporcionado, no se corresponde a la definición de la tabla, al haber omitido las columnas. En su lugar:

INSERT INTO [dbo].[Clientes]
            ([Nombre]
           ,[Apellidos]
           ,[Edad])
     VALUES
           ('José', 'Fallo Solucionado', 34)
GO

O bien, recordemos que excepto el primer campo, admitimos nulos:

INSERT INTO [dbo].[Clientes]        
     VALUES
           ('Javier', 'Martín Lasa', 39, null, null)
GO

Tras insertar estos ejemplos, damos a la SELECT y comprobamos.

Antes de pasar a lo siguiente, lo que comentamos de la confección de la tabla. Selecciona de nuevo el INSERT de "Javier Martín Lasa" y ejecuta.

Pues si: Mensaje de (1 fila afectada) y sin problemas. Esto choca con la intuición que tenemos de rellenar registros en esta tabla ¿Cómo vamos a tener la misma persona en dos registros distintos?

Las restricciones y los campos de clave primaria previenen estos problemas; nuestra tabla es demasiado básica, más adelante veremos como se diseñan las tablas para evitarlo.

De momento ejecuta lo siguiente:

DELETE FROM Clientes
WHERE Nombre = 'Javier' AND Apellidos = 'Martín Lasa'
GO

Bueno, esto forma parte de otro post, pero intuyes lo que hace ¿verdad?


GitHub Copilot

¡Por fin nos llega la ayuda!

Vamos a pedirle a Copilot la inserción de registros. Al fin y al cabo, estamos en una base de datos de aprendizaje inventada y podemos pedirle numerosos ejemplos.

Crea un script de inserción simple en la tabla Clientes para 30 registros. Ten en cuenta que no hay campos de clave primaria o única, asi que no insertes duplicados

Pues tenemos 30 ejemplos mas. Mi script:

En primer lugar en mi caso han salido unas instrucciones avanzadas que no son objetivo de este tutorial relativas a transacciones. (Habrá más info futura).

Yo lo he puesto debajo de todos los ejemplos anteriores, me he situado ahí con el cursor y le he dado a Insertar en el cursor en Copilot Chat.

A continuación botón Mantener, he seleccionado toda la INSERT y le he dado a ejecutar.

PUES MAL.

Es mi caso naturalmente y es posible que en el tuyo todo sea distinto, pero siempre hay que revisar exhaustivamente el código. En posts anteriores realizamos la creación de la tabla Clientes de diversas formas y tenemos la misma tabla adicionalmente en las bases de datos Segunda y Tercera.

Copilot ha elegido (en mi caso sin avisar) la base de datos Tercera.

Es fallo del prompt al no especificarlo, pero en otras ocasiones será la propia IA la que no sea precisa.

En cualquier caso, en lugar de pedirle en un nuevo prompt que lo rectifique (gastaríamos recursos de pago en versiones de Copilot Pro) simplemente editamos: o bien borrando la instrucción USE ya que estamos "situados" en ella de los anteriores ejemplos, o bien editándola:

USE [Primera].

A continuación damos, si no encontramos ninguna incidencia mas, al botón Mantener.

La ejecución inserta los nuevos registros

Nuevos registros con los que poder trabajar en el próximo artículo donde veremos la instrucción fundamental de SQL : SELECT.

Para guardar antes este script:

Aprovecha para comentar, sobre todo en el caso particular que te haya proporcionado a tí Copilot, por si has tenido algún problema.

Hasta el próximo post.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *