SlideShare una empresa de Scribd logo
1 de 29
TEMA 7: TRABAJO CON MYSQL


1.- INTRODUCCION

2.-INSTALACION DE MYSQL

3.-USO DEL MONITOR MYSQL

4.-CONCEPTOS BÁSICOS DE MYSQL




                                1
1.- INTRODUCCION



    Las características principales de Mysql son:

      ✔ Es un gestor de bases de datospor 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 Opensourceel 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
✔
              ✔

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
✔ 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
#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
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
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
✔ 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
 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
✔ 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
-> 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
+----------+-------------+------+-----+---------+
4 rows in set (0.00 sec)




                                                    12
✔   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
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
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
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
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
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
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
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
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
 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
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
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
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
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
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
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
permanecerán, debido a que anteriormente se validó la
transacción.




                                                   29

Más contenido relacionado

La actualidad más candente

Actividad No. 1.14: Replicación de datos en MySQL 5.1
Actividad No. 1.14: Replicación de datos en  MySQL 5.1Actividad No. 1.14: Replicación de datos en  MySQL 5.1
Actividad No. 1.14: Replicación de datos en MySQL 5.1Francisco Medina
 
Mysql Seguridad Replicacion
Mysql Seguridad ReplicacionMysql Seguridad Replicacion
Mysql Seguridad Replicacionchristian nieto
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysqloskrsolis
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQLAngel Vazquez
 
Tutorial básico de my sql
Tutorial básico de my sqlTutorial básico de my sql
Tutorial básico de my sqlGuiro Lin
 
Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datostickyandres
 
Actividad No. 1.6: Creación de bases de datos en MySQL
Actividad No. 1.6: Creación de bases de datos en MySQLActividad No. 1.6: Creación de bases de datos en MySQL
Actividad No. 1.6: Creación de bases de datos en MySQLFrancisco Medina
 

La actualidad más candente (14)

Actividad No. 1.14: Replicación de datos en MySQL 5.1
Actividad No. 1.14: Replicación de datos en  MySQL 5.1Actividad No. 1.14: Replicación de datos en  MySQL 5.1
Actividad No. 1.14: Replicación de datos en MySQL 5.1
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Mysql Seguridad Replicacion
Mysql Seguridad ReplicacionMysql Seguridad Replicacion
Mysql Seguridad Replicacion
 
Mysql
MysqlMysql
Mysql
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Clúster
ClústerClúster
Clúster
 
Introducción a MySql
Introducción a MySqlIntroducción a MySql
Introducción a MySql
 
Replicacion en mysq
Replicacion en mysqReplicacion en mysq
Replicacion en mysq
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQL
 
Tutorial básico de my sql
Tutorial básico de my sqlTutorial básico de my sql
Tutorial básico de my sql
 
Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datos
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
 
Actividad No. 1.6: Creación de bases de datos en MySQL
Actividad No. 1.6: Creación de bases de datos en MySQLActividad No. 1.6: Creación de bases de datos en MySQL
Actividad No. 1.6: Creación de bases de datos en MySQL
 
MANUAL
MANUALMANUAL
MANUAL
 

Similar a Tema 7 Trabajando Con Mysql

Mysql(1)
Mysql(1)Mysql(1)
Mysql(1)Iri Lis
 
Manual my sql Utu atlantida 2015
Manual my sql Utu atlantida 2015Manual my sql Utu atlantida 2015
Manual my sql Utu atlantida 2015Bruno Regusci
 
JPerez actividad_1.1_BBDD
JPerez actividad_1.1_BBDDJPerez actividad_1.1_BBDD
JPerez actividad_1.1_BBDDJavier Pérez
 
Tutorial mysql-basico
Tutorial mysql-basicoTutorial mysql-basico
Tutorial mysql-basicoGuiro Lin
 
Manualmysql
ManualmysqlManualmysql
Manualmysqlmi casa
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysqlkyaalena
 
Diseño de Base de Datos en MySql
Diseño de Base de Datos en MySqlDiseño de Base de Datos en MySql
Diseño de Base de Datos en MySqlKeryn Mendoza
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysqloskrsolis
 
My Sql Comunity Edition
My Sql Comunity EditionMy Sql Comunity Edition
My Sql Comunity EditionMiguel Angel
 
Html,php
Html,phpHtml,php
Html,phpsoftyed
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlKARY
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlKARY
 

Similar a Tema 7 Trabajando Con Mysql (20)

Manual de mysql
Manual de mysqlManual de mysql
Manual de mysql
 
Mysql(1)
Mysql(1)Mysql(1)
Mysql(1)
 
MYSQL
MYSQL MYSQL
MYSQL
 
Manual my sql Utu atlantida 2015
Manual my sql Utu atlantida 2015Manual my sql Utu atlantida 2015
Manual my sql Utu atlantida 2015
 
Mysql
MysqlMysql
Mysql
 
Mysql
MysqlMysql
Mysql
 
Mysql
MysqlMysql
Mysql
 
JPerez actividad_1.1_BBDD
JPerez actividad_1.1_BBDDJPerez actividad_1.1_BBDD
JPerez actividad_1.1_BBDD
 
Tutorial mysql-basico
Tutorial mysql-basicoTutorial mysql-basico
Tutorial mysql-basico
 
Manualmysql
ManualmysqlManualmysql
Manualmysql
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Diseño de Base de Datos en MySql
Diseño de Base de Datos en MySqlDiseño de Base de Datos en MySql
Diseño de Base de Datos en MySql
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Mysql2
Mysql2Mysql2
Mysql2
 
My Sql Comunity Edition
My Sql Comunity EditionMy Sql Comunity Edition
My Sql Comunity Edition
 
Reporte cluster
Reporte clusterReporte cluster
Reporte cluster
 
Html,php
Html,phpHtml,php
Html,php
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys ql
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys ql
 

Último

Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 

Último (20)

Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
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 datospor 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 Opensourceel 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
  • 29. permanecerán, debido a que anteriormente se validó la transacción. 29