Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Datos MySQL
Instructor: Ing. Romn Hernndez
Tambin proporcionan el MySQL Server como biblioteca incrustada multithreaded que puede enlazar en su aplicacin para obtener un producto ms
pequeo, rpido y fcil de administrar
La forma oficial de pronunciar "MySQL" es "My Ess Que Ell" (no "my
sicuel"), pero no importa si lo pronuncia como "my sicuel" o de
alguna otra forma.
Historia de MySQL
Empezaron con la intencin de usar mSQL para conectar a sus tablas
utilizando sus propias utinas rpidas de bajo nivel (ISAM). Sin embargo y
tras algunas pruebas, llegaron a la conclusin que mSQL no era lo
suficientemente rpido o flexible para sus necesidades. Esto provoc la
creacin de una nueva interfaz SQL para su base de datos pero casi con
la misma interfaz API que mSQL. Esta API fue diseada para permitir
cdigo de terceras partes que fue escrito para poder usarse con mSQL
para ser fcilmente portado para el uso con MySQL.
La derivacin del nombre MySQL no est clara. Los directorios base y un
gran nmero de sus bibliotecas y herramientas han tenido el prefijo "my"
por ms de 10 aos. Sin embargo, la hija del cofundador Monty Widenius
tambin se llama My. Cul de los dos di su nombre a MySQL todava es
un misterio, incluso para sus desarrolladores
Historia de MySQL
El nombre del delfn de MySQL (logo) es "Sakila", que fue elegido
por los fundadores de MySQL AB de una gran lista de nombres
sugerida por los usuarios en el concurso "Name the Dolphin" (ponle
nombre al delfn). El nombre ganador fue enviado por Ambrose
Twebaze, un desarrollador de software Open Source de Swaziland,
frica. Segn Ambrose, el nombre femenino de Sakila tiene sus
races en SiSwate, el idioma local de Swaziland. Sakila tambin es
el nombre de una ciudad en Arusha, Tanzania, cerca del pas de
origen de Ambrose, Uganda.
Escrito en C y en C++
Probado con un amplio rango de compiladores diferentes
Funciona en diferentes plataformas.
Usa GNU Automake, Autoconf, y Libtool para portabilidad.
APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl.
Estabilidad de MySQL
Las descripciones mayormente se corresponden con la versin
3.23, 4.0 y 4.1 de MySQL Server. Todos los bugs reportados y
conocidos se arreglan en la ltima versin, con las excepciones
listadas en las secciones de bugs y que estn relacionados con
problemas de diseo
El diseo de MySQL Server es multi capa, con mdulos independientes.
Algunos de los ltimos mdulos se listan a continuacin con una indicacin
de lo bien testeados que estn:
Replicacin (Estable)
Hay grandes grupos de servidores usando replicacin en produccin, con buenos
resultados. Se trabaja para mejorar caractersticas de replicacin en MySQL 5.x.
Estabilidad de MySQL
InnoDB tablas (Estable)
El motor de almacenamiento transaccional InnoDB es estable y usado en grandes
sistemas de produccin con alta carga de trabajo
Instalar MySQL
La manera recomendada de instalar MySQL en Linux es utilizando
paquetes RPM. Los RPMs de MySQL estn generados en SuSE Linux 7.3,
pero deberan funcionar con cualquier versin de Linux que soporte rpm
y el uso de glibc.
En la mayora de los casos, slo ser necesario instalar los paquetes
MySQL-server y MySQL-client para conseguir una instalacin de MySQL en
funcionamiento. Los otros paquetes no se necesitan para una instalacin
estndar. Si se deseara ejecutar un servidor MySQL-Max, el cual posee
capacidades adicionales, se debera instalar tambin el RPM MySQL-Max.
No obstante, ello debera hacerse solamente despus de instalar el RPM
de MySQL-server
Instalar MySQL
Si se obtiene un mensaje de error de dependencias cuando se
intentan instalar los paquetes MySQL (por ejemplo, error:
removing these packages would break dependencies:
libmysqlclient.so.10 is needed by ...), se deber instalar tambin
el paquete MySQL-shared-compat, el cual incluye las bibliotecas
para compatibilidad de versiones anteriores (libmysqlclient.so.12
para MySQL 4.0 y libmysqlclient.so.10 para MySQL 3.23).
Instalar MySQL
Muchas distribuciones Linux an incluyen MySQL 3.23 y usualmente
enlazan las aplicaciones dinmicamente para economizar espacio
de disco. Si estas bibliotecas compartidas estn en un paquete
separado (por ejemplo, MySQL-shared), es suficiente con dejar ese
paquete instalado y solamente actualizar el servidor MySQL y los
paquetes cliente (los cuales estn enlazados estticamente y no
dependen de bibliotecas compartidas). Para aquellas
distribuciones que incluyen las bibliotecas compartidas en el
mismo paquete que el servidor MySQL (por ejemplo, Red Hat
Linux), se puede instalar el RPM MySQL-shared 3.23 o utilizar en su
lugar el paquete MySQL-shared-compat
Instalar MySQL
Muchas distribuciones Linux an incluyen MySQL 3.23 y usualmente
enlazan las aplicaciones dinmicamente para economizar espacio
de disco. Si estas bibliotecas compartidas estn en un paquete
separado (por ejemplo, MySQL-shared), es suficiente con dejar ese
paquete instalado y solamente actualizar el servidor MySQL y los
paquetes cliente (los cuales estn enlazados estticamente y no
dependen de bibliotecas compartidas). Para aquellas
distribuciones que incluyen las bibliotecas compartidas en el
mismo paquete que el servidor MySQL (por ejemplo, Red Hat
Linux), se puede instalar el RPM MySQL-shared 3.23 o utilizar en su
lugar el paquete MySQL-shared-compat
Instalar MySQL
Una forma sencilla de hacerlo en debian es acudiendo al gestor de
paquetes Synaptic quien se encarga de realizar las validacin de
los paquetes requeridos y realizar la instalacin conocida la clave
de superusuario
Otra forma es realizar la instalacin va Terminal y se debe tener
conocimiento de los paquetes requeridos y comandos a ejecutar
en caso de que falle la instalacin
Ingresar a MySQL
Para ingresar una vez se completa la instalacin ser va terminal
para ello se deben aplicar una serie de comandos:
@shell>mysql h host u nombre_usuario p
En esta sentencia la opcin h permite indicar el nombre del host al cual
vamos a generar la conexin u indica el nombre del usuario en nuestro caso
trabajaremos con el superusuario root y p es para indicar al pront que
solicite la contrasea para validar el acceso
Ingresar a MySQL
Nuestro terminal debe mostrar si todo fue correcto
mysql>
Es en este momento que estamos en nuestro gestor de bases de datos mysql
Si queremos saber cual versin tenemos instalada debemos aplicar la
sentencia sql:
Show variables like %version%;
Mostrar tablas
El comando show tables; muestra las tablas de la base de datos actual
Se puede utilizar la sintaxis show tables from bd, donde bd es el nombre de
una base de datos que no tiene porque estar en uso.
Crear tablas
Esta es ya una operacin muy importante. Es el comando create table el que la
realiza.
Este comando funciona con esta sintaxis:
create table nombreTabla (nombrecampo1 tipodatos(tamao), nombrecampo2
tipodatos(tamao),...);
Crear tablas
Indicar opciones en los campos en la creacin
Durante la creacin de campos se pueden indicar opciones (las opciones se
enumeran ms adelante) sobre los campos. Estas opciones se colocan tras el
tipo de datos del campo.
Crear tablas
Establecimiento de la clave durante la creacin
Se puede aadir la palabra primary key tras el tipo de datos del campo que se desea
sea la clave de la tabla. Si la clave es ms de un campo se realiza colocando la
palabra primary key como nombre de campo, seguida de los campos que forman la
clave entre parntesis.
Espacio
Rango
TINYINT
1 byte
-128 a 127
0 a 255
SMALL INT
2 bytes
-32768 a 32767
0 a 65535
MEDIUM INT
3 bytes
-8388608 a 8388607
0 a 16777215
INT
4 bytes
-2147483648 a 2147483647
0 a 4294967295
BIG INT
8 bytes
-9,223x10^18 a 9,223x10^18
0 a 18,446x10^36
FLOAT(M,D)
4 bytes
DOUBLE(M,D)
8 bytes
DECIMAL(M,D)
M+2 bytes
Espacio
Tamao mximo
CHAR(X)
x bytes
255 bytes
VARCHAR(X)
x + 1 bytes
255 bytes
TINYTEXT
x + 1 bytes
255 bytes
TINYBLOB
x + 1 bytes
255 bytes
TEXT
x + 2 bytes
65535 bytes
Espacio
Tamao mximo
BLOB
x + 2 bytes
65535 bytes
MEDIUMTEXT
x + 3 bytes
1,6 MB
MEDIUMBLOB
x + 3 bytes
1,6 MB
LONGTEXT
x + 4 bytes
4,2 GB
LONGBLOB
x + 4 bytes
4,2 GB
TIMESTAMP
Rango
Del 1 de enero de 1001 al
31/12 del 9999
De las 0 horas del 1/1/1001
a las 0 horas del 31/12/9999
Formato
ao-mes-da
Ao-mes-da horas:minutos:segundos
Ao-mes-da
horas:minutos:segundos
Permite estos tamaos:
14 (aaaammddhhmmss)
12 (aaaammddhhmm)
8 (aaaammdd)
6 (aammdd)
4 (aamm)
2 (aa)
Rango
TIME
YEAR
Formato
Se aplica a
Uso
AUTO_INCREMENT
Enteros
BINARY
CHAR y VARCHAR
DEFAULT
NOT NULL
Todos
PRIMARY KEY
Todos
UNIQUE
Todos
UNSIGNED
Enteros
ZEROFILL
Enteros
Borrar columnas
La sintaxis es:
Creacin de ndices
Para crear ndices, se utiliza:
create index nombrendice ON tabla (lista_campos);
Creacin de ndices
Desde la versin 3.23 de MySQL es ms recomendable la sintaxis:
alter table tabla add index (lista_campos);
Ejemplo:
alter table clientes add index (apellidos, nombre);
Creacin de ndices
Ejemplo:
alter table clientes add index nombreCompleto(apellidos,nombre);
Consultas
Obtener registros
La instruccin select es la fundamental del lenguaje SQL y por tanto de
MySQL. Esta instruccin permite realizar consultas sobre la base de datos.
El formato bsico de la instruccin es:
Consultas
Consultas
Consultas
Condiciones
El apartado where de la instruccin select nos permite poner una condicin
de modo que slo aparezcan en la consulta los registros que cumplan la
condicin. Se pueden utilizar operadores de comparacin.
Ejemplos:
Consultas
Condiciones
Tambin se puede realizar consultas con el operador OR o AND:
Ejemplos:
Consultas
Condiciones
Tambin se pueden usar patrones mediante la clusula like.
Ejemplo:
Consultas
Condiciones
Tambin se pueden usar patrones mediante la clusula like.
Ejemplo:
Consultas
Comodn
Comodn
Significado
g%
%g
%g%
_____
Consultas
Ordenar
La clusula order by sirve para ordenar en base a una o ms columnas.
Ejemplo:
Consultas
Consultas de campos calculados
Esto permite realizar clculos con las columnas de consulta. El resultado de
cada clculo se coloca en una nueva columna de la tabla. Para los clculos
se pueden utilizar operadores aritmticos y funciones.
Ejemplo:
Consultas
Consultas Join:
Ejercicio
Nos han pedido que hagamos el diseo de una BD para una pequea
empresa que se dedica a organizar estancias en el extranjero dentro de
una familia. La informacin que se desea almacenar es la siguiente:
Se tienen contactos con familias de diferentes pases que ofrecen alguna
de las habitaciones de su hogar para acoger algn chico (por un mdico
precio). De cada una de estas familias se conoce el nombre, la edad
mnima y mxima de sus hijos, nmero de hijos y correo electrnico.
Cada una de estas familias vive en una casa, de la que se conoce la
direccin (calle, numero, cdigo postal, ciudad y pas), el periodo de
disponibilidad de la casa, el tiempo mnimo de estancia, el tiempo mximo
y el precio de cada habitacin por da.
Ejercicio
Se dispone tambin de informacin de los clientes que desean
mandar a sus hijos a alguna de estas familias: idcliente, nombre,
direccin (calle, numero, cdigo postal, ciudad) y su correo
electrnico.
En la BD se almacena informacin de las reservas y estancias
realizadas por alguno de los clientes. Cada estancia o reserva la
realiza un cliente, un cliente puede reservar varias habitaciones al
mismo tiempo (por ejemplo para varios de sus hijos), para un
periodo determinado (fecha_llegada, fecha_salida).
Nos gustara tambin informacin depositada por los clientes sobre
las casas en las que ya han estado (comentarios).