10th Aug 2022 Lectura de 11 minutos SQL INSERT, SQL UPDATE, SQL DELETE - ¡Oh! Rebecca McKeown SQL aprender SQL extras Índice El Hospital Infantil de Mickey Mouse - Un caso práctico de base de datos INSERTAR datos con SQL Inserción de varias filas INICIAR TRANSACCIÓN Inserción de una tabla en otra ACTUALIZAR datos con SQL Actualizar varias filas ELIMINAR datos con SQL Eliminar varias filas Conclusión ¿Te interesa entender cómo funcionan INSERT, UPDATE o DELETE en SQL? ¡Te pondremos al día con ejemplos útiles y un completo paso a paso! ¿Qué hacen las sentencias INSERT, UPDATE y DELETE en SQL? Si trabajas en la ingeniería de datos, en la administración de bases de datos, o si sólo eres un aficionado a los datos, algún día te encontrarás con una base de datos que se convertirá en tu "bebé". Al cargar en brazos a esta criatura tan especial, tendrás que encargarte también de alimentarla y cambiarla. Sí, ¡seguimos hablando de bases de datos! INSERT, UPDATE y DELETE son todas funciones de SQL que te ayudan a que tus datos estén actualizados y se mantengan libres de información innecesaria u obsoleta. INSERT, UPDATE y DELETE, así como SELECT y MERGE, se conocen como declaraciones de lenguaje de manipulación de datos (DML), y permiten a los usuarios de SQL ver y gestionar los datos. Aunque los datos suelen ser, por supuesto, actualizados por la propia aplicación, de vez en cuando se requiere el ingreso manual o el mantenimiento, y esto exige no sólo una buena comprensión de SQL para principiantes (este artículo supone que ya tienes un conocimiento básico de SQL; consulta nuestro curso de SQL para principiantes y nuestra variedad de artículos sobre SQL si aún no lo has hecho), sino también el conocimiento de cómo funcionan INSERT, UPDATE y DELETE en SQL. Este artículo proporciona los fundamentos de INSERT, UPDATE y DELETE en SQL, pero si quieres un tutorial más completo, consulta nuestro curso Cómo añadir, modificar y eliminar datos con SQL. Tiene todo lo que necesitas para que las declaraciones o sentencias DML te parezcan un juego de niños. El Hospital Infantil de Mickey Mouse - Un caso práctico de base de datos Veamos al trío protagónico de este artículo de a uno por vez, y entendamos cómo funcionan. Utilizaremos una base de datos de ejemplo para demostrar cada una de las tres sentencias. Siguiendo con el tema de los bebés, supongamos que administras la base de datos de un hospital infantil, el "Hospital Infantil de Mickey Mouse", para más exactitud. El hospital mantiene registros de todos sus pequeños pacientes, incluyendo datos como edad, peso, resultados de los análisis de sangre... ya te haces una idea. Por lo general, los médicos introducen y actualizan esta información en el sistema del hospital cada vez que ven a sus pacientes, y gran parte de la inserción, actualización y eliminación de registros en la base de datos la realiza el sistema. Pero a menudo aparecen cosas que deben ser arregladas manualmente, y como persona encargada de la adminstración de la base de datos, ¡ese es tu momento de brillar! A continuación, utilizamos tres tablas diferentes para demostrar cada una de las tres declaraciones o sentencias. La tabla de ejemplo número uno muestra los registros de los pacientes y su información básica: Tabla de pacientes IDPacienteApellidoNombreFechaNacSexoPesoAlturaVacuna 15223SmithDeniz12/31/2018F21.429.2Y 15224AgarwalArjun08/29/2017M28.134.2Y 15225AdamsPoppy02/14/2015F34.039.2N 15226JohnsonTierra08/15/2019F14.624.5Y 15227KhouriMohammed03/30/2014M41.544.1Y 15228JonesBen04/04/2011M70.152.2Y 15229KowalczykAlexandra08/27/2019F15.223.9Y La tabla de número dos contiene los diferentes departamentos del hospital, y los grupos y categorías a los que pertenecen dichos departamentos: Tabla de departamentos IDDepartmentoNombreDepartmentoNombreGrupoNombreCategoria 1CardiologiaCentro CardiologicoClinica 2Cuidados IntensivosEmergenciasClinica 3EmergenciasEmergenciasClinica 4ComunicacionesAdministracionOperaciones 5OncologiaMedicina InternaClinica 6NeurologiaMedicina InternaClinica 7Recursos HumanosAdministracionOperaciones 8PatologiaServiciosTecnica 9RadiologiaServiciosTecnica 10FarmaciaServiciosTecnica 11Junta DirectivaAdministracionOperaciones 12UrologiaCirugiaClinica 13HematologiaMedicina InternaClinica 14Pabellon MontanaPabellonOperaciones 15Pabellon ChicagoPabellonOperaciones 16Pabellon LincolnPabellonOperaciones 17Pabellon YellowstonePabellonOperaciones 18Pabellon BrooklynPabellonOperaciones La tabla número tres registra las visitas de los pacientes a lo largo de los años: Tabla VisitasPacientes IDPacienteUltimaAdmitidaUltimaDescartada 3312/29/195201/05/1953 34-- 3508/01/200408/04/2004 3607/28/201107/30/2011 3705/27/195005/30/1950 38-- 3910/11/197010/20/1970 Con estas tablas de ejemplo, vamos a entrar en el meollo de INSERT, UPDATE y DELETE. INSERTAR datos con SQL Al igual que los bebés, cada minuto nacen nuevos datos. Muchos sistemas inteligentes permiten que esos datos se añadan sin problemas a sus bases de datos. Sin embargo, en muchos casos, tendrás que añadirlos manualmente, y ahí es donde entra en juego la sentencia INSERT (insertar) en SQL. INSERT es tu recurso para añadir una o varias filas a una tabla. INSERT también puede ayudarte a añadir filas de una tabla a otra. Veamos la estructura básica de una sentencia INSERT: INSERT INTO nombreTabla (columna1, columna2, ...) VALUES (valor1, valor2, ...) Primero, necesitamos identificar la tabla en la que queremos insertar filas. A continuación, especificamos las columnas que queremos rellenar. Por último, estipulamos los valores que necesitamos añadir. Esta es la forma básica de la función INSERT, y es bastante intuitiva. Para dar a esta estructura alguna aplicación de la vida real, he aquí un ejemplo de nuestro caso de estudio. Uno de los médicos del Hospital Infantil Mickey Mouse tiene un paciente recién nacido al que aún no se le ha puesto nombre. El médico necesita introducir al bebé en la base de datos inmediatamente para poder acceder a un ensayo farmacológico para el niño enfermo, pero el sistema no permite enviar el expediente del pequeño sin un nombre. El médico quiere que se añada al paciente utilizando su número de paciente, dejando su nombre en blanco hasta una fecha posterior. Tú, como persona encargada de la administración, tendrás que introducir al paciente manualmente en la base de datos. Así es como se vería la declaración INSERT: INSERT INTO dbo.Paciente (Apellido, Nombre, FechaNac, Sexo, [Peso], Altura, Vacuna) VALUES (NULL, NULL,'2019-11-19', 'F', 14.0, 23.1, 'No') Como puedes ver, no sólo estamos proporcionando el nombre de la tabla en la que necesitamos insertar, sino también los nombres de las columnas y los valores que queremos añadir. No especificamos el IDPaciente en la lista de columnas porque, al ser una columna de identidad, se rellena automáticamente. Como queremos mantener el nombre del paciente en blanco por ahora, escribimos NULL para las columnas de nombre. Una vez que ejecutamos este comando, se creará la siguiente adición a la base de datos: Inserción de varias filas Para insertar más de una fila de datos con una sola sentencia, utiliza paréntesis y comas para especificar las distintas filas nuevas. INSERT INTO dbo.Paciente (Apellido, Nombre, FechaNac, Sexo, [Peso], Altura, Vacuna) VALUES ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'No'), VALUES ('Hitson', 'Jenny','2019-11-19', 'F', 13.7, 22.3, 'No') Sugerencia: utiliza una transacción para probar tu inserción sin comprometer ni alterar tu tabla de manera permanente. Para ello, comienza con BEGIN TRANSACTION, y finaliza la transacción con COMMIT, si deseas mantener los cambios, o ROLLBACK, si deseas revertir lo que has hecho. A continuación, se muestra cómo añadiríamos una transacción al ejemplo anterior: INICIAR TRANSACCIÓN BEGIN TRANSACTION INSERT INTO dbo.Paciente (Apellido, Nombre, FechaNac, Sexo, [Peso], Altura, Vacuna) VALUES ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'No'), ('Hitson', 'Jenny','2019-11-19', 'F', 13.7, 22.3, 'No') ROLLBACK --COMMIT Inserción de una tabla en otra ¿Necesitas insertar una o varias filas de datos de una tabla en otra? Puedes utilizar la sentencia INSERT INTO SELECT. Supongamos que varios de nuestros pacientes participan en un nuevo ensayo de medicamentos, y tú estás creando una tabla nueva para registrar su participación. La estructura básica de esta sentencia es: INSERT INTO TablaDestino (columna1, columna2, ...) SELECT (columna1, columna2, ...) FROM TablaOrigen El enunciado de nuestro ejemplo de ensayo de medicamentos tendría este aspecto: INSERT INTO [dbo].[PruebaDrogaAlfa] (Apellido, Nombre, FechaNac, Sexo, DrogaOPlacebo, Notas) SELECT p.Apellido, p.Nombre, p.FechaNac, p.Sexo, 'Droga', NULL FROM dbo.Paciente AS p WHERE p.IDPaciente IN (15226, 15229, 15230) UNION SELECT p.Apellido, p.Nombre, p.FechaNac, p.Sexo, 'Placebo', NULL FROM dbo.Paciente AS p WHERE p.IDPaciente IN (15231) También puedes escribir el ejemplo como una expresión de tabla común (CTE). Entre otras cosas, las CTE pueden utilizarse para crear un conjunto de resultados temporal para reutilizar durante la consulta. Así es como se vería el mismo comando escrito como una CTE: WITH PruebaDrogaPacientes (Apellido, Nombre, FechaNac, Sexo, DrogaOPlacebo, Notas) AS ( SELECT p.Apellido, p.Nombre, p.FechaNac, p.Sexo, 'Droga', NULL FROM dbo.Paciente AS p WHERE p.IDPaciente IN (15226, 15229, 15230) UNION SELECT p.Apellido, p.Nombre, p.FechaNac, p.Sexo, 'Placebo', NULL FROM dbo.Paciente AS p WHERE p.IDPaciente IN (15231) ) INSERT INTO [dbo].[PruebaDrogaAlfa] (Apellido, Nombre, FechaNac, Sexo, DrogaOPlacebo, Notas) SELECT Apellido, Nombre, FechaNac, Sexo, DrogaOPlacebo, Notas FROM PruebaDrogaPacientes Sugerencia: si estás utilizando SELECT para añadir datos de una tabla a otra, como paso inicial es una buena idea ejecutar la sentencia SELECT sola, para asegurarte de que se devuelven las filas correctas y de estar satisfecho con el resultado. ACTUALIZAR datos con SQL La sentencia UPDATE es otra tarea común utilizada por las personas encargadas de la ingeniería de datos y la administración de bases de datos. Se utiliza para cambiar el valor de una columna en una o varias filas. Así es como se estructura generalmente una sentencia SQL UPDATE: UPDATE nombreTabla SET columna1=valor1, columna2=valor2,... WHERE filtroColumna=filtroValor Al igual que con la sentencia INSERT, primero tenemos que identificar la tabla que queremos actualizar. Luego, usamos la cláusula SET para detallar las columnas que queremos actualizar. Por último, utilizamos la cláusula WHERE para señalar las filas que queremos incluir en la actualización. Sugerencia: dado que un nuevo valor de columna puede afectar a más de una fila, asegúrate de estar satisfecho con el alcance de la actualización antes de confirmarla. Al igual que INSERT, UPDATE puede escribirse como una transacción, lo que significa que puedes usar COMMIT o ROLLBACK para la actualización, dependiendo de si estás o no satisfecho con los cambios. He aquí un ejemplo utilizando nuestro caso de estudio. Nuestro departamento de Emergencias se está cambiando a "Trauma y Cirugía de Emergencias", por lo que es necesario cambiar su nombre en la base de datos. Para actualizar este nombre, puedes ejecutar esta sentencia: UPDATE dbo.Departmento SET NombreDepartmento = 'Trauma y Cirugia de Emergencias' WHERE IDDepartmento = 3 SELECT * FROM dbo.Departmento WHERE NombreDepartmento = 'Emergencias' Este es el aspecto que tendría el nombre actualizado del departamento en nuestra tabla: Cuando utilices la sentencia UPDATE, asegúrate de que la cláusula WHERE especifique con precisión las filas que deseas actualizar. En caso de duda, escribe la sentencia como una transacción, que podrás revertir si no estás satisfecho con el cambio, sin que ello suponga un perjuicio. Para comprobar que estás seleccionando los datos correctos para actualizar, puedes hacer una prueba utilizando SELECT para asegurarte de estar apuntando a las filas correctas. Actualizar varias filas Si necesitas actualizar múltiples filas de datos, es muy fácil hacerlo con la sentencia UPDATE. La cláusula WHERE es tu amiga. Imagina que quieres recategorizar todas las salas de hospitalización de "Pabellón" a "Sala" en la columna de grupo. UPDATE dbo.Departmento SET NombreGrupo = 'Sala' WHERE NombreGrupo = 'Pabellon' Lo que cambiaría la tabla para que se vea así: ELIMINAR datos con SQL En el mundo de SQL, DELETE es como cambiar pañales. ¿Hay algo allí que no quieras? ¡Elimínalo! DELETE elimina una o varias filas de una tabla, ¡pero ten cuidado! Tienes que asegurarte de que sabes lo que estás eliminando antes de seguir adelante y confirmar la sentencia. Este es el aspecto de la sentencia DELETE: DELETE nombreTabla WHERE filtroColumna=filtroValor; Sólo tiene dos partes: especificar la tabla y especificar WHERE, es decir, qué filas quieres eliminar. Si conoces la clave primaria de una fila que desees eliminar, tu trabajo es sencillo. ¿Quieres borrar el Pabellón Lincoln de tu tabla?: DELETE FROM dbo.Departmento WHERE IDDepartmento = 16 Eliminar varias filas Volvemos al Hospital Infantil de Mickey Mouse. Digamos que el gestor de datos del hospital quiere eliminar todos los registros de pacientes que no han visitado el hospital desde 1969. Podrías escribir la sentencia DELETE de la siguiente manera: DELETE FROM dbo.VisitasPacientes WHERE UltimaDescartada < '1969-01-01' ¿El resultado? Esta es la tabla anterior... ... y así es como queda después de ejecutar ese script: Sin embargo, lo mejor que podemos hacer antes de ejecutar esta sentencia DELETE sería probar el resultado utilizando SELECT. Esto devolverá todas las filas que estábamos a punto de eliminar, para poder comprobar si estamos eliminando las filas correctas. Para ejecutar esta prueba, escribiríamos: SELECT * FROM dbo.VisitasPacientes WHERE UltimaDescartada < '1969-01-01' ¡Atención! Si utilizas DELETE sin añadir una cláusula WHERE, eliminará todas las filas de la tabla. Conclusión Una vez que hayas dominado SQL para principiantes, las sentencias INSERT, UPDATE y DELETE son tu siguiente paso hacia la gloria en el uso de bases de datos. Si este artículo te ha dejado con apetito por aprender más, consulta nuestro curso para principiantes Cómo añadir, modificar y eliminar datos con SQL. No sólo se profundiza en esta información básica con más detalle, sino que también te enseñará a: Lidiar con los valores de auto-llenado y combinar los comandos de manipulación de datos SQL con IDENTITY, SEQUENCE y NEWID(). Combinar los comandos DML de SQL con valores NULL. Combinar los comandos DML de SQL con sentencias JOIN. Modificar los datos utilizando los valores por defecto de las columnas. Realizar operaciones CRUD, las más importantes de las operaciones DML. Con 52 ejercicios interactivos, acceso de por vida al curso, un certificado de finalización y una garantía de satisfacción de 30 días de devolución del dinero, ¡no hay mucho que perder al intentarlo! Entonces, ¿qué esperas? INSERTA nuevos conocimientos a tu vida, ACTUALIZA tu formación en SQL y ELIMINA todas las excusas. Nos vemos en las bases de datos. Tags: SQL aprender SQL extras