Curso de Mysql
Curso de Mysql
Curso de Mysql
Tablas
Vistas
Funciones
Índices
Procesos almacenados
Triggers o disparadores
1
TABLAS
Las tablas son los principales objetos de una base de datos. Representan la
estructura física donde se almacenan los datos. Las tablas contienen registros y
cada registro contiene campos. Un registro es cada una de las filas de la tabla,
mientras que el campo es cada una de las columnas de la tabla.
VISTAS
Son tablas que se forman a partir de otras tablas como resultado de una consulta
SQL. Se pueden realizar sobre ellas las mismas operaciones que sobre las tablas,
pero es importante recordar que los cambios afectan a las tablas originales, pues
una vista es sólo eso, un modo de visualizar los datos de otras tablas.
FUNCIONES
Son operaciones que el sistema gestor de base de datos realiza sobre las mismas.
Estas operaciones son necesarias para poder interactuar con la base de datos.
Ejemplo: Operaciones para crear los objetos de la base de datos: tablas, vistas,
etc.
2
ÍNDICES
Los índices permiten acceder a los elementos con mayor rapidez a los registros de
una tabla de una base de datos. Normalmente se utilizan en aquellos campos que
son más frecuentes en las búsquedas.
Ejemplo: Utilizar el número de pasaporte para localizar a un ciudadano europeo en
una base de datos interestatal. De todos los datos de la tabla “ciudadano
europeo”, escogeríamos el pasaporte como índice.
PROCESOS ALMACENADOS
Se trata de un programa que se almacena en la base de datos y que se ejecuta
directamente en el sistema gestor de base de datos.
Ejemplo: buscar en la base de datos todos los usuarios cuya fecha de nacimiento
sea hoy y enviarles una felicitación de cumpleaños
TRIGGERS O DISPARADORES
Es un proceso que se ejecuta únicamente cuando se cumple una condición
preestablecida. Los triggers o disparadores pueden crear, editar o borrar tablas en
una base de datos.
Ejemplo: Envío de un correo electrónico de bienvenida a un usuario que se acaba de
registrar.
MODELO TABLA.
Se trata de una serie formada por una tabla bidimensional
compuesta por registros y por campos en la que se recogen los datos.
MODELO JERÁRQUICO.
Se basa en registros organizados en forma de árbol jerárquico inverso.
o Ventajas: Facilita las relaciones 1:N unidireccionales o padre-hijo, en el
que el padre es el elemento superior y el hijo el que queda justo debajo
(igual que sucede con CSS). 1:N significa que un padre puede tener
muchos hijos, pero un hijo sólo puede tener un padre.
o Inconvenientes: Es un modelo que implica la duplicidad de registros, lo
que dificulta mucho su gestión en casos de bases de datos grandes.
4
MODELO DE REDES.
Está basado en registros. Un registro puede tener otro registro, es una extensión
del modelo anterior, su diferencia fundamental es la modificación del concepto
de nodo: se permite que un mismo nodo tenga varios padres.
MODELO RELACIONAL.
Este es el modelo que se acabó imponiendo y el más popular actualmente. Está
basado en el modelo de tablas, pero permitiendo la relación entre las diferentes
5
tablas en base a unas reglas. MySQL se basa en este modelo, por lo que lo
vamos a ver con más detalle. Ahora simplemente especificar estos puntos:
Datos
Entidades
Claves primarias
6
Claves externas
Relaciones
Metadatos
A continuación veremos cada uno de ellos con detalle y ejemplos que sirvan para
entender los conceptos.
DATOS.
Tomando la definición de Ramez Elmasri, los datos son hechos conocidos que se
pueden registrar y que tienen un significado implícito.
Ejemplos: nombre, apellido, dirección, teléfono.
ENTIDADES.
Una entidad es todo aquello de lo que nos interesa tener unos datos guardados.
Ejemplos: Clientes, personas, productos, trabajadores.
En un modelo de entidad-relación, las relaciones las conforman los atributos y los
campos del tema que nos interesa guardar.
CLAVES PRIMARIAS
Cada entidad tiene que tener una clave primaria que identifique únicamente al
conjunto de datos. Siguiendo con el ejemplo, la entidad Clientes tendrá como
clave primaria el código cliente, la entidad facturas el número facturas y la entidad
7
producto el código producto. Es muy importante que la clave primaria sea única y
que jamás se pueda repetir. Así, no pueden haber dos facturas con un mismo
número.
CLAVES EXTERNAS
Las claves externas son las claves externas de otra entidad que forman parte de la
tabla de la entidad actual. Así, en nuestro ejemplo, en la entidad Factura, el código
cliente y el código producto son entidades externas.
RELACIONES
Las relaciones son lo que dice el término, como se relacionan las entidades entre
sí a través de sus campos y atributos. Así, en nuestro ejemplo, la entidad Facturas
se relaciona con las entidades Clientes y Productos a través del código cliente y el
código producto de cada uno de sus campos respectivamente.
METADATOS
Los metadatos son datos que informan sobre los datos presentes en una base de
datos.
Ejemplos: longitud de un campo (número de caracteres), tipo de campo (texto,
número..), información del campo, etc.
SQL Y MYSQL
QUÉ ES SQL
SQL (Structured Query Language) es un lenguaje declarativo estándar para la
gestión de bases de datos relacionales, que permite recuperar y modificar
fácilmente información de interés de las bases de datos mediante consultas.
Actualmente, la mayoría de sistemas gestores de contenidos utilizan SQL, por lo que si se
conoce SQL, se puede trabajar con diferentes DBMS como MySQL, Oracle, SQL Server,
PostgreSQL, etc.
Características de SQL:
9
INTRODUCCIÓN A MYSQL
QUÉ ES MYSQL
MySQL es un sistema de base de datos basado en el modelo relacional, multihilo
y multiusuario. Multihilosignifica que el sistema distribuye automáticamente las
tareas a realizar entre los procesadores disponibles, optimizando el rendimiento.
El nombre proviene de la unión de My con SQL. My era la hija del cofundador de
la empresa originaria de la idea.
Por qué utilizar MySQL:
Es código abierto, lo que significa que es gratis de utilizar y que se
puede modificar.
Su uso está muy extendido: desde sistemas gestores de contenidos
como WordPress y Drupal, a grupos de empresas como Prisa.
Es muy fácil de aprender y utilizar, al ser muy intuitivo.
Funciona muy bien junto con PHP, lo que permite crean páginas web
dinámicas con facilidad.
Eliminar tablas
Cargar datos
Eliminar registros
10
Hacer consultas conjuntas a varias tablas en modo vista
En esta primera entrega del Curso de MySQL hemos visto una introducción a las bases
de datos, los sistemas gestores de BD, el modelo relacional en que se basa SQL y una
breve introducción a MySQL.
11
Instalar el paquete LAMP, WAMP 0 MAMP, según nuestro sistema
operativo sea Linux, Windows o Mac respectivamente. Estos paquetes
incluyen todo lo necesario para instalar en tu ordenador el servidor
Apache, MySQL y PHP/Perl, de aquí el acrónimo de “AMP” (la L, W y
M son de Linux, Windows y Mac). Estos paquetes requieren muy poco
trabajo de configuración para que funcionen.
Instalar el paquete XAMPP. Personalmente, esta es mi opción
preferida por la facilidad de instalación. Lo único que tienes que hacer
es ir a la página oficial de Xampp y descargar el instalador. Funciona
tanto para Mac, como para Windows, Linux y Solaris. A continuación
veremos cómo instalar XAMPP.
INSTALACIÓN DE XAMPP
Ve a la página de XAMPP y haz clic en el enlace que se corresponda a tu
sistema operativo.
12
Selecciona las opciones de XAMPP que te interesen. Te recomendamos
todas las opciones, excepto FileZilla, nosotros al menos utilizamos
FileZilla a parte.
13
Una vez finalizada la instalación, hay que iniciar los servicios desde el
panel de control de XAMPP. Lo podemos hacer desde el icono que
hemos creado en el escritorio, como desde el archivoxampp-control que
encontraremos en la carpeta donde hayamos instalado XAMPP, en
Windows sería en C:\xampp. Para iniciar los servicios, hemos de pulsar
“Start” en Apache y en MySQL.
Hay varias maneras de poder ejecutar comandos de MySQL,mañana veremos como
hacerlo desde phpmyadmin. Pero antes de nada, es necesario que sepamos que es la
consola de MySQL, cómo la iniciamos y algunos de los comandos de MySQL.
Antes de nada, asegúrate que el servidor de MySQL está en marcha. Si utilizas XAMPP,
es tan fácil como pulsar Start y ver que está en funcionamiento. Cuando instalas el
servidor de MySQL, automáticamente se instala mysql, el monitor de MySQL. Éste es un
programa de comandos por línea.
Veamos pues como iniciar la consola de MySQL:
1. Ejecuta la ventana de terminal:
14
Windows 7. Haz clic en el botón inicio y en el campo de búsqueda
teclea cmd y pulsa enter. O ves a Todos los Programas > Accesorios >
Símbolo del Sistema.
Mac OS X. Abre una ventana de búsqueda y escoge Aplicaciones >
Utilidades > Terminal.
Ubuntu, Escoge Aplicaciones > Accesorios > Terminal, o pulsa el logo
de Ubuntu y tecleaterminal.
2. Ejecuta mysql en la ventana de terminal:
Windows 7. Ve a la carpeta donde tienes instalado MySQL. En el caso
que hayas instalado XAMPP, teclea cd c:\xampp\mysql\bin y
pulsa enter. Para iniciar mysql, teclea mysql -u root y pulsa enter.
Mac OS X y Ubuntu: Simplemente escribe mysql -u root y
pulsa enter.
Nota importante. En el caso de haber puesto una contraseña, el comando será mysql -
u root -p password en lugar de mysql -u root, donde has de sustituir password
por tu contraseña.
En el caso que todo haya ido como esperado, verás que en el terminal
aparece mysql>. En Windows verás lo siguiente:
15
1 show databases;
Ahora tenemos seleccionada la base de datos test y todo lo que hagamos será
sobre esta base de datos. Para seleccionar otra, usamos el mismo comando,
cambiando el nombre de la base de datos.
Crear una base de datos
1 create database biblioteca;
Si todo va como esperado, aparecerá una línea de código similar a ésta: Query
OK, 1 row affected (0.05 sec). Acabamos de crear una base de datos
llamada “biblioteca”. Para comprobarlo, es tan fácil como utilizar el comando que
justo acabamos de aprender, show databases; Veremos que ahora en el listado
aparece biblioteca.
Cerrar la consola
view source
print?
1 exit;
16
Partimos de la base de datos que acabamos de crear llamada “biblioteca”. En ella
queremos crear una tabla llamada “libros” que recoja el fondo bibliográfico. Tal y
como explicábamos ayer en el artículo de introducción a las bases de datos
relacionales, una tabla está formada por campos (columnas) y registros (filas)
donde podemos almacenar la información deseada. En nuestra tabla de ejemplo
crearemos los campos “titulo”, “autor”, “fecha_publicacion” y “cantidad”: No
ponemos el campo “editorial” porque, como mañana veremos, es mejor separar
algunos datos en diferentes tablas y luego utilizar un comando para enlazarlas.
view source
print?
1 create table libros(
2 libro_id int unsigned auto_increment,
3 titulo varchar(50) not null,
4 autor varchar(30) not null default 'Desconocido',
5 cantidad smallint unsigned default 0,
6 primary key (libro_id)
7 );
Lo que habría pasado, es que habríamos creado una tabla vacía, esto es, sin
ningún campo. Como hemos dicho, una tabla está compuesta por campos y
por registros. Para poder introducir un registro en la misma, primero es necesario
crear los campos, que es lo que hemos hecho. Así en nuestro ejemplo hemos
creado cuatro campos:libro_id, titulo, autor y cantidad. ¿por qué crear un libro_id?
Porque, como explicábamos en laprimera parte de este curso de MySQL para
17
principiantes toda tabla tiene que tener definida una clave primaria que tiene que
ser única para cada registro.
Veamos ahora uno por uno cada uno de los campos creados:
1 libro_id int unsigned auto_increment,
smallint es un tipo de número entero que no admite valores grandes, esto nos
sirve para evitar errores de tecleado. Aquí hemos creado un campo llamado
cantidad que es un número entero pequeño positivo y que en caso de dejarlo en
blanco el sistema pondrá que no hay ninguno. El motivo por el que el default es 0
y no 1, es porque un libro se puede haber extraviado.
1 primary key (libro_id)
Aquí definimos que la clave primaria de esta tabla sera el id del libro.
18
Imaginemos ahora que ya existía una tabla llamada libros que no nos interesa.
Entonces, habríamos escrito este comando:
1 drop table if exists libros;
2 create table libros(
3 libro_id int unsigned auto_increment,
4 titulo varchar(50) not null,
5 autor varchar(30) not null default 'Desconocido',
6 cantidad smallint unsigned default 0,
7 primary key (libro_id)
8 );
Lo que hace drop table if exists libros; es mirar si existe alguna tabla
llamada "libros" dentro de la base de datos "biblioteca" y si así es, eliminarla.
Mostrar las tablas de una base de datos
Para ver la tabla que acabamos de crear, utilizamos este comando:
1 show tables;
Ya hemos creado nuestra tabla libros con cuatro campos. Ahora vamos a proceder
a incluir registros en la tabla.
Insertar registros en la tabla
1 insert into libros (titulo, autor, cantidad)
19
2 values ('Un mundo cualquiera', 'Pepito Frito', 2);
Con esta simple sentencia hemos creado nuestro primer registro en MySQL. Lo
que le decimos es que inserte dentro de libros "Un mundo cualquiera" en el campo
título, "Pepito Frito" en el campo autor y 2 en el campo cantidad. Imaginemos
ahora que hemos comprado un libro más y que queremos actualizar la cantidad a
3, veamos ahora como lo podemos modificar.
Modificar el nombre de una tabla
Si quisiéramos cambiar el nombre de la tabla libros al de fondo_bibliotecario,
haríamos lo siguiente:
1 rename table libros to fondo_bibliotecario;
Aquí hemos hecho servir una cláusula AND, en la que indicamos que se han de
cumplir las dos condiciones. El motivo del paréntesis es que si no lo ponemos no
tendrá en cuenta la segunda condición.
EL COMANDO SELECT
Hay muchas más cosas que decir sobre select, pero este es un tutorial básico,
por lo que no nos podemos extender. Si quieres saber más, te recomendamos leer
la documentación oficial sobre la sintaxis de SELECT.
Para poder ver el potencial de select, necesitamos crear más registros:
1 insert into libros (titulo, autor, cantidad) values ('Logra un vientre
plano', 'Dolores Barriga', 1);
20
2 insert into libros (titulo, autor, cantidad) values ('Aprende a
bailar','Manolo Descalzo', 1);
Ahora vamos a ver una tabla de los libros en que sólo se muestra el título y el
autor. Veamos ahora como hacemos que sólo muestre los libros de los que sólo
tenemos 1:
1 select titulo, autor from libros where cantidad=1;
El signo % actúa como comodín y significa que da igual lo que venga después de
la D. También podemos ponerlo antes. Pongamos que queremos escoger todos
los autores cuyo primer apellido sea Descalzo. Haremos esto:
1 select * from libros where autor like "%Descalzo% ;
21
1 select * from libros limit 3;
Nos devuelve los tres primeros resultados. Imaginemos que queremos que sólo
nos devuelva 3 resultados a partir del registro 5, haríamos lo siguiente:
view source
print?
1 select * from libros limit 5,3;
En este caso nos mostrará todos los libros que tienen como autor a los que se
apellidan Descalzo y los libros de Dolores Barriga.
El operador AND
Lo utilizamos para indicar que valide que se cumplen todos los criterios dados.
1 select * from libros where (autor like "%Descalzo%) and (autor like&q
uot;Dolores Barriga" );
En este caso no nos devolverá ningún resultado, ya que no hay ningún libro que
cumpla ambas condiciones.
El operador > y el operador <
Lo utilizamos para seleccionar los registros que sean mayores o menores que la
condición dada.
1 select * from libros where (cantidad > 1 );
Nos muestra todos los libros de los que hay 2 o más en stock.
1 select * from libros where (cantidad < 3 );
Nos muestra todos los libros de los que hay 3 o menos en stock.
22
1 delete from libros where libro_id=2;
Aquí vemos que en lugar de like hemos utilizado el signo igual. La diferencia es
que el signo igual es mucho más restrictivo.
Borrar todos los registros de una tabla
En el caso de querer borrar todos los registros de una tabla, no utilizaremos el
condicional where:
1 delete from libros;
EJERCICIO
Este ejercicio ha sido propuesto por Francesc Estanyol en un curso de MySQL
para principiantes impartido en el Cibernàrium de Barcelona. Lo he escogido por
estar muy bien planteado para poner en práctica todos los conceptos hasta aquí
impartidos.
Un videoclub que alquila películas de vídeo guarda información sobre sus
películas de alquiler, sus socios y los alquileres.
Crea una tabla para guardar las películas con los siguientes campos:
23
o Pulp Fiction, John Travolta, 90
Muestra todos los registros donde los actores se llamen Tom o Daniel.
Muestra las películas que tengan una duración entre 115 y 145 minutos.
CONCLUSIÓN
En esta segunda entrega hemos visto como instalar MySQL, como ejecutar la
consola y los conceptos básicos de MySQL.
24
CURSO DE MYSQL(3): COMANDOS Y
FUNCIONES DE MYSQL. PHPMYADMIN.
Hoy vamos a ver cómo enlazar tablas, cómo crear usuarios, las funciones básicas de
MySQL y una introducción a phpMyAdmin.
ENLAZAR TABLAS
Vamos a seguir con el ejemplo de ayer para ver como podemos enlazar tablas
usando el comando joins deselect.
Teníamos la base de datos biblioteca. Para los que justo os incorporáis al curso, la
podéis crear y seleccionar con:
1 create database biblioteca;
2 use biblioteca;
Volvemos a crear la tabla libros, pero esta vez incluimos el campo editorial:
1 create table libros(
2 libro_id int unsigned auto_increment,
3 titulo varchar(50) not null,
4 autor varchar(30) not null default 'Desconocido',
5 codigo_editorial int unsigned not null,
6 cantidad smallint unsigned default 0,
7 primary key (libro_id)
8 );
Ahora necesitamos crear una serie de registros para ambas tablas para ver el
funcionamiento en la práctica:
1 insert into libros (titulo, autor, codigo_editorial, cantidad)
25
3 insert into libros (titulo, autor, codigo_editorial, cantidad)
4 values ("Diseño Web con CSS", "Ralph G. Schulz ", 2, 1);
5 insert into libros (titulo, autor, codigo_editorial, cantidad)
Veremos que efectivamente sólo se muestran los libros de la editorial Anaya, pero
en el campo editorial aparece el número 1. Lo que nosotros queremos es que en
este campo aparezca el nombre de la editorial y no su código. Aquí entra el
comando left join para vincular tablas.
LEFT JOIN
1 select * from libros join editoriales
2 on editoriales.editorial_id = libros.codigo_editorial;
En este caso, vemos los libros de todas las editoriales, pero también aparece los
campos codigo_editorial yeditorial_id que no queremos visualizar en los
resultados:
Para evitarlo, cambiamos el comodín asterisco por los campos que queremos
visualizar:
1 select libros.titulo, libros.autor,libros.cantidad,
editoriales.nombre_editorial
El resultado es:
26
Si solo queremos visualizar los libros de la editorial Anaya, entonces hemos de
modificar el código:
1 select libros.titulo, libros.autor,libros.cantidad,
editoriales.nombre_editorial
Hay otros tipos de comandos join, para más información te invitamos a ver
la documentación oficial de MySQL.
UNIÓN DE TABLAS
Con MySQL también podemos unir las consultas a varias tablas en un único
conjunto de resultados. Para ello utilizamos el comando union. Es importante
tener en cuenta que ambas tablas han de tener el mismo número de campos o
nos dará error. Un ejemplo será:
select libros.titulo from libros union select editoriales.nombre_editorial
1
from editoriales;
27
1 grant all privileges on biblioteca.* to 'administrador'@'localhost'
2 identified by '123abc' with grant option;
3 flush privileges;
Nos devuelve el título en mínusculas de todos los libros incluidos en la tabla libros.
Concatenar cadenas
Para ilustrarlo, vamos a crear una tabla usuarios dentro de biblioteca
1 use biblioteca;
2 create table usuarios (
3 usuario_id int unsigned auto_increment,
4 nombre varchar(30) not null,
5 primer_apellido varchar(30) not null,
6 primary key (usuario_id)
7 );
28
insert into usuarios (nombre,
2
primer_apellido) values ("Pablo", "Morales");
FUNCIONES NUMÉRICAS
Primero de todo, veamos los operadores numéricos:
Suma
1 select 3+5;
Muestra en pantalla 8.
Resta
1 select 3-5;
29
Muestra en pantalla -2.
Multiplicación
1 select 3*5;
Muestra en pantalla 1.
Entre las funciones numéricas destacamos:
Raíz cuadrada
1 select sqrt(4);
Devuelve 2.
Redondeo
El primer valor de la funcion round(n1, n2) es el número decimal que queremos
redondear y el segundo valor es el número de decimales que se han de conservar.
1 select round(56.443, 2);
Devuelve 56.44.
Rand
Muestra un número aleatorio entre 0 y 1
1 select rand();
30
Aquí sólo veremos una selección de las mismas, puede consultar la página de
desarrollo de MySQL para ver todas las funciones que tienes disponibles.
Mostrar la fecha actual
1 select curdate();
Muestra 2012-03-01.
Mostrar la hora actual
1 select curtime();
Muestra 18:15:32.
Mostrar la fecha y hora actual
1 select now();
INTRODUCCIÓN A PHPMYADMIN
Recomiendo el uso de phpMyAdmin a todos los que aprendéis MySQL con el
objetivo de combinarlo en la creación de páginas web dinámicas. En sí, todos los
gestores de contenidos basados en PHP y MySQL lo traen integrado, como es el
caso de WordPress, Joomla y Drupal. phpMyAdmin es una herramienta de
software gratuita pensada para la fácil administración de MySQL en Internet.
Las operaciones más usadas, como crear, modificar y borrar bases de datos,
tablas o registros se pueden realizar a través de su interfaz sin necesidad de saber
MySQL, lo que lo convierte en una estupenda herramienta para las personas que
no conocen el lenguaje. También es útil cuando, aún conociéndolo, se trata de ir
rápido, pues no has de prestar atención en la sintaxis de cada una de las
sentencias. Uno de los puntos fuertes es que cada vez que haces algo con la
interfaz, no sólo da el resultado, sino que te muestra en pantalla la sintaxis que ha
31
utilizado para llevarlo a cabo, lo que también es una herramienta excelente de
aprendizaje.
Veamos un ejemplo. Tenemos ya creadas la base de datos biblioteca junto con las
tablas libros, usuarios y editoriales. Ahora queremos insertar un nuevo libro en la
tabla libros. Veremos esta pantalla:
Como vemos, nos permite introducir dos registros, para ello, deberíamos quitar la
marca de “Ignorar”. Podéis ver en la imagen que he creado un libro titulado “Me lo
invento” de autor “Desconocido” de la editorial 1 y del que tenemos 2 en total.
Cuando pulsamos en “Continuar”, vemos esta pantalla:
32
Como vemos, no sólo nos confirma que se ha creado una nueva fila en la tabla
libros, sino que además nos muestra el código generado. Es una excelente
interfaz gráfica para el desarrollo web.
Entre otras funciones, phpMyAdmin puede crear y eliminar bases de datos, crear,
modificar y eliminar alterar tablas, añadir, editar y borrar campos, ejecutar
cualquier sentencia de MySQL, crear, editar y borrar usuarios, administrar
privilegios, así como importar y exportar datos en varios formatos. Estas funciones
de importar y exportar también son muy útiles cuando queremos trasladar nuestro
blog a otro sistema, por ejemplo, de Drupal a WordPress.
33
ORRAR UNA BASE DE DATOS CON PHPMYADMIN
En la misma pestaña que antes, seleccionamos la base de datos que queremos
borrar y pulsamos “Eliminar”:
35
Para modificar o borrar una tabla, haremos lo mismo que hicimos con las bases de
datos: la seleccionamos y le damos a “Eliminar”. Para insertar un registro, en la
pantalla donde aparece la tabla, pulsamos “Insertar” y en la siguiente pantalla
rellenamos los diferentes campos:
CONCLUSIÓN
Esta ha sido la tercera y última parte de un curso de MySQL para principiantes.
Hemos visto como vincular tablas con joint left y union, como crear usuarios,
las funciones básicas de MySQL y una introducción a phpMyAdmin. Si te ha
interesado el tema y quieres seguir aprendiendo, te recomendamos la web de
desarrollo de MySQL en castellano.
36