Con MySQL INSERT UPDATE DELETE vamos a poder manipular los datos mediante SQL en nuestra base de datos. Vamos a utilizar la base de datos Customerdb que creamos en este tutorial de MariaDB (MySQL) siguiendo las indicaciones de Learning Project.
MySQL INSERT UPDATE DELETE
Con nuestra base de datos Customerdb ya creada en MariaDB (MySQL) siguiendo Learning Project, vamos a aprender la manipulación de datos para MySQL con INSERT, UPDATE y DELETE Código Xules
MySQL
Esta publicación que aquí probamos sobre MariaDB es vaĺida en cualquier base de datos MySQL ya que la sintaxis es la misma Código Xules
Mi recomendación es que veas las anteriores publicaciones de este tutorial de MariaDB (MySQL), pero como cada uno aprende a su manera y a su ritmo, a continuación tienes los scripts de la base de datos y población de datos que facilitamos en capítulos anteriores, eso sí tendrás que tener instalado MariaDB o MySQL, en nuestra primera publicación explicábamos como preparar el entorno, y facilitábamos enlaces para la instalación en diferentes sistemas operativos.
Script para la creación de las tablas del esquema de Customerdb definido en Learning Project:
MariaDB SQL - Creación de las tablas
Script para la población de datos de Customerdb:
MariaDB SQL Script para la población de la base de datos Customerdb
Veamos entonces como manipular los datos en la base de datos MariaDB para ello vamos a ver la sintaxis de:
- INSERT
- Inserción de nuevas filas en la tabla seleccionada. Documentación de MariaDB: INSERT.
- UPDATE
- Actualización de uno o varios parámetros de una o varias filas, como veremos a continuación. Documentación de MariaDB: UPDATE.
- DELETE
- Borrado de uno o varios registros de la tabla. Documentación de MariaDB: : DELETE.
SQL INSERT
Creamos nuevas filas en la tabla seleccionada está es la sintaxis de INSERT (MariaDB documentation) el primer comando que estudiaremos en el aprendizaje de MySQL INSERT UPDATE DELETE:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_list)] [(col,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col=expr [, col=expr] ... ]
Para hacer nuestras pruebas iniciales vamos a usar la tabla ya creada cb_currency para ello vamos a insertar una nueva moneda, recordemos antes como era la tabla que vamos a usar:
CREATE TABLE cb_currency ( idcurrency INT NOT NULL AUTO_INCREMENT, currency VARCHAR(60) NOT NULL, description VARCHAR(255) NOT NULL , isactive VARCHAR(1) NOT NULL DEFAULT 'N', isocode VARCHAR(3) NOT NULL, cursymbol VARCHAR(10), precisionstd DECIMAL(10,0) NOT NULL, precisioncost DECIMAL(10,0) NOT NULL, precisionprize DECIMAL(10,0) NOT NULL DEFAULT 0, CONSTRAINT pk_cb_currency PRIMARY KEY (idcurrency), CONSTRAINT u_cb_currency_currency UNIQUE (currency), CONSTRAINT u_cb_currency_isocode UNIQUE (isocode) ) ENGINE = InnoDB COMMENT='Tabla donde se definen las monedas disponibles y sus relaciones a partir de las monedas bases.'; GRANT ALL ON TABLE cb_currency TO xulescode;
Usamos idcurrency como clave primaria y los otros campos nos presentan diferentes tipos de datos para utilizar en nuestro ejemplo, ahora veremos como podemos insertar una o más filas especificándolo en los valores de la expresión, o muchas filas como resultado de una consulta.
Donde los valores para nuestra moneda serán, según el orden la tabla los siguientes: ‘Euxo’, ‘Euxo (Xules)’, ‘Y’, ‘EUX’, ‘X’, 2, 4, y 4, veamos ahora como creamos este nuevo idioma usando la sintaxis de INSERT en este caso indicamos específicamente que columnas vamos a añadir en el orden que queremos (este lo podemos variar):
INSERT INTO cb_currency(currency, description, isactive, isocode, cursymbol, precisionstd, precisioncost, precisionprize) VALUES ('Euxo', 'Euxo (Xules)', 'Y', 'EUX', 'X', 2, 4, 4);
Otra opción de introducir los datos
INSERT INTO cb_currency VALUES (null, 'Euxo', 'Euxo (Xules)', 'Y', 'EUX', 'X', 2, 4, 4)
El resultado en este ambos será algo así:
Executed successfully in 0,036 s, 1 rows affected. Line 1, column 1 Execution finished after 0,036 s, 0 error(s) occurred.
Puedes saltar al final de este tutorial para ver la consulta de como borrar este registro nuevo creado, para ver el resultado de la creación recuerda que puedes usar, por ejemplo esta consulta:
SELECT * FROM cb_currency WHERE currency = 'Euxo';
Otra forma de crear un nuevo registro es utilizar el INSERT con SET , sería así:
INSERT INTO cb_currency SET currency = 'Euxo', description = 'Euxo (Xules)', isactive = 'Y', isocode = 'EUX', cursymbol = 'X', precisionstd = 2, precisioncost = 4, precisionprize= 4;
Así, sería como lo veríamos en el IDE Netbeans del que estoy usando su editor SQL para crear este tutorial:
Vamos a ver como podemos hacer un INSERT a partir de una consulta, si estas empezando te diré que aunque ahora no lo parezca te resultará útil, sería así:
INSERT INTO cb_currency(currency, description, isactive, isocode, cursymbol, precisionstd, precisioncost, precisionprize) VALUES ('Eux1', 'Eux1 (Xules)', 'Y', 'EX1', '1', 2, 4, 4), ('Eux2', 'Eux2 (Xules)', 'N', 'EX2', '2', 2, 4, 4), ('Eux3', 'Eux3 (Xules)', 'N', 'EX3', '3', 2, 4, 4), ('Eux4', 'Eux4 (Xules)', 'N', 'EX4', '4', 2, 4, 4), ('Eux5', 'Eux5 (Xules)', 'Y', 'EX5', '5', 2, 4, 4);
SQL UPDATE
Vamos a ver la actualización de datos que es la modificación de los datos que ya están en la base de datos. Se pueden actualizar filas individuales, todas las filas de una tabla, o un subconjunto de todas las filas. Además, cada columna se puede actualizar por separado ya que las otras columnas no se ven afectadas.
Usamos el comando SQL UPDATE (MariaDB documentation) que tiene la siguiente sintaxis:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference [PARTITION (partition_list)] SET col1={expr1|DEFAULT} [,col2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Veamos un ejemplo actualizando la columna isactive con el valor ‘N’ para el registro que tiene el valor de ‘Eux1’ en la columna currency que hemos creado anteriormente, solo modificaremos este registro ya que el campo currency lo hemos establecido como único:
UPDATE cb_currency SET isactive = 'N' WHERE currency = 'Eux1';
Como puedes ver es bastante sencillo, después del UPDATE indicamos la tabla sobre la que vamos a actuar currency, en la clausula SET indicamos la actualización a realizar, y por último, con la clausula WHERE condicionamos los registros que se van a ver involucrados, en este caso con currency = ‘Eux1’, solo se verá un registro afectado. El resultado que nos muestra la consola nos indicará el número de registros afectados:
Executed successfully in 0,098 s, 1 rows affected. Line 1, column 1
Para realizar la actualización y ver el resultado final puedes concatenar las consultas como se muestra en el ejemplo de la imagen:
Para ver las posibilidades que tenemos con el UPDATE para afectar a varios registros vamos a adelantarnos un poco y ver algunas funciones que todavía no hemos visto, en este caso vamos a actualizar todos los registros que hemos creado con la columna isactive con el valor ‘N’ y la añadiendo en a la columna description un espacio y un * para esto utilizamos la función CONCAT con cada uno de los valores que queremos separados por comas: CONCAT(description,’ ‘, ‘*’), esta es la consulta con un SELECT de todos los registros que hemos nombrado a continuación, aquí introducimos el comparador LIKE que nos sirve para filtrar por aquellos valores que empiecen por Eux con el símbolo % a continuación para indicar que el final puede tener cualquier valor, estas son las consultas:
UPDATE cb_currency SET isactive = 'Y', description = CONCAT(description,' ', '*') WHERE currency IN ('Eux1', 'Eux2', 'Eux3', 'Eux4','Eux5'); SELECT * FROM cb_currency WHERE currency LIKE 'Eux%';
Este es el resultado con la ejecución de las consultas, finalizando las explicaciones del comando UPDATE dentro del estudio de MySQL INSERT UPDATE DELETE:
SQL DELETE
Después de explicar cómo agregar datos y cómo cambiarlos, para completar el trío MySQL INSERT UPDATE DELETE para MariaDB (MySQL), nos falta ver como eliminar los datos usando el comando SQL DELETE (Documentación de MariaDB), esta es la sintaxis:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_list)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] [RETURNING select_expr [, select_expr ...]]
Vamos a ver como eliminamos la columna que hemos creado en el apartado anterior, en este primer caso filtramos por el columna única de la tabla currency con lo que nos aseguramos que solo borramos el registro que queremos:
DELETE FROM cb_currency WHERE currency = 'Euxo';
Así, lo veremos si utilizamos el editor SQL de Netbeans:
También podemos añadirle a nuestra consulta RETURNING * (solo disponible a partir de la versión MariaDB 10.0.5) con lo que nos devuelve los datos que hemos borrado, en este caso utilizamos otra columna que también hemos definido como única isocode :
DELETE FROM cb_currency WHERE isocode = 'EUX'; RETURNING *;
Finalmente, nos queda la más sencilla, pero la más peligrosa, el borrado de todos los registros de la tabla:
DELETE FROM cb_currency;
Resumen
Como resumen, os dejo la imagen de esta consulta donde utilizo los tres comandos SQL para MySQL INSERT UPDATE DELETE, si has entendido bien lo explicado entenderás el resultado final:
Espero que te haya sido útil la publicación como aprendizaje de MySQL INSERT UPDATE DELETEXules