viernes, 15 de abril de 2016

Primeros Pasos en MySQL - Actualizar y borrar datos en MariaDB (MySQL)

Buenas noches queridos lectores, en esta noche continuaremos con el curso de MariaDB (MySQL), y les mostraré como eliminar o actualizar datos, cabe señalar que en tablas vinculadas correctamente con sus llaves primarias y foráneas, no nos permitirá borrar nada si se pierde la integridad, por eso es muy importante que se entienda este tema. Pero sin más preámbulos, comencemos.

Les dejaré aquí el script que se lleva hasta el momento, para que no tengan problemas

/*CREATE DATABASE PAISES
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

USE PAISES

CREATE TABLE IF NOT EXISTS PAIS
(cod_pais char (4) PRIMARY KEY,
nombre varchar(50),
fecha_independencia date);

create table CIUDAD
(cod_ciudad varchar(4) PRIMARY KEY,
nombre varchar(50),
cod_pais char(4),
capital bool,
CONSTRAINT cod_pais_fk FOREIGN KEY (cod_pais) REFERENCES pais (cod_pais));

insert into pais  values ('MEX', 'MEXICO','18210921');
insert into ciudad values ('GDL', 'Guadalajara', 'MEX', false);
insert into pais values ('PERU', 'Peru', '18210728');
insert into ciudad values ('LIM', 'Lima', 'PERU', false);


*/
Vamos a ingresar otras ciudades a la tabla CIUDADES, espero lo recuerden

Ejercicio 1
Ingresar las ciudades de México D.F, Monterrey y Toluca en el país México, y las ciudades de Cuzco y Arequipa en el país de Perú
insert into ciudad values ('MXCD', 'Ciudad de México', 'MEX', true);
insert into ciudad values ('MTY', 'Monterrey','MEX', false);
insert into ciudad values ('TOL', 'Toluca', 'MEX', false);
insert into ciudad values ('CZO', 'Cuzco', 'PERU', false);
insert into ciudad values ('ARE', 'Arequipa', 'PERU', false);

Ahora ingresaremos el país llamado "Guatemala", espero no tengan problems en agregarlo, de cualquier manera, la sintaxis es la siguiente:

DELETE


Ejercicio 2
Ingresar un nuevo país a la base de datos llamado Guatemala
insert into pais  values ('GUA', 'Guatemala','18210915');

Ahora imaginemos que queremos borrar el país Perú, para ello, conoceremos una nueva sentencia, la sentencia DELETE, veamos algunos ejemplos:

Ejercicio 3
Eliminar de la base de datos el país Perú utilizando la sentencia DELETE y su filtro WHERE
delete from pais
where cod_pais = 'PERU'

Para eliminar un registro o varios registros de la base de datos se utiliza la sentencia DELETE, como ven se declara DELETE from el from nos indica desde que tabla, en este caso desde la tabla PAIS, donde el cod_pais sea igual a Perú, es IMPORTANTISIMO utilizar el WHERE ya que si no se utiliza se BORRARA TODA LA TABLA Y NO HABRÁ MANERA DE RECUPERARLA, así que por favor tengan mucho cuidado. Al ejecutar el comando, nos aparece el siguiente mensaje:


Como pueden observar la base de Datos genera un error y el error se refiere a la llave foránea (cod_pais) que hace referencia a la tabla pais en su campo (cod_pais), ¿que significa eso? Fácil, que no podemos borrar el país, porque tenemos ciudades dadas de alta haciendo referencia al país PERU, para borrar el país, necesitaría promero borrar todas las ciudades que esten relacionadas con el país PERU y después borrar al país, como se dan cuenta, esto cuida la integridad de los datos, ya que si se pudiera borrar el país PERU, quedaría las ciudades de Lima, Cuzco y Arequipa, totalmente sueltas, ya que no habría ningún país con el cual relacionarlo, ésto puede ocasionar que haya basura en la base de datos y la información no salga de manera correcta y que las consultas se vuelvan cada vez mas lentas, así que, como ven, se puede evitar de una manera sencilla, creando nuestras llaves foráneas. Cabe señalas que si es posible borrar el país, y se borrarían las ciudades autómaticamente, esto sería con la sentencia DELETE on CASCADE que veremos más adelante. Vamos a hacer otro ejemplo y ahora borraremos el país que acabamos de crear, o sea Guatemala

Primero consultemos la tabla pais para ver los paises que existen

select * from pais;


Vemos que existen tres países Guatemala, México y Perú, ahora borraremos Guatemala

Ejercicio 4
Eliminar de la base de datos el país GUATEMALA utilizando la sentencia DELETE y su filtro WHERE

delete from pais
where cod_pais = 'GUA'

Al eliminar el país Guatemala, no nos muestra ningún error por el hecho de que no hay ninguna ciudad dada de alta que esté relacionada a Guatemala y es por eso que se puede eliminar.

UPDATE

Ahora supongamos que me equivoqué en algún dato del registro, aquí tendría la opción de borrar el registro y volverlo a escribir, pero no siempre es fácil no viable, pues se puede dar el caso de que tenga un registro de otra tabla relacionado y me marque un error, como en el caso de los países. Supongamos que me equivoqué en la fecha de independencia de México, ya no puedo borrarlo y volverlo a ingresar porque hay ciudades relacionadas y marcará un error de llave foránea. Como no puedo borrarlo para volverlo a ingresar, actualizaré sus datos. Y para ello utilizaremos la sentencia UPDATE.

Ejercicio 5:
Actualizar la fecha de independencia de México por el 27 de septiembre de 1821 utilizando la sentencia UPDATE con su clausula WHERE

update  pais
set fecha_independencia = '18100927'
where cod_pais='MEX';

Como vemos para actualizar se utiliza la sentencia UPDATE, despues el nombre de la tabla a actualizar, en este caso PAIS, despues set y el nombre del campo, en este caso fecha_independencia, seguidamente viene la clausula WHERE para filtrar el registro o registros que queremos que cambie, en este caso donde el cod_pais sea MEX, es IMPORTANTISIMO utilizar la clausula WHERE ya que si no se utiliza se ACTUALIZARA TODA LA TABLA Y NO HABRÁ MANERA DE RECUPERARLA, al momento de ejecutar no muestra ningún error, vamos a comprobar que realmente se actualizó y la tabla queda como vemos en la siguiente imagen:

select * from pais;


Listo, como pueden observar el cambio se realizó correctamente. 

Hasta aquí el post queridos amigos, espero haya sido de su agrado y de su utilidad, espero compartan, comenten, hagan +1 o le den clic a algún anuncio que les interese, ya saben como siempre estoy a sus órdenes para cualquier duda que tengan.

Saludos






Banderas de Visitantes

Flag Counter