Está en la página 1de 90

Manejador de Base de

Datos MySQL
Instructor: Ing. Romn Hernndez

Sistema de gestin de bases de datos MySQL


MySQL, el sistema de gestin de bases de datos SQL Open Source
ms popular, lo desarrolla, distribuye y soporta MySQL AB. MySQL
AB es una compaa comercial, fundada por los desarrolladores de
MySQL.
Es una compaa Open Source de segunda generacin que une los
valores y metodologa Open Source con un exitoso modelo de
negocio.
El sitio web MySQL (http://www.mysql.com/) proporciona la
ltima informacin sobre MySQL y MySQL AB.

Sistema de gestin de bases de datos MySQL


MySQL es un sistema de gestin de bases de datos
Una base de datos es una coleccin estruturada de datos. Puede ser
cualquier cosa, desde una simple lista de compra a una galera de pintura o
las ms vastas cantidades de informacin en una red corporativa. Para
aadir, acceder, y procesar los datos almacenados en una base de datos,
necesita un sistema de gestin de base de datos como MySQL Server. Al ser
los computadores muy buenos en tratar grandes cantidades de datos, los
sistemas de gestin de bases de datos juegan un papel central en
computacin, como aplicaciones autnomas o como parte de otras
aplicaciones.

Sistema de gestin de bases de datos MySQL


MySQL es un sistema de gestin de bases de datos relacionales
Una base de datos relacional almacena datos en tablas separadas en lugar
de poner todos los datos en un gran almacn. Esto aade velocidad y
flexibilidad. La parte SQL de MySQL se refiere a Structured Query
Language. SQL es el lenguaje estandarizado ms comn para acceder a
bases de datos y est definido por el estndar ANSI/ISO SQL. El estndar SQL
ha evolucionado desde 1986 y existen varias versiones. En este manual,
"SQL-92" se refiere al estndar del 1992, SQL:1999 se refiere a la
versindel 1999, y SQL:2003 se refiere a la versin actual del estndar.
Usamos la frase el estndar SQL para referirnos a la versin actual de
SQL.

Sistema de gestin de bases de datos MySQL


MySQL software es Open Source.
Open Source significa que es posible para cualquiera usar y modificar el
software. Cualquiera puede bajar el software MySQL desde internet y usarlo
sin pagar nada. Si lo desea, puede estudiar el cdigo fuente y cambiarlo
para adapatarlo a sus necesidades. El software MySQL usa la licencia GPL
(GNU General Public License), http://www.fsf.org/licenses/, para definir lo
que puede y no puede hacer con el software en diferentes situaciones. Si no
se encuentra cmodo con la GPL o necesita aadir cdigo MySQL en una
aplicacin comercial, puede comprar una licencia comercial. Consulte la
Introduccin a las Licencias MySQL para ms informacin
(http://www.mysql.com/company/legal/licensing/).

Sistema de gestin de bases de datos MySQL


El servidor de base de datos MySQL es muy rpido, fiable y fcil de
usar
El servidor MySQL tambin tiene una serie de caractersticas prcticas
desarrolladas en cooperacin con los usuarios. Puede encontrar
comparaciones de rendimiento de MySLQL Server con otros sistemas de
gestin de bases de datos en la pgina de comparativas de rendimiento.
MySQL Server se desarroll originalmente para tratar grandes bases de datos
mucho ms rpido que soluciones existentes y ha sido usado con xito en
entornos de produccin de alto rendimiento durante varios aos. MySQL
Server ofrece hoy en da una gran cantidad de funciones. Su conectividad,
velocidad, y seguridad hacen de MySQL Server altamente apropiado para
acceder bases de datos en Internet

Sistema de gestin de bases de datos MySQL


MySQL Server trabaja en entornos cliente/servidor o incrustados
El software de bases de datos MySQL es un sistema cliente/servidor que
consiste en un servidor SQL multi-threaded que trabaja con diferentes
backends, programas y bibliotecas cliente, herramientas administrativas y
un amplio abanico de interfaces de programacin para aplicaciones (APIs).

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

Sistema de gestin de bases de datos MySQL


Una gran cantidad de software de contribuciones est disponible
para MySQL
Es muy posible que su aplicacin o lenguaje favorito soporte el servidor de
base de datos MySQL.

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.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Interioridades y portabilidad

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.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Interioridades y portabilidad
Uso completo de multi-threaded mediante threads del kernel. Pueden usarse
fcilmente mltiples CPUs si estn disponibles.
Proporciona sistemas de almacenamiento transaccionales y no transaccionales.
Usa tablas en disco B-tree (MyISAM) muy rpidas con compresin de ndice.
Relativamente sencillo de aadir otro sistema de almacenamiento. Esto es til
si desea aadir una interfaz SQL para una base de datos propia.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Interioridades y portabilidad

Un sistema de reserva de memoria muy rpido basado en threads.


Joins muy rpidos usando un multi-join de un paso optimizado.
Tablas hash en memoria, que son usadas como tablas temporales.
Las funciones SQL estn implementadas usando una librera altamente
optimizada y deben ser tan rpidas como sea posible. Normalmente no hay
reserva de memoria tras toda la inicializacin para consultas.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Interioridades y portabilidad
El cdigo MySQL se prueba con Purify (un detector de memoria perdida
comercial) as como con Valgrind, una herramienta GPL
(http://developer.kde.org/~sewardj/).
El servidor est disponible como un programa separado para usar en un entorno
de red cliente/servidor. Tambin est disponible como biblioteca y puede ser
incrustado (enlazado) en aplicaciones autnomas. Dichas aplicaciones pueden
usarse por s mismas o en entornos donde no hay red disponible.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Tipos de columnas
Diversos tipos de columnas: enteros con/sin signo de 1, 2, 3, 4, y 8 bytes de
longitud, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME,
TIMESTAMP, YEAR, SET, ENUM, y tipos espaciales OpenGIS.
Registros de longitud fija y longitud variable.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Sentencias y funciones
Soporte completo para operadores y funciones en las clusulas de consultas
SELECT y WHERE.
Soporte completo para las clusulas SQL GROUP BY y ORDER BY. Soporte de
funciones de agrupacin (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(),
MAX(), MIN(), y GROUP_CONCAT()).
Soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo estndares de
sintaxis SQL y ODBC.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Sentencias y funciones
Soporte para alias en tablas y columnas como lo requiere el estndar SQL.
DELETE, INSERT, REPLACE, y UPDATE devuelven el nmero de filas que han
cambiado (han sido afectadas). Es posible devolver el nmero de filas que
seran afectadas usando un flag al conectar con el servidor.
El comando especfico de MySQL SHOW puede usarse para obtener informacin
acerca de la base de datos, el motor de base de datos, tablas e ndices. El
comando EXPLAIN puede usarse para determinar cmo el optimizador resuelve
una consulta.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Sentencias y funciones
Los nombres de funciones no colisionan con los nombres de tabla o columna. Por
ejemplo, ABS es un nombre vlido de columna. La nica restriccin es que para
una llamada a una funcin, no se permiten espacios entre el nombre de funcin
y el parntesis '(' a continuacin.
Puede mezclar tablas de distintas bases de datos en la misma consulta.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Seguridad
Un sistema de privilegios y contraseas que es muy flexible y seguro, y que
permite verificacin basada en el host. Las contraseas son seguras porque todo
el trfico de contraseas est cifrado cuando se conecta con un servidor.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Escalabilidad y lmites
Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que
contienen 50 millones de registros. Tambin conocemos a usuarios que usan
MySQL Server con 60.000 tablas y cerca de 5.000.000.000.000 de registros.
Se permiten hasta 64 ndices por tabla (32 antes de MySQL 4.1.2). Cada ndice
puede consistir desde 1 hasta 16 columnas o partes de columnas. El mximo
ancho de lmite son 1000 bytes (500 antes de MySQL 4.1.2).Un ndice puede usar
prefijos de una columna para los tipos de columna CHAR, VARCHAR, BLOB, o
TEXT.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Conectividad
Los clientes pueden conectarse con el servidor MySQL usando sockets TCP/IP en
cualquier plataforma. En sistemas Windows de la familia NT (NT,2000,XP, o
2003), los clientes pueden usar named pipes para la conexin. En sistemas Unix,
los clientes pueden conectarse usando ficheros socket Unix.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Localizacin
El servidor puede proporcionar mensajes de error a los clientes en muchos
idiomas
Soporte completo para distintos conjuntos de caracteres, incluyendo latin1
(ISO-8859-1), german, big5, ujis, y ms. Por ejemplo, los caracteres
escandinavos '', '' y '' estn permitidos en nombres de tablas y columnas. El
soporte para Unicode est disponible

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Localizacin
Todos los datos se guardan en el conjunto de caracteres elegido. Todas las
comparaciones para columnas normales de cadenas de caracteres son caseinsensitive.
La ordenacin se realiza acorde al conjunto de caracteres elegido. Es posible
cambiarla cuando arranca el servidor MySQL.
MySQL Server soporta diferentes conjuntos de caracteres que deben ser
especificados en tiempo de compilacin y de ejecucin.

Principales caractersticas de MySQL


La siguiente lista describe algunas de las caractersticas ms
importantes del software de base de datos MySQL.
Clientes y herramientas
MySQL server tiene soporte para comandos SQL para chequear, optimizar, y
reparar tablas. Estos comandos estn disponibles a travs de la lnea de
comandos y el cliente mysqlcheck. MySQL tambin incluye myisamchk, una
utilidad de lnea de comandos muy rpida para efectuar estas operaciones en
tablas MyISAM.
Todos los programas MySQL pueden invocarse con las opciones --help o -? para
obtener asistencia en lnea.

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

Bsquedas Full-text (Estable)


Bsquedas Full-text es mpliamente usada.

MyODBC 3.51 (Estable)


MyODBC 3.51 usa ODBC SDK 3.51 y es usado en sistemas de produccin ampliamente.
Algunas cuestiones surgidas parecen ser cuestin de las aplicaciones que lo usan e
independientes del controlador ODBC o la base de datos subyacente.

BDB tablas (Estable)


El cdigo Berkeley DB es muy estable, pero todava lo estn mejorando con la
interfaz del motor de almacenamiento transaccional BDB en MySQL Server.

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

Entrada de comandos MySQL


MySQL utiliza el lenguaje SQL de bases de datos para trabajar. Esas
sern las sentencias que normalmente se utilizan en el terminal.
Sobre los comandos hay que tener en cuenta que:
Da lo mismo escribir en maysculas o en minsculas
Todos los comandos terminan con el smbolo ;
El comando termina su ejecucin si en la lnea de comandos observamos el
texto
mysql>
Se pueden realizar operaciones aritmticas (3*6)

Entrada de comandos MySQL


Sobre los comandos hay que tener en cuenta que:
En la misma lnea se pueden colocar dos comandos (por ejemplo: SELECT
3*6; SELECT SIN(PI());) siempre y cuando los puntos y comas se coloquen de
forma adecuada
Una instruccin puede abarcar ms de 1 lnea (para informar que no ha
terminado la instruccin, el terminal coloca el smbolo ->, en lugar del
normal mysql>).
Una instruccin se puede anular antes del punto y coma, colocando el texto
\c.
Las cadenas de texto literal puede ir entre smbolos de comilla simple o
smbolos de comilla doble. Si se pulsa Enter antes de cerrar la cadena, el
terminal lo ndica mostrando > o > en lugar del habitual --> o mysql>.

Bases de Datos en MySQL

MySQL almacena las bases de datos en la carpeta data que est en


la carpeta raz de la instalacin del programa. Cada base de datos
crea una carpeta en la que aparecen los archivos necesarios para
el correcto funcionamiento de la aplicacin.

Bases de Datos en MySQL

Comando SHOW DATABASES


El comando show databases permite visualizar las bases de datos
actualmente activas.
Aplicar el comando en terminal
mysql> show databases;

Bases de Datos en MySQL

Comando USE NOMBRE_DATABASE


El comando use nos permite utilizar una base de datos. Es
(junto a quit) el nico comando que no requiere punto y coma.

Bases de Datos en MySQL

Comando CREATE DATABASE NOMBRE_DATABASE


Este comando permitir crear una nueva base de datos con nombre
NOMBRE_DATABASE
Aplicar el comando en terminal
mysql> create database test;
La base de datos recin creada estar representada por una carpeta dentro de la
carpeta data de mysql.
Aunque la base est creada, habr que utilizar el comando use para trabajar con
ella.

Bases de Datos en MySQL

Comando DROP DATABASE NOMBRE_DATABASE


El comando drop database nos permite eliminar una base de
datos que tenga el nombre NOMBRE_DATABASE, en este caso elimina
la BD y todas las tablas que contenga

Tablas en Bases de Datos MySQL

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.

Tablas en Bases de Datos MySQL

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

mysql> create table personas (nombre varchar(30),


->apellido1 varchar(30), apellido2 varchar(30),
->telefono varchar(9));

Tablas en Bases de Datos MySQL

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.

mysql> create table personas (nombre varchar(30) not null,


->apellido1 varchar(30), apellido2 varchar(30),
->telefono varchar(9) unique);

Tablas en Bases de Datos MySQL

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.

mysql> create table pieza (codigo1 varchar(5),


->codigo2 int(2), peso int,
->descripcion text,
->primary key (codigo1, codigo2);

Tablas en Bases de Datos MySQL

Estructura de las tablas


El comando describe seguido del nombre de una tabla, nos permite ver la
estructura completa de una tabla.
mysql> describe test;
Mostrar por pantalla el detalle de la estructura de la tabla test

Tablas en Bases de Datos MySQL


Tipos de datos numricos
Tipo

Espacio

Rango

Rango sin signo

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

Varan segn parmetros

DOUBLE(M,D)

8 bytes

Varan segn parmetros

DECIMAL(M,D)

M+2 bytes

Varan segn parmetros

Tablas en Bases de Datos MySQL


Tipos de datos
Modificadores numricos
Los nmeros enteros se pueden colocar sin signo adelantando la palabra
UNSIGNED.
Los decimales permiten indicar el nmero de la mantisa (M) y el nmero de
decimales (D).
A los nmeros enteros se les puede asignar el modificador AUTO_INCREMENT
para que el campo marcado almacene ms rpido los valores.
Se puede declarar una anchura de columna de esta forma: INT(8). Si adems se
define la columna con ZEROFILL, entonces se colocan ceros a la izquierda hasta
llegar a esa anchura.

Tablas en Bases de Datos MySQL


Tipos de datos texto
Tipo

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

Tablas en Bases de Datos MySQL


Tipos de datos texto
Tipo

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

Tablas en Bases de Datos MySQL


Tipos de datos texto
Los que ms se usan son CHAR y VARCHAR. Ambos almacenan textos pero
CHAR los almacena de tamao fijo y VARCHAR optimiza tamao variable.
Dicho de otra forma: si definimos un CHAR de tamao 8, cualquier registro
ocupa 8 bytes. Con VARCHAR si algn registro ocupa 4 caracteres, en disco
ocupar 5 bytes independientemente del tamao indicado inicialmente.
TEXT y BLOB se usan para grandes cantidades de texto variable. La
diferencia es que los tipos BLOB distinguen entre maysculas y minsculas.

Tablas en Bases de Datos MySQL


Tipos de datos lgicos
Son los tipos BIT o BOOL que admiten los valores 0 o 1.
Ocupan un byte siempre;

Tipos de datos enumerado


Permite declarar campos cuyo contenido puede ser una de entre varias
opciones.
Ejemplo CREATE TABLE personas (Sexo ENUM(M, H),...

Tablas en Bases de Datos MySQL


Tipos de datos fecha
Tipo
DATE
DATETIME

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

De las 0 horas del 1/1/1970


a las 0 horas del 31/12/2037

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)

Tablas en Bases de Datos MySQL


Tipos de datos fecha
Tipo

Rango

TIME

Una hora en formato


HH:MM:SS

YEAR

Ao desde 1901 a 2037

Formato

Tablas en Bases de Datos MySQL


Modificadores
Modificador

Se aplica a

Uso

AUTO_INCREMENT

Enteros

BINARY

CHAR y VARCHAR

El valor se va incrementando automticamente en cada


registro
Convierte las cadenas a forma binaria en la que se
distingue entre maysculas y minsculas

DEFAULT

Todos menos TEXT y BLOB

Coloca un valor por defecto

NOT NULL

Todos

Impide que un campo sea nulo

PRIMARY KEY

Todos

Hace que el campo se considere clave primaria

UNIQUE

Todos

Evita la repeticin de valores

UNSIGNED

Enteros

Slo valen los valores positivos

ZEROFILL

Enteros

Rellena con ceros a la izquierda hasta llegar al ajuste

Operaciones con Tablas


Modificar tablas
Es el comando alter table el encargado de realizar los cambios dependiendo
del orden especificado en la sentencia
mysql>alter table personas change nombre nombre varchar(20);

En el ejemplo el nombre pasa a tener tamao 20.

Operaciones con Tablas


Modificar tablas
mysql>alter table personas change nombre identif
-->varchar(20);
El campo nombre pasa a llamarse identif

Operaciones con Tablas


Modificar tablas

mysql>alter table personas change identif nombre


-->varchar(25) not null default "pepe";
Cambia el campo identif para que ahora sea pepe, tenga 25
caracteres de anchura, no admita nulos y establezca como valor
por defecto, la cadena "pepe".

Operaciones con Tablas


Modificar tablas
Cambio de nombre de la tabla:

mysql>alter table personas rename clientes;

Operaciones con Tablas


Borrar tablas
Se usa la sintaxis: drop table seguida del nombre de la tabla.

Borrar columnas
La sintaxis es:

alter table tabla drop columnaABorrar;

Operaciones con Tablas


Aadir columnas
Se usa:

alter table tabla add nuevaColumna Tipo...;

Operaciones con Tablas


Varias operaciones a la vez
Se pueden realizar varias operaciones a la vez mediante la instruccin alter
table si se separan con comas:

alter table ejemplo drop campo1, add campo2, change


campo3 campo4 int(8);
De este modo, alter table se convierte en una instruccin muy
verstil para modificar la estructura de las bases de datos.

Operaciones con Tablas


Tablas innoDB
MySQL proporciona un motor de gestin de base de datos llamado innoDB
que permite una mayor potencia sobre el control y gestin de tablas. Las
tablas normales, son creadas con el motor myISAM, para hacer que sean
innoDB, basta con colocar el texto type=innoDB tras la lista de campos de la
tabla en la creacin.
Tambin se puede convertir una tabla al tipo innoDB si se ejecuta la orden:

alter table tabla type=innoDB;

Operaciones con Tablas


Tablas innoDB
Las tablas innoDB permiten transacciones, operaciones concurrentes y
control estricto de referencias (lo que se conoce como integridad
referencial) entre otros detalles. Pero requieren ms potencia por parte del
sistema en el que se ejecuta MySQL.

Operaciones con Tablas


Introducir datos a una tabla
Hay dos mtodos:
El comando Insert permite aadir datos manualmente a una tabla.
Ejemplo:

mysql> insert into personas values('Pedro',


->'Hernndez','Crespo','979898989');
El orden debe coincidir con la estructura de la tabla donde se esta insertando

Operaciones con Tablas


Introducir datos a una tabla
Hay dos mtodos:
El comando Insert permite aadir datos manualmente a una tabla.

mysql> insert into personas(nombre,apellido1,apellido2)


-> values ('Pedro','Hernndez',"crespo");
En ese caso la columna del telfono tomara el valor null indicando que est
vaco.

Operaciones con Tablas


Introducir datos a una tabla
Hay dos mtodos:
Insertar datos desde un archivo externo
Otra manera ms poderosa es utilizar un archivo externo en el que se colocan los
datos de la tabla. En ese archivo, cada registro se separa con un carcter concreto
(que suelen ser los caracteres \r \n, resultado de la tecla intro) A su vez en el mismo
registro, cada campo se separa con otro carcter (coma por ejemplo) y los valores
de los campos podran ir delimitados con otros caracteres (como las comillas).
Para conseguir los datos en este formato, se pueden colocar a mano, o bien se
pueden crear a travs de software especial que consiga colocar registros en este
formato (programas como Calc, Editores de texto u otros muchos poseen
herramientas para realizar estas operaciones).

load data local infile "ruta" into table tabla;

Operaciones con Tablas


Introducir datos a una tabla
Hay dos mtodos:

load data local infile "ruta" into table tabla;


La ruta es la ruta completa al archivo de texto que posee los datos. La tabla
es la tabla a la cual se desean aadir dichos datos. Para que esta instruccin
funcione correctamente, el orden de los campos en la tabla debe ser el
mismo que en el archivo. Salvo que se indique una lista con el orden de los
campos segn aparecen en el archivo externo. Esta lista se coloca entre
parntesis, al final de la instruccin load data.

Operaciones con Tablas


Introducir datos a una tabla
Hay dos mtodos:

mysql>load data infile


->/home/Escritorio/datos.txt
->into table personas
->(nombre, cedula, apellido1, apellido2);

Creacin de ndices
Para crear ndices, se utiliza:
create index nombrendice ON tabla (lista_campos);

lista_campos es una lista (separada por comas de los campos que


forman la clave). Se puede indicar tras el nombre del ndice, la
palabra UNIQUE que indicara que no se admiten valores
duplicados en el ndice (por lo que los campos que forman parte
del ndice no podrn repetir valores).

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

La instruccin anterior crea un ndice sobre la lista de campos


apellidos y nombre. Se le puede poner nombre al ndice colocando
el nombre antes del parntesis de los campos.

Creacin de ndices
Ejemplo:
alter table clientes add index nombreCompleto(apellidos,nombre);

En la lista de campos, tras cada campo se puede colocar la


palabra ASC (orden ascendente, se toma por defecto) o DESC
(orden descendente).
Se pueden crear ndices nicos si coloca la palabra unique antes
de la palabra index. Los ndices nicos prohben la repeticin de
valores en los campos que forman el ndice:
alter table clientes add unique index nombreCompleto(apellidos, nombre);

Creacin de claves principales


Si se pone como nombre del ndice la palabra primary key,
entonces el ndice crea la clave principal de la tabla:
alter table clientes add primary key (campos);

Si se desea eliminar el ndice:


drop index (ndice) ON tabla;

Tambin (recomendada desde la versin 3.23):


alter table tabla drop index (ndice);
alter table tabla drop primary key;

Creacin de claves principales


En la creacin de una tabla se pueden crear tambin los ndices.
Ejemplo:
create table personas ( cedula char(10), nombre varchar(25) not null,
apellidos varchar(50) not null, direccin varchar(50), primary key (cedula),
key datosCompletos (apellidos,nombre));

En el ejemplo, datosCompletos es el nombre del ndice basado en


los campos apellidos y nombre.

Creacin de claves externas


Slo funcionan correctamente si las tablas son innoDB. Tambin se
pueden crear claves secundarias. Las claves secundarias se crean
para campos de una tabla relacionados con campos que forman
ndices en otras tablas (normalmente forman claves principales, es
decir son los campos que permiten relacionar tablas). La creacin
de estas claves se puede hacer desde create table.
Sintaxis:
create table tabla ( lista y propiedades de campo e ndices, constraint
nombreDeClave foreign key (camposQueFormaClave) references tabla
(camposClaveDeLatabla));

Creacin de claves externas


La palabra constraint es opcional y permite indicar un nombre
para la clave externa.
foreign key indica los campos de esta tabla relacionados con
campos de otra.
references indica el nombre de la tabla relacionada y el nombre
de los campos relacionados.

Creacin de claves externas


Se pueden indicar al final las palabras:
on delete cascade. Que hace que al borrar registros en la tabla principal, se
borren registros en la relacionada.
on update cascade. Que permite que al cambiar los datos de los campos en
la tabla principal, se actualicen en la relacionada.
on delete set null. Hace que si se borra un registro de la tabla principal, los
valores de los campos relacionados se coloque a null

Creacin de claves externas


on update set null. Al cambiar valores principales se dejan a null los
relacionados.
on update restrict. No permite modificar valores en la tabla principal si hay
registros relacionados en otra tabla.

on delete restrict. No permite eliminar valores en la tabla principal si hay


registros relacionados en otra tabla.
on update no action
on delete no action

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:

select ListaDecampos from tablas where condicin;

Consultas

Seleccionar todos los datos


El campo especial * sirve para representar todos los campos de una tabla.
As la instruccin:

select * from personas;


Muestra todos los campos de la tabla personas.

Consultas

Seleccionar campos concretos


Se puede indicar la lista exacta de campos que queremos que aparezcan en
la consulta.
Por ejemplo:

select nombre, apellido1, apellido2 from personas;

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:

select nombre, apellido1, apellido2 from personas where edad=25;


select nombre, apellido1, apellido2 from personas where edad>25;

Consultas

Condiciones
Tambin se puede realizar consultas con el operador OR o AND:
Ejemplos:

select nombre, apellido1, apellido2 from personas where (edad>25


AND edad<50);
select nombre, apellido1, apellido2 from personas where
(nombre=Luis OR nombre=Pedro);

Consultas

Condiciones
Tambin se pueden usar patrones mediante la clusula like.
Ejemplo:

select * from personas where apellido1 like g%;


Sacara las personas cuyo primer apellido empiece por g. Es decir el
smbolo % hace de comodn.

Consultas

Condiciones
Tambin se pueden usar patrones mediante la clusula like.
Ejemplo:

select * from personas where apellido1 like g%;


Sacara las personas cuyo primer apellido empiece por g. Es decir el
smbolo % hace de comodn.

Consultas

Comodn
Comodn

Significado

g%

Que empiece por g

%g

Que termine por g

%g%

Que tenga una g

_____

Que tenga cinco caracteres

Consultas
Ordenar
La clusula order by sirve para ordenar en base a una o ms columnas.
Ejemplo:

select * from personas order by apellido1, apellido2, nombre;


Normalmente la ordenacin se realiza en ascendente (de la A a la
Z o de menor a mayor en el caso de los nmeros), pero se puede
colocar la palabra clave desc tras el nombre del campo por el que
se ordena, para indicar que ese campo ir en descendente:
select * from personas order by edad desc;

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:

select precio, precio * 0.16 from articulos;

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

También podría gustarte