MySQL. Manipulación de datos: Insert, Update y Delete

Este es el modelo entidad relación de la base de datos que vamos a trabajar:

INSERT

A la hora de insertar registros en nuestra base de datos tenemos dos opciones:

Inserción de una fila

INSERT INTO "nombre_tabla" VALUES ("valor1", "valor2",)

Ejemplo:

INSERT INTO empleados
VALUES(10, "Smith", "John", "Comercial", '1980-12-21', CURDATE(), "96 321 69 87", 1);

De esta forma hay que introducir los datos de todas las columnas en el mismo orden.

Para especificar solo la introducción de datos en unas determinadas columnas usaremos la siguiente sintaxis:

INSERT INTO "nombre_tabla" ("columna1", "columna2",) VALUES ("valor1",
"valor2",)

Ejemplo:

INSERT INTO empleados (IdEmpleado, Apellidos, Nombre)
VALUES(10, "Smith", "John");

Hay que tener en cuenta que pueden existir columnas que no permitan valores nulos por lo que provocaría fallo sino lo introducimos un valor en la inserción.

Inserción de varias filas

Insertaremos en una tabla los valores de la salida de una consulta

INSERT INTO "tabla1" ("columna1", "columna2",)
SELECT "columna3", "columna4",
FROM "tabla2"

Por ejemplo, podríamos crear la tabla «Pedidos2015» y en esta meter los pedidos realizados en 2015.

INSERT INTO Pedidos2015
SELECT *
FROM Pedidos
WHERE YEAR(Fecha) = 2015

Al igual que en la inserción de una fila, también se pueden especificar las columnas.

INSERT INTO Pedidos2015 (NumPedido, Cliente, Empleado)
SELECT NumPedido, Cliente, Empleado
FROM Pedidos
WHERE YEAR(Fecha) = 2015

UPDATE

Modifica los valores de una o más columnas en las filas seleccionadas de unas o varias tablas.

UPDATE "nombre_tabla"
SET "columna_1" = [nuevo valor]
WHERE {condición}

Ejemplo:

Aumentar en 50 las existencias de los productos de la categoría «Lácteos»

UPDATE productos
SET existencias = existencias +50
WHERE categoria = (SELECT idCategoria FROM Categorias WHERE NomCategoria = "Lácteos")

En la condición del WHERE se puede incluir una subconsulta (en SQL standard la tabla que aparece en la FROM de la subconsulta no puede ser la misma que la tabla que aparece como origen, pero su ejecución dependerá del SGBD utilizado)

DELETE

Elimina las filas de una tabla

DELETE FROM "nombre_tabla"
WHERE {condición}

Ejemplo:

Eliminar las líneas de pedido el último pedido realizado.

DELETE FROM LineasPedido
WHERE NumPedido = (SELECT NumPedido
FROM Pedidos
WHERE Fecha = (SELECT MAX(Fecha) FROM pedidos))

Deja una respuesta