Tutorial de MySQL

————————
TUTORIAL MYSQL:
————————
I. Instalación y arranque, creación de BDs y tablas, introducción y visualización de datos
II. Actualización de datos, eliminación y alteración de las BDs y las tablas
III. Consultas a MySQL desde un programa Java, Primera parte
IV. Consultas a MySQL desde un programa Java, Segunda parte
————————

Hacía tiempo que no escribía una entrada técnica en condiciones y aprovechando que he estado investigando un poco el lenguaje SQL me he decidido a explicar aquí los primeros pasos y las operaciones más sencillas para poder trabajar con este lenguaje de administración de bases de datos. Como quiero cubrir la instalación, la creación de una BD y una tabla, la introducción de datos y algunos aspectos de su visualización (ejemplos incluidos), dividiré todo esto en varios post.

La instalación del gestor MySQL bajo Ubuntu se hace de la forma habitual:
$ sudo apt-get install mysql-server mysql-client
Durante la instalación del servidor se nos preguntará varias veces la contraseña del superusuario de la BD (root). Podemos dejarla vacía si, como en mi caso, solo vamos a hacer pruebas.
El servidor se encargará de almacenar las BDs y procesar las consultas. El cliente es un programa ligero que se conectará al servidor; así que podemos desplegarlos en máquinas diferentes si queremos trabajar en una arquitectura de producción más elaborada.

Una vez instalados, comenzamos a trabajar conectándonos al servidor. Como en mi caso he instalado ambos paquetes en la misma máquina, mi servidor será localhost pero podría usar la IP de otra si trabajo en computadoras separadas.
$ mysql -h localhost -u root
El parametro -u define el usuario con el que nos conectamos. No confundir el usuario “root” de mysql con el usuario “root” del PC.
Esto nos lanzará el prompt del servidor, que queda identificado de la siguiente forma:
mysql>
A partir de aquí nos moveremos con las órdenes SQL, las cuales terminan siempre con el caracter “;” (punto y coma). Si queremos introducir una instrucción muy larga podemos pulsar enter para emplear varias líneas, ya que el intérprete no enviará la sentencia al servidor mientras no encuentre el “;”.
Las líneas adiccionales cuentan con este prompt:
->
Algo muy útil mientras estemos practicando, será activar que el intérprete nos muestre los WARNINGS (alertas) que se vayan produciendo.
mysql> warnings
Si por el contrario queremos desactivarlos:
mysql> nowarning
Para salir del cliente:
mysql> quit
Estas y otras sentencias útiles las puedes consultar escribiendo:
mysql> help

Creación de bases de datos y tablas
En primer lugar veamos qué hay en el servidor:
mysql> show databases;
Deberíamos obtener una salida como la siguiente:

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

Recuerda esta última orden porque te será útil para comprobar cambios relativos a las bases de datos.

En este ejemplo crearemos una base de datos llamada “tienda”. En principio contendrá una tabla llamada “libros” en la que almacenaremos el código ISBN, el título, el autor, el precio y el stock de cada libro. Al menos por ahora.
Si en el futuro nuestra tienda también pusiese a la venta CDs, haríamos una segunda tabla dentro de la BD.
Podemos crear una nueva BD con:
mysql> create database tienda;
Puedes verificarlo de nuevo:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| tienda |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

Ahora deberíamos actuar sobre esta nueva BD, así que:
mysql> use tienda;

Para crear la tabla “libros” con los campos de los que hablamos antes:
mysql> create table libros(
-> isbn varchar(13) primary key not null,
-> titulo varchar(30) not null,
-> autor varchar (30) not null,
-> precio double not null,
-> stock int(4) not null
-> );
Query OK, 0 rows affected (0.18 sec)

Como se puede ver, dentro de los paréntesis que siguen a la palabra “libros” definimos los tipos de datos que vamos a almacenar. El ISBN, el título y el autor son cadenas de caracteres (varchar) a las cuales hemos limitado el tamaño (13, 30 y 30 respectivamente).
El precio es un número con hasta dos cifras decimales (double) y el stock, un entero de hasta 4 cifras.
Además hemos establecido que el ISBN sea la clave primaria, es decir, el valor inequívoco por el que se identificará a cada libro. Y ninguno de los campos puede ser nulo.
Verificamos que la tabla se ha creado:
mysql> show tables;
+--------------------+
| Tables_in_tienda |
+--------------------+
| libros |
+--------------------+
1 row in set (0.00 sec)

Y comprobamos la estructura inicial que hemos definido:
mysql> describe libros;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| isbn | varchar(13) | NO | PRI | NULL | |
| titulo | varchar(30) | NO | | NULL | |
| autor | varchar(30) | NO | | NULL | |
| precio | double | NO | | NULL | |
| stock | int(4) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

Ahora vamos a introducir varios libros de ejemplo:
mysql> insert into libros (isbn, titulo, autor, precio, stock) values(
-> '9788441529373',
-> 'Desarrollo de aplicaciones para Android',
-> 'Joan Ribas Lequerica',
-> 14.95,
-> 1
-> );


La sentencia dice literalmente que hay que introducir en “libros”, rellenando los campos isbn, titulo, etc. un primer elemento, que es el fantástico libro de Lequerica “Desarrollo de aplicaciones para Android“.
El servidor rellenará los campos con la información proporcionada en ese mismo orden. Fíjate en que las cadenas de caracteres se delimitan con la comilla simple.

Metamos algo más de información en nuestra BD…
mysql> insert into libros (isbn, titulo, autor, precio, stock) values ('9701701658','Sistemas operativos diseño e implementación','Andrew S. Tanenbaum', 59.95, 1);
Query OK, 1 row affected, 1 warning (0.12 sec)

Warning (Code 1265): Data truncated for column 'titulo' at row 1
El warning que muestra se debe a que el titulo excede los 30 caracteres que habíamos previsto y la cadena de caracteres ha sido truncada. Otro más:
mysql> insert into libros (isbn, titulo, autor, precio, stock) values ('9786074420463', 'Sistemas operativos modernos', 'Andrew S. Tanenbaum', 59.99, 1);
Query OK, 1 row affected (0.12 sec)

Ahora que tenemos tres elementos en la tabla libros de nuestra BD tienda, comencemos a visualizar la información. La orden que más vas a usar es la siguiente:
mysql> select * from libros;
+---------------+---------------------------------+----------------------+--------+-------+
| isbn | titulo | autor | precio | stock |
+---------------+---------------------------------+----------------------+--------+-------+
| 9701701658 | Sistemas operativos diseño e i | Andrew S. Tanenbaum | 59.95 | 1 |
| 9786074420463 | Sistemas operativos modernos | Andrew S. Tanenbaum | 59.99 | 1 |
| 9788441529373 | Desarrollo de aplicaciones par | Joan Ribas Lequerica | 14.95 | 1 |
+---------------+---------------------------------+----------------------+--------+-------+
3 rows in set (0.00 sec)

que como puedes ver, vuelca todo el contenido de la tabla.
Este tipo de sentencias basadas en expresiones regulares permite hacer selecciones de datos que cumplan unas determinadas condiciones; por ejemplo mostrar los libros con precio superior a 20 €.
mysql> select * from libros where precio>20.00;
+---------------+---------------------------------+---------------------+--------+-------+
| isbn | titulo | autor | precio | stock |
+---------------+---------------------------------+---------------------+--------+-------+
| 9701701658 | Sistemas operativos diseño e i | Andrew S. Tanenbaum | 59.95 | 1 |
| 9786074420463 | Sistemas operativos modernos | Andrew S. Tanenbaum | 59.99 | 1 |
+---------------+---------------------------------+---------------------+--------+-------+
2 rows in set (0.03 sec)

O incluso combinar condiciones mediante los operadores lógicos habituales en programación:
mysql> select * from libros where precio>20.00 && precio<59.99;
+------------+---------------------------------+---------------------+--------+-------+
| isbn | titulo | autor | precio | stock |
+------------+---------------------------------+---------------------+--------+-------+
| 9701701658 | Sistemas operativos diseño e i | Andrew S. Tanenbaum | 59.95 | 1 |
+------------+---------------------------------+---------------------+--------+-------+
1 row in set (0.00 sec)

De la misma forma que para ver todas las columnas usamos el comodín * y no ponemos ninguna condición (es decir, nada precedido por “where”), también podemos mostrar una única columna:
mysql> select titulo from libros;
+---------------------------------+
| titulo |
+---------------------------------+
| Sistemas operativos diseño e i |
| Sistemas operativos modernos |
| Desarrollo de aplicaciones par |
+---------------------------------+
3 rows in set (0.00 sec)

O mejor aún:
mysql> select titulo from libros where autor='Joan Ribas Lequerica';
+--------------------------------+
| titulo |
+--------------------------------+
| Desarrollo de aplicaciones par |
+--------------------------------+
1 row in set (0.03 sec)

Esta última orden selecciona los titulos de la tabla libros, donde el autor sea el señor Lequerica. Obviamente en nuestro ejemplo solo encontrará uno.

————————
TUTORIAL MYSQL:
————————
I. Instalación y arranque, creación de BDs y tablas, introducción y visualización de datos
II. Actualización de datos, eliminación y alteración de las BDs y las tablas
III. Consultas a MySQL desde un programa Java, Primera parte
IV. Consultas a MySQL desde un programa Java, Segunda parte
————————

Anuncios

3 pensamientos en “Tutorial de MySQL

  1. Pingback: Java y consultas a MySQL | Emilio

  2. Pingback: Java y consultas a MySQL (II) | Emilio

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s