Bienvenidos a la lección nueve ‘Manipulando sus Datos’ del Tutorial de SQL, que forma parte del Curso de Formación de SQL. En esta lección, hablaremos de las sentencias INSERT, UPDATE y DELETE de SQL.
Objetivos
Al final de esta lección, usted será capaz de:
-
Explicar la sentencia INSERT y cómo se puede utilizar
-
Describir la consulta UPDATE con ejemplos
-
Explicar la sentencia DELETE con ejemplo
La sentencia INSERT
La sentencia INSERT es una de las tres sentencias que pertenecen a la parte del llamadollamado «lenguaje de manipulación de datos» parte del SQL – que es el INSERT, UPDATE, y DELETE.
Las tres sentencias permiten cambiar los datos en la base de datos, no cambiando la estructura sino cambiando el contenido. Son diferentes de la sentencia SELECT, que sólo permite leer los datos de la base de datos.
Así que la sentencia INSERT permite añadir nuevos registros a la tabla de la base de datos. Generalmente, se utiliza para añadir registros al final de la tabla. Una cosa que es importante siempre que se hace INSERT es que los datos tienen que satisfacer todas las reglas de la base de datos.
Considere la imagen que se muestra a continuación:
Primero, miramos la tabla Persona como ejemplo. Aquí tenemos la clave primaria. Las claves primarias en esa base de datos están previamente configuradas con incrementos automáticos en nuestro SQL.
Nunca insertamos la clave primaria nosotros, eso se lo dejamos a la base de datos. Luego tenemos un firstname y un lastname, que tienen bandera NOT NULL. El diamante sólido indica que estos campos son obligatorios, no podemos omitirlos.
El último es el timestamp, que es NOT NULL, pero al mismo tiempo, el valor por defecto es el timestamp actual. Así que de nuevo, eso establecería automáticamente una marca de tiempo actual si no ponemos ninguna fecha allí.
Si necesitamos insertar registros en otra tabla, tenemos que asegurarnos de que los datos realmente existen. Así que en este tipo de tablas de extremo a extremo o en cualquier tipo de situación de clave externa, siempre hay que asegurarse de que los datos que se insertan allí realmente representan valores válidos en las tablas referidas.
Usemos nuestra tabla Persona de nuevo como punto de partida.
La tabla Persona al principio es como se muestra.
Considere un ejemplo que se muestra a continuación:
select * from person
insert into person
values (7, ‘Martin’, ‘Holzke’, ‘1980-05-05’, ‘xxx’, now());
Sólo podemos insertar en una tabla a la vez. Puedes unir los datos utilizando la función SELECT, pero tradicionalmente hablando, puedes hacer la manipulación de datos en una tabla a la vez.
Lo que hemos considerado en el ejemplo anterior es la ‘inserción implícita’. Significa que no estamos mencionando las columnas que queremos poblar, tenemos que ponerlas todas exactamente en el orden en que existe la tabla.
La inserción hará coincidir los nuevos valores con las columnas de la tabla de forma automática.
Nota: Para la declaración de inserción, actualización y eliminación, tenemos que tener en cuenta que las bases de datos no tienen un botón de deshacer. Así que una vez que haya enviado cualquier valor, se almacena en la base de datos.
Como estamos aprendiendo sobre la inserción implícita, tenemos que especificar los valores para cada columna. Así que ver la tabla de la base de datos en la misma pantalla ayuda enormemente.
Ahora, si ejecutamos el código anterior, puedes ver que la tabla se ha actualizado y el registro insertado puede verse en la posición 7.
Además, la sentencia insert no devuelve nada, al contrario que la sentencia SELECT. Por eso la pantalla se queda en blanco después.
Siguiente. veamos la versión explícita, que es muy recomendable utilizar.
select * from person
insert into person (firstname, lastname, managerid, dob)
values (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’);
En el ejemplo anterior, sólo hemos mencionado 4 valores de la tabla. El resto se rellena por defecto. Cuando ejecutamos la consulta, vemos que los nuevos valores se han añadido a la tabla.
El valor de la clave primaria es el 9 y no el 8 porque ese valor porque se utilizó en algún momento en la base de datos ya.
Esto es ventajoso para el propósito de seguridad ya que la clave primaria no puede ser reutilizado y los errores pueden ser identificados.
También vemos que el valor de la columna ‘created’ se establece con la marca de tiempo actual cuando no lo mencionamos explícitamente.
A continuación, para hacer inserciones múltiples, podemos ejecutar la consulta anterior, una y otra vez, utilizando diferentes valores.
Las inserciones múltiples se pueden realizar utilizando una sola sentencia de inserción. Añadimos el nuevo conjunto de valores que están separados por comas.
seleccionar * de persona
insertar en persona (nombre, apellido, managerid, dob)
valores (‘Martin’, ‘Holzke’, 5, ‘1980-05-05’),
(‘Fred’, ‘Flintstone’, 5, ‘1987-06-02’);
La siguiente imagen muestra la tabla actualizada cuando se realizan inserciones múltiples.
A continuación, queremos hacer una inserción seleccionando datos de la misma tabla, por lo que se pueden copiar datos lo que resulta bastante práctico para poblar una base de datos. Por ejemplo, en la migración de datos, en realidad quiere copiar datos dentro de una base de datos o entre diferentes bases de datos / tablas.
El siguiente código muestra cómo copiar datos.
seleccionar * de persona
insertar en persona (nombre, apellido, managerid, dob)
seleccionar concat(‘copia de’, nombre), apellido, managerid, dob
from person
where id>=10
La siguiente imagen muestra los valores de la tabla cuando sólo ejecutamos la sentencia select.
Ahora, ejecutamos la consulta junto con la sentencia insert. Esto se puede hacer simplemente seleccionando las sentencias que deseamos ejecutar y ejecutando esa consulta.
La siguiente imagen muestra cómo se ha modificado la tabla después de ejecutar la consulta anterior.
Por lo tanto, vimos cómo copiar valores utilizando la sentencia insert puede poblar la base de datos. Generalmente poblamos la base de datos cuando ejecutamos las consultas en un entorno de prueba.
SQL – Consulta de actualización
La consulta o sentencia de actualización es la segunda de las tres sentencias del lenguaje de manipulación de datos, que son INSERT, UPDATE y DELETE. Así que la consulta UPDATE permite modificar los registros existentes en una tabla.
Dado que estamos hablando del SQL como un lenguaje basado en conjuntos, la consulta UPDATE funcionará sobre un conjunto de registros y no sobre un registro (dependiendo de cómo se ejecute el UPDATE).
¿Entonces cómo hacemos todas nuestras actualizaciones?
Considere la consulta dada a continuación:
select * from persona
where id = 10
update persona
set dob = ‘1990-01-01’
where id = 10
En la consulta anterior, primero seleccionamos los registros de la tabla Persona cuyo id es igual a 10. La siguiente imagen muestra el valor que se selecciona.
Luego utilizamos la consulta Update para establecer el DOB del registro cuyo id es 10. Si no utilizamos la sentencia where, se actualizarán todos los registros de nuestra tabla con el valor establecido.
Al ejecutar la consulta anterior, vemos que se ha actualizado el valor dob del décimo registro de la tabla.
Ahora, para actualizar varias cosas en un registro, podemos utilizar la lista separada por comas.
Considera la consulta que se muestra a continuación:
select * from persona
where id = 10
update persona
set dob = ‘1990-01-01’, firstname = ‘Mike’
where id = 10
Al ejecutar la consulta anterior, obtenemos la tabla actualizada como se muestra:
A continuación, si queremos modificar más de un registro, podemos hacer lo siguiente:
select * from persona
where firstname = ‘Martin’
update persona
set firstname = ‘Mike’
where firstname = ‘Martin’
En la consulta anterior, hemos cambiado el valor del firstname de Martin a Mike, siempre que existiera previamente en la tabla Persona.
Consideremos un ejemplo diferente:
La tabla Persona no tenía margen para hacer cosas un poco más numéricas, así que consideremos la tabla Proyecto.
Aquí, tratamos de tomar un escenario donde un manejo en toda la tabla podría ser deseable.
La tabla de proyectos tiene tres registros en este momento, como se muestra.
Cada registro tiene un valor de presupuesto. Supongamos que queremos actualizarlos todos en un 20% aproximadamente. Podemos hacerlo mediante la consulta que se muestra a continuación:
select * from proyecto
actualizar proyecto
set presupuesto = presupuesto*1,2
Así que la consulta anterior aumentaría ahora todos los registros de la tabla de proyectos en un veinte por ciento.
Los registros actualizados son los que se muestran a continuación:
Por lo tanto, se pueden realizar muchas operaciones matemáticas en los valores como en el ejemplo mostrado anteriormente.
Una cosa que hay que recordar al utilizar la sentencia UPDATE es utilizar la cláusula ‘where’ siempre que sea aplicable. De lo contrario, actualizará los valores de todas las entradas de la tabla.
Sentencia SQL DELETE
Estudiemos ahora la sentencia DELETE, que es la última de las tres sentencias del lenguaje de manipulación de datos. La sentencia DELETE tiene la capacidad de borrar uno o más registros en su totalidad. No estamos hablando de borrar el contenido de una columna individual porque no podemos hacer eso.
Si quieres hacer eso, necesitas usar la sentencia UPDATE para cambiar el contenido de las columnas individuales. Así que DELETE es la eliminación de un registro completo o de varios registros completos.
Al igual que ocurre con las sentencias INSERT y UPDATE, una vez que se eliminan una serie de registros, éstos desaparecen y no hay forma de recuperarlos.
También tenemos que asegurarnos de que cuando eliminamos cualquier registro de la tabla, esa entrada (o su valor) no está siendo utilizada por ninguna otra tabla.
La tabla persona tiene las siguientes entradas iniciales.
La sentencia DELETE se puede utilizar como se muestra en la siguiente consulta:
select * from persona
where id = 10
delete from persona
where id = 10
En la consulta mostrada anteriormente, hemos eliminado el registro cuyo valor de id era 10.
Nota: Recuerda utilizar la cláusula ‘where’ con la sentencia DELETE. De lo contrario, la sentencia vaciará rápidamente su tabla de personas sin la cláusula ‘where’
Cuando ejecutamos la consulta anterior, encontramos que la entrada con valor de id 10 ha sido eliminada y la tabla actualizada es la que se muestra. Todo lo demás permanece, excepto la que tiene la clave primaria diez.
Hay situaciones en las que queremos deshacernos de todo un bloque. Por ejemplo, deseamos eliminar todas las entradas de copia de la tabla de personas como se muestra.
La consulta para eliminar todos los registros de copia de la tabla persona se muestra a continuación:
select * from persona
where firstname like ‘copy%’
delete from persona
where firstname like ‘copy%’
En la consulta anterior, ‘copy%’ indica las sentencias que comienzan con copy y continúa con cualquier palabra más.
Al ejecutar la consulta anterior, podemos ver que todos los registros que empezaban por ‘Copy’ han sido eliminados de la tabla de personas.
Nota: Siempre se recomienda utilizar la sentencia DELETE para una tabla a la vez. No se recomienda utilizar la sentencia en el caso de tablas conjuntas.
Conclusión
Con esto, hemos llegado al final de esta lección sobre ‘Manipulación de Datos en SQL’. La próxima lección se centra en el Control de Transacciones.
{{lectureCoursePreviewTitle}} View Transcript Watch Video
Para aprender más, tome el Curso
SQL Training Certification Training
Ir al Curso
Para aprender más, tome el Curso
Formación de Certificación en SQL Ir al Curso