MySQL INSERT UPDATE DELETE : Tutorial MariaDB (5)

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 INSERTUPDATE 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:

Script para la población de datos de Customerdb:

Veamos entonces como manipular los datos en la base de datos MariaDB para ello vamos a ver la sintaxis de:

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:

Mariadb (MySQL) cb_currency INSERT con SET

Mariadb (MySQL) cb_currency INSERT con SET

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);

 

Mariadb cb_currency INSERT múltiple aprendizaje de MySQL INSERT UPDATE DELETE

Mariadb cb_currency INSERT múltiple

 

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:

Mariadb cb_currency UPDATE sintaxis para MySQL aprendiendo MySQL INSERT UPDATE DELETE

Mariadb cb_currency UPDATE

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:

Mariadb cb_currency con UPDATE de varios registros por condición aprendiendo MySQL INSERT UPDATE DELETE

Mariadb cb_currency con UPDATE de varios registros por condición

 

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:

Mariadb (MySQL) cb_currency DELETE aprendiendo MySQL INSERT UPDATE DELETE

Mariadb (MySQL) cb_currency DELETE

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:

Mariadb cb_currency consulta resumen MySQL INSERT UPDATE DELETE

Mariadb cb_currency consulta resumen MySQL INSERT UPDATE DELETE

 

Espero que te haya sido útil la publicación como aprendizaje de MySQL INSERT UPDATE DELETEXules

Deja un comentario

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