Este documento proporciona una introducción al uso de MySQL. Explica cómo instalar MySQL, usar el monitor MySQL para realizar consultas SQL, y conceptos básicos como los tipos de datos admitidos. También describe cómo crear bases de datos y tablas, insertar datos, realizar consultas, y administrar usuarios y permisos.
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
Tema 7 Trabajando Con Mysql
1. TEMA 7: TRABAJO CON MYSQL
1.- INTRODUCCION
2.-INSTALACION DE MYSQL
3.-USO DEL MONITOR MYSQL
4.-CONCEPTOS BÁSICOS DE MYSQL
1
2. 1.- INTRODUCCION
Las características principales de Mysql son:
✔ Es un gestor de bases de datospor tanto es una
aplicación capaz de manejar este conjunto de datos de
manera eficiente y cómoda.
✔ Es una base de datos relacional
✔ Es Opensourceel código fuente se puede descargar
✔ Es rápido, seguro y fácil de usar
✔ Utiliza el lenguaje de consultas estructurado SQL
✔ Existe una gran cantidad de software que lo usa.
2.-INSTALACION DE MYSQL
El equipo en el que se ejecuta Mysql y que almacena los
datos se denomina servidor MySQL. Para poder establecer una
conexión con ese servidor existen varias opciones de instalación.
EL CLIENTE Y EL
SERVIDOR DE MYSQL
ESTÁN EN LA MISMA
MAQUINA
CLIENTE SERVIDOR
MYSQL MYSQL
✔
2
3. ✔
✔
La tercera opción sería que el cliente mysql no se encuentre
instalado en el equipo de sobremesa y necesitaramos conectarnos
a otro equipo para utilizar el cliente MYSQL, es ese cano
necesitaríamos Telnet o un cliente Secure Shell (SSH) para realizar
la conexión.
[2.1] Comenzar la instalación
Descargar el fichero de instalación, en nuestro caso mysql-x.x.x-
win.zip, del sitio web www.mysql.com
✔ Descomprimir su contenido en algún directorio
temporal
✔ Ejecutar el fichero Setup.exe
3
4. ✔ Una vez instalado, y si no lo crea la misma
instalación, habrá que crear un fichero llamado
MY.INI Ó MY.CNF que contendrá los siguientes
parámetros:
4
5. #This File was made using the WinMySQLadmin 1.0 Tool
#22/04/2001 11:44:09
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld]
basedir=C:/mysql/BIN
#bind-address=192.168.244.151
datadir=C:/mysql/ data
language=C:/mysql/share/spanish
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-opt.exe
user=admin
password=passadmin
QueryInterval=10
La IP 192.168.244.151 no se debe cambiar.
Este fichero se tendrá que copiar en el directorio de windows (C:/
Window ó C:/WINNT).
Este fichero se crea en la instalación pero si tuviésemos otra
instalación de MySQL, es decir, otra base de datos instalada en
nuestro equipo, este fichero ya existiría y no se creará de nuevo,
5
6. cogiendo los parámetros que se hayan escrito durante la primera
instalación.
✔ El servicio se añade pero no se arranca. Si
intentásemos arrancarlo nos daría un error 1067.
Esto no debe preocuparnos, lo que nos dice es que
para que este servicio arranque con éxito debemos
reiniciar el equipo.
Una vez reiniciado el servicio se arranca automáticamente. Sólo
tenemos que ir al directorio c:mysqlbin y ejecutar el fichero
WinMySQLAdmin ejecutándose la base de datos ya con el semáforo
de estado en verde.
✔ Comprobar que el servicio de mysql está activo.
Para ello iremos a:
Inicio>Configuración>Panel de
Control>Herramientas Administrativas>Servicios
✔ Ejecutar la herramienta WinmysqlAdmin para ver si
las versiones son correctas etc.
✔ Pruebas de conexión: Acceder al servidor mediante
un cliente de mysql
6
7. 3.-USO DEL MONITOR MYSQL
MYSQL ES UN PROGRAMA QUE SE EJECUTA DESDE EL PROMPT
DEL SISTEMA, QUE PERMITE CONECTARSE A UN SERVIDOR
MYSQL PARA ENVIARLE CONSULTAS Y COMANDOS, Y VER LOS
RESULTADOS.
Este comando permite:
✔ Consultar información de las bases de datos y tablas
✔ Crear bases de datos y tablas
✔ Eliminar bases de datos y tablas.
✔ Asignar y revocar privilegios.
✔ Consultar, insertar, actualizar y eliminar registros de
una tabla
[2.1] Sintaxis del comando mysql
$shell> mysql [-h hostname] [-u usuario] [-p]
contraseña [base de datos]
✔ En un entorno multiusuario es aconsejable escribir –p
sin introducir la contraseña para que MYSQL al
iniciarse la solicite
7
8. ✔ Para una conexión a un host local como usuario root,
las siguientes líneas son equivalentes.
# mysql
# mysql -u root
# mysql -h localhost -u root
Si se puede establecer la conexión a MySQL, se obtiene un
mensaje de bienvenida, y se cambia el prompt,
indicando que se pueden enviar consultas al servidor.
# mysql
Welcome to the MySQL monitor. Commands end with ;
or g.
Your MySQL connection id is 25 to server version:
3.23.41
Type 'help;' or 'h' for help. Type 'c' to clear the
buffer.
mysql>
[2.2] primeros comandos con el monitor de mysql
Un comando consta de una sentencia SQL seguida
por punto y coma.
Al escribir un comando, mysql lo manda al servidor
que lo ejecuta y posteriormente nos muestra los
resultados y nos devuelve el prompt para indicar
que está listo para recibir más consultas.
Mysql muestra cuántas filas fueron devueltas y
cuanto tiempo tardó en ejecutarse la consulta.
Las palabras claves se pueden escribir usando
mayúsculas y minúsculas.
8
9. Podemos escribir más de una sql en una línea
separándolas por ;
Es mejor utilizar la comilla simple para la escritura
de cadenas
No es necesario escribir un comando en una sola
línea mysql determina el final cuando encuentra el
;
Si no queremos terminar de escribir una consulta
podemos utilizar c
✔ Para saber la version y la fecha actual:
mysql> SELECT VERSION(), CURRENT_DATE;
✔ El programa mysql permite ver las bases de datos
existentes.
mysql> SHOW DATABASES ;
//Ejemplo
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
✔ La base de datos mysql es muy importante para el
funcionamiento del sistema de gestión de bases de
datos puesto que corresponde al DICCIONARIO DE
DATOS (relaciones que sirven para el correcto
funcionamiento de la base de datos). Las tablas de la
bd mysql contienen información sobre los privilegios
de un determinado usuario sobre una base de datos
cuando se conecta desde un determinado ordenador y
quiere acceder a ciertas tablas o columnas de una
tabla.
9
10. ✔ La base de datos test se crea durante la instalación
para servir como área de trabajo a los usuarios que
que se inician en el aprendizaje de Mysql.
✔ El programa mysql permite crear bases de datos. Si
estamos en Linux, los nombres de las bases de datos
y las tablas son sensibles a mayúsculas y minúsculas.
mysql> CREATE DATABASE nombreBaseDatos ;
//Ejemplo
mysql> CREATE DATABASE agendita;
Query OK, 1 row affected (0.00 sec)
✔ Con el cliente mysql hay que seleccionar la base
de datos sobre la que se va a trabajar.
mysql> USE nombreBaseDatos ;
(este comando solo puede ir escrito en una única línea)
//Ejemplo
mysql> USE agendita;
Database changed
✔ Una vez seleccionada una base de datos, se pueden
crear las tablas necesarias.
//Ejemplo
mysql> CREATE TABLE contactos (
-> id INT NOT NULL AUTO_INCREMENT ,
-> nombre VARCHAR(50) NOT NULL ,
10
11. -> email VARCHAR(50) NOT NULL ,
-> telefono VARCHAR(20) NOT NUL ,
-> PRIMARY KEY (id) );
Query OK, 0 rows affected (0.02 sec)
✔ Si queremos permite ver cuales son las tablas de una
base de datos.
mysql> SHOW TABLES ;
//Ejemplo
mysql> SHOW TABLES;
+--------------------+
| Tables_in_agendita |
+--------------------+
| contactos |
+--------------------+
1 row in set (0.00 sec
✔ Para poder examinar la estructura de una tabla.
mysql> DESC nombreTabla ;
//Ejemplo
mysql> DESC contactos;
+----------+-------------+------+-----+---------+
| Field | Type | Null | Key | Default |
+----------+-------------+------+-----+---------+
| id | int(11) | | PRI | NULL |
| nombre | varchar(50) | YES | | NULL |
| email | varchar(50) | YES | | NULL |
| telefono | varchar(50) | YES | | NULL |
11
13. ✔ Vamos a insertar registros en la tabla utilizando la
sentencia INSERT
mysql> INSERT INTO contactos VALUES
-> (0, 'Juan Penas', 'juancho@linux.com', '5675 -7383' );
mysql> INSERT INTO contactos VALUES
-> (0, 'Bety la fea', 'bety@comedias.com', '6373 -3459' );
mysql> INSERT INTO contactos VALUES
-> (0, 'Pepe pecas', 'pepe@cuentos.com', '7282 -2728' );
mysql> INSERT INTO contactos VALUES
-> (0, 'Mary B.', 'mary@boquitas.com', '3459 -2339');
PARA NO TENER QUE UTILIZAR TANTOS INSERT INTO
PODRIAMOS UTILIZAR UNO SOLO SEPARANDO LOS
REGISTROS MEDIANTE COMAS ESTO REDUCE EL CODIGO Y
HACE QUE EL SERVIDOR PROCESE MÁS RÁPIDO:
mysql> INSERT INTO contactos VALUES
-> (0, 'Juan Penas', 'juancho@linux.com', '5675 -7383' ),
-> (0, 'Bety la fea', 'bety@comedias.com', '6373 -3459' ),
-> (0, 'Pepe pecas', 'pepe@cuentos.com', '7282 -2728' ),
-> (0, 'Mary B.', 'mary@boquitas.com', '3459 -2339');
✔ Si queremos evitar tener que ejecutar múltiples
insert podemos cargar una tabla a partir de un
archivo de texto. El archivo debe contener un
registro por línea separado por el tabulador
cuidando de que el orden sea el mismo que
utilizamos en la sentencia create table. Para
valores desconocidos o sea null utilizaremos N.
Observar también que las fechas debemos darselas
en el formato YYYY-MM-DD
13
14. mysql> LOAD DATA LOCAL INFILE “MIFICHERO.TXT” INTO
TABLE CONTACTOS;
✔ Para restringir el acceso a una base de datos:
mysql> GRANT ALL ON base.* TO NOMBREUSUARIO@MIPC
IDENTIFIED BY ‘MICONTRASEÑA’;
nombreusuario ES EL NOMBRE DE USUARIO
ASIGNADO DENTRO DEL CONTEXTO DE MYSQL
MIPC ES EL NOMBRE O LA DIRECCION IP DEL
ORDENADOR DESDE EL QUE NOS CONECTAMOS
MICONTRASEÑA ES LA CONTRASEÑA QUE SE LE
HA ASIGNADO A ESE USUARIO.
El nombre de usuario y la contraseña no
tienen nada que ver con el nombre del usuario
y la contraseña manejados por el sistema
operativo
✔ Podemos utilizar las sentencias SELECT que ya
conocemos desde el monitor mysql
mysql> SELECT * FROM contactos;
mysql> SELECT nombre, email FROM contactos;
mysql> SELECT nombre, email, telefono FROM contactos
-> WHERE id = 3;
mysql> SELECT * FROM contactos WHERE nombre
-> LIKE 'Pepe%';
mysql> SELECT COUNT(*) AS num FROM contactos;
14
15. 4.-CONCEPTOS BÁSICOS DE MYSQL
[4.1] tipos de datos en mysql
NUMÉRICOS:
Existen tipos de datos numéricos, que se pueden dividir en
dos grandes grupos, los que están en coma flotante (con
decimales) y los que no.
TinyInt: es un número entero con o sin signo. Con signo el
rango de valores válidos va desde -128 a 127. Sin signo, el
rango de valores es de 0 a 255
Bit ó Bool: un número entero que puede ser 0 ó 1
SmallInt: número entero con o sin signo. Con signo el
rango de valores va desde -32768 a 32767. Sin signo, el
rango de valores es de 0 a 65535.
MediumInt: número entero con o sin signo. Con signo el
rango de valores va desde -8.388.608 a 8.388.607. Sin
signo el rango va desde 0 a16777215.
Integer, Int: número entero con o sin signo. Con signo el
rango de valores va desde -2147483648 a 2147483647. Sin
signo el rango va desde 0 a 429.4967.295
BigInt: número entero con o sin signo. Con signo el rango
de valores va desde -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807. Sin signo el rango va desde 0 a
18.446.744.073.709.551.615.
Float: número pequeño en coma flotante de precisión
15
16. simple. Los valores válidos van desde -3.402823466E+38 a
-1.175494351E-38, 0 y desde 1.175494351E-38 a
3.402823466E+38.
xReal, Double: número en coma flotante de precisión
doble. Los valores permitidos van desde
-1.7976931348623157E+308 a -2.2250738585072014E-308,
0 y desde 2.2250738585072014E-308 a
1.7976931348623157E+308
Decimal, Dec, Numeric: Número en coma flotante
desempaquetado. El número se almacena como una
cadena
Tipo de Tamaño de
Campo Almacenamiento
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT 4 bytes
INTEGER 4 bytes
BIGINT 8 bytes
FLOAT(X) 4 ú 8 bytes
FLOAT 4 bytes
DOUBLE 8 bytes
DOUBLE
8 bytes
PRECISION
REAL 8 bytes
M+2 bytes sí D >
DECIMAL(M,D 0, M+1 bytes sí D
=0
M+2 bytes if D >
NUMERIC(M,D) 0, M+1 bytes if D
=0
16
17. FECHA:
A la hora de almacenar fechas, hay que tener en cuenta
que Mysql no comprueba de una manera estricta si una
fecha es válida o no. Simplemente comprueba que el mes
esta comprendido entre 0 y 12 y que el día esta
comprendido entre 0 y 31.
Date: tipo fecha, almacena una fecha. El rango de valores
va desde el 1 de enero del 1001 al 31 de diciembre de
9999. El formato de almacenamiento es de año-mes-dia
DateTime: Combinación de fecha y hora. El rango de
valores va desde el 1 de enero del 1001 a las 0 horas, 0
minutos y 0 segundos al 31 de diciembre del 9999 a las 23
horas, 59 minutos y 59 segundos. El formato de
almacenamiento es de año-mes-dia
horas:minutos:segundos
TimeStamp: Combinación de fecha y hora. El rango va
desde el 1 de enero de 1970 al año 2037. El formato de
almacenamiento depende del tamaño del campo:
Tamaño Formato
AñoMesDiaHoraMinutoSegundo
14
aaaammddhhmmss
AñoMesDiaHoraMinutoSegundo
12
aammddhhmmss
8 ñoMesDia aaaammdd
6 AñoMesDia aammdd
4 AñoMes aamm
2 Año aa
Time: almacena una hora. El rango de horas va desde -838
17
18. horas, 59 minutos y 59 segundos a 838, 59 minutos y 59
segundos. El formato de almacenamiento es de 'HH:MM:SS'
Year: almacena un año. El rango de valores permitidos va
desde el año 1901 al año 2155. El campo puede tener
tamaño dos o tamaño 4 dependiendo de si queremos
almacenar el año con dos o cuatro dígitos.
Tipo de Tamaño de
Campo Almacenamiento
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
CADENA:
Char(n): almacena una cadena de longitud fija. La cadena
podrá contener desde 0 a 255 caracteres.
VarChar(n): almacena una cadena de longitud variable. La
cadena podrá contener desde 0 a 255 caracteres.
Dentro de los tipos de cadena se pueden distinguir otros
dos subtipos, los tipo Test y los tipo BLOB (Binary large
Object)
La diferencia entre un tipo y otro es el tratamiento que
reciben a la hora de realizar ordenamientos y
comparaciones. Mientras que el tipo test se ordena sin
tener en cuenta las Mayúsculas y las minúsculas, el tipo
BLOB se ordena teniéndolas en cuenta.
Los tipos BLOB se utilizan para almacenar datos binarios
como pueden ser ficheros.
18
19. TinyText y TinyBlob: Columna con una longitud máxima de
255 caracteres.
Blob y Text: un texto con un máximo de 65535 caracteres.
MediumBlob y MediumText: un texto con un máximo de
16.777.215 caracteres.
LongBlob y LongText: un texto con un máximo de
caracteres 4.294.967.295. Hay que tener en cuenta que
debido a los protocolos de comunicación los paquetes
pueden tener un máximo de 16 Mb.
Enum: campo que puede tener un único valor de una lista
que se especifica. El tipo Enum acepta hasta 65535 valores
distintos
Set: un campo que puede contener ninguno, uno ó varios
valores de una lista. La lista puede tener un máximo de 64
valores.
Tamaño de
Tipo de campo
Almacenamiento
CHAR(n) n bytes
VARCHAR(n) n +1 bytes
TINYBLOB, TINYTEXT Longitud+1 bytes
Longitud +2
BLOB, TEXT
bytes
MEDIUMBLOB, Longitud +3
MEDIUMTEXT bytes
Longitud +4
LONGBLOB, LONGTEXT
bytes
ENUM('value1','value2',...) 1 ó dos bytes
dependiendo del
19
20. número de
valores
1, 2, 3, 4 ó 8
bytes,
SET('value1','value2',...) dependiendo del
número de
valores
Diferencia de almacenamiento entre los tipos Char y
VarChar:
Almace Almace
Valor CHAR(4) VARCHAR(4)
namiento namiento
'' '' 4 bytes " 1 byte
'ab' 'ab ' 4 bytes 'ab' 3 bytes
'abcd' 'abcd' 4 bytes 'abcd'
'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes
[4.1] tipos de tablas en mysql
Mysql soporta varios motores de almacenamiento que
tratan con diferentes tipos de tablas. Los motores de
almacenamiento incluyen algunos que tratan con tablas
transaccionales y otros que no lo hacen.
Los tipos de tablas transaccionales son:
• INNODB Y BDB
Los tipos de tablas no transaccionales son:
• ISAM, MYISAM, MERGE Y HEAP
20
21. Describamos brevemente algunos de los tipos existentes:
ISAM: es el formato de almacenaje mas antiguo, y
posiblemente podria desaparecer en futuras versiones.
Presentaba limitaciones importantes como la no
exportación de ficheros entre maquinas de distintas
arquitecturas o que no podia usar mayores de 4
GigaBytes.
MYISAM: es el tipo de tabla por defecto en MySQL desde
la versión 3.23. Optimizada para sistemas operativos de
64 bits, permite ficheros de tamaños mayores que las
ISAM. Los datos se almacenan en un formato
independiente, lo que permite pasar tablas entre
distintas plataformas. Los índices se almacenan en un
archivo con la extensión ”.MYI” y los datos en otro
archivo con extensión “.MYD”. Ofrece la posibilidad de
indexar campos BLOB y TEXT. Además este tipo de tablas
soportan el tipo de dato VARCHAR.
Un inconveniente es que las tablas pueden llegar a
corromperse, almacenando datos incorrectos debido a
caídas del sistema o problemas de hardware.
INNODB: InnoDB provee a MySQL con el soporte para
trabajar con transacciones, además de hacer un mejor
bloqueo de registros para las instrucciones SELECT muy
parecido al usado por Oracle, con lo que incrementa el
rendimiento y la concurrencia en ambientes
multiusuario.
InnoDB es el único formato que tiene MySQL para
soportar llaves foráneas (FOREING KEY).
Las características más importantes a destacar son:
Recuperación automática ante fallas. Si MySQL se
da de baja de una forma anormal, InnoDB
automáticamente completará las transacciones
que quedaron incompletas.
21
22. Integridad referencial. Ahora se pueden definir
llaves foráneas entre tablas InnoDB relacionadas
para asegurarse de que un registro no puede ser
eliminado de una tabla si aún está siendo
referenciado por otra tabla.
Bloqueo a nivel de filas. Al usar tablas MyISAM, y
tener consultas muy grandes que requieren de
mucho tiempo, simplemente no se podían
ejecutar más consultas hasta que terminarán las
consultas que estaban en ejecución. En cambio,
las tablas InnoDB usan bloqueo a nivel de filas
para mejorar de manera impresionante el
rendimiento.
¿Qué TIPO DE TABLA UTILIZAR?
Por razones de rendimiento, las tablas
INNODB si hay que realizar gran cantidad de
operaciones de inserción y actualización o
bien utilizar integridad referencial.
Si las operaciones de selección son las
mayoritarias es mejor el tipo MYISAM
Cuando se crea una tabla, el tipo se indica añadiendo
la opción TYPE al comando CREATE TABLE
CREATE TABLE T (I INT) TYPE=INNODB;
Veamos ahora lo que es una TRANSACCIÓN.
[4.1] transacciones en mysql
Una TRANSACCIÓN en MySQL es una secuencia de una o
más sentencias SQL que juntas forman una unidad de
trabajo. Es decir, las operaciones que forman una
transacción debe ser completas en su totalidad o pueden
se desechas si el proceso no se completó correctamente
22
23. El SGBD tiene que disponer de procedimientos que
aseguren la integridad de la información ante fallos de
tipo físico, lógico, humano así como proteger los datos
frente a accesos no autorizados.
Supongamos una sucursal bancaria donde tenemos
almacenados los datos de los clientes:
Por ejemplo:
Nº NOMBRE SALDO
CUENTA
1 PALOMA 1 MILL
2 JUAN 2 MILL
Supongamos un traspaso de la cuenta 2 de 1 MILL a
la cuenta 1. La secuencia de operaciones lógicas a realizar
sería:
Restar 1MILL a la cuenta2 2.Sumar 1MILL a la
cuenta1
¿Qué ocurriría si se lleva a cabo la 1ª operación, pero
no la 2ª?
Evidentemente la B.D quedaría en un estado
inconsistente.
Nº NOMBRE SALDO
CUENTA
1 PALOMA 1 MILL
2 JUAN 1 MILL
23
24. A este problema se le conoce con el nombre del
problema DE LA INFORMACION PERDIDA. Para evitar este
problema el SGBD va a realizar lo que se conoce como
TRANSACCION. Para controlar las transacciones el SGBD se
apoya en 1 o más ficheros diarios de extensión LOG, sobre
los que se va volcando la información. De manera que
cada cierto tiempo el SGBD realiza un CHECKPOINT, un
pto. de chequeo. Cuando realiza ese chequeo graba en
ciertas áreas de MEMORIA SECUNDARIA el estado de la B.D.
Suponiendo el siguiente diagrama de transacciones:
Trans1 Trans4
Trans3
Trans2 Trans5
CHECKPOINT
RECUPERACION EN CALIENTE/FRIO DE LA B.D:
El SGBD deshace las transacciones que no
hubieran concluido o bien las transacciones conclusas que
no estén registradas en el área correspondiente de
MEMORIA SECUNDARIA.
24
25. Si la recuperación de la B.D. se hace a través de un
BACKUP la recuperación se conoce con el nombre de
RECUPAERACION EN FRIO.
Otro ejemplo típico sería suponer que queremos
borrar uno o varios registros de una tabla, pero nos
equivocamos y eliminamos todos los registros de la tabla.
¿Existe alguna forma de subsanar el error y dar marcha
atrás para recuperar los registros eliminados? La respuesta
es sí, utilizando transacciones.
Por defecto MySQL funciona en modo autocommit. Esto
quiere decir que se confirma (COMMIT) cada sentencia
ejecutada.
Los pasos para iniciar una transacción son los siguientes:
Se comienza una transacción con la sentencia START
TRANSACTION.
Si se realizan modificaciones en la base de datos y
queremos volver atrás y cancelar los cambios
realizados hasta el momento, utilizaremos la
sentencia ROLLBACK.
Si queremos confirmar los cambios realizados en la
base de datos, utilizaremos la sentencia COMMIT, lo
cual implica también que termina la transacción.
Si queremos comenzar una nueva transacción,
usaremos START TRANSACTION.
Nota: para que las transacciones funcionen
correctamente, debemos utilizar tablas InnoDB.
Veamos un ejemplo.
Disponemos de la tabla EMPLE, que está formada por los
campos que se muestran en la imagen.
25
26. A continuación comenzamos una transacción con START
TRANSACTION.
Modificamos el salario de todos los empleados de la tabla
EMPLE, con la siguiente sentencia SQL.
• update emple set salario=1000;
26
27. Observamos a continuación que se ha modificado el salario
de todos los empleados.
Deshacemos el trabajo ya que nos hemos equivocado. Para
ello utilizamos la sentencia ROLLBACK.
27
28. Y comprobamos a continuación que la tabla vuelve a su
estado original.
Si queremos validar los cambios en la base de datos,
completaremos la transacción con el uso de la sentencia
COMMIT. Si ejecutamos ROLLBACK justo después de hacer
el COMMIT, los cambios realizados sobre la base de datos
28