Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


Intro a SQL y MySQL - Tema 1 - Consultas básicas con una tabla

1.1. Entrando al sistema

Hemos visto cómo instalar MySQL, y como acceder a su consola. Ahora, como primer ejemplo, crearemos una base de datos sencilla, que llamaremos "ejemplo1". Esta base de datos contendrá una única tabla, llamada "agenda", que contendrá algunos datos de cada uno de nuestros amigos. Como es nuestra primera base de datos, no pretendemos que sea perfecta, sino sencilla, así que apenas guardaremos tres datos de cada amigo: el nombre, la dirección y la edad.

Para crear la base de datos, la estructura que contiene todo, usaremos "create database", seguido del nombre que tendrá la base de datos, como ya has visto:

create database ejemplo1;

Si, por un despiste, vuelves a teclear la orden, no será ningún gran problema. Simplemente obtendrás un mensaje de error que te avisará de no se ha podido crear la base de datos porque ya existe.

Podemos tener varias bases de datos en nuestro SGBD (Sistema Gestor de Bases de Datos), así que cada vez que accedamos a MySQL deberemos comenzar por indicar cual de ellas queremos usar, con la orden "use":

use ejemplo1;

1.2. Creación de una tabla

Una base de datos, en general, estará formada por varios bloques de información llamados "tablas". En nuestro caso, nuestra única tabla almacenará los datos de nuestros amigos. Por tanto, el siguiente paso será decidir qué datos concretos (lo llamaremos "campos") guardaremos de cada amigo. Deberemos pensar también qué tamaño necesitaremos para cada uno de esos datos, porque al gestor de bases de datos habrá que dárselo bastante cuadriculado. Por ejemplo, podríamos decidir lo siguiente:

nombre - texto, hasta 20 letras
dirección - texto, hasta 40 letras
edad - números, de hasta 3 cifras

Cada gestor de bases de datos tendrá una forma de llamar a esos tipos de datos. Por ejemplo, en MySQL podemos usar "VARCHAR" para referirnos a texto hasta una cierta longitud variable, y "NUMERIC" para números de una determinada cantidad de cifras. Además, en la mayoría de gestores de base de datos, será recomendable (a veces incluso obligatorio) que los nombres de los campos no contengan acentos ni caracteres internacionales, y los nombres de tablas y campos se suelen indicar en minúsculas, de modo que la orden necesaria para crear esta tabla sería:

create table personas (
  nombre varchar(20),
  direccion varchar(40),
  edad numeric(3)
);

1.3. Introducción de datos

Para introducir datos usaremos la orden "INSERT INTO", e indicaremos tras la palabra "VALUES" los valores de los campos, en el mismo orden en el que se habían definido los campos. Los valores de los campos de texto se deberán indicar entre comillas, y los valores para campos numéricos ni necesitarán comillas, así:

insert into personas values ('juan', 'su casa', 25);

Si no queremos indicar todos los datos, deberemos detallar qué campos vamos a introducir y en qué orden, así:

insert into personas (nombre, direccion) values ('Héctor', 'calle 1');

(Como se ve en este ejemplo, los datos sí podrán contener acentos y respetar las mayúsculas y minúsculas donde sea necesario).

De igual modo, también será necesario indicar los campos si se desea introducir los datos en un orden distinto al de definición:

insert into personas (direccion, edad, nombre) values ("Calle 2", 30, "Daniel");

(Y como puedes apreciar en este ejemplo, los campos de texto se pueden indicar también entre comillas dobles, si te resulta más cómodo).

 

1.4. Mostrar datos

Para ver los datos almacenados en una tabla usaremos el formato "SELECT campos FROM tabla". Si queremos ver todos los campos, lo indicaremos con un asterisco:

select * from personas;

que, en nuestro caso, daría como resultado

+---------+-----------+------+
| nombre  | direccion | edad |
+---------+-----------+------+
| juan    | su casa   |   25 |
| Héctor  | calle 1   | NULL |
| Daniel  | Calle 2   |   30 |
+---------+-----------+------+

Como puedes observar, no habíamos introducido los detalles de la edad de Héctor. No se muestra un cero ni un espacio en blanco, sino que se anota que hay un "valor nulo" (NULL) para ese campo. Usaremos esa peculiaridad más adelante.

Si queremos ver sólo ciertos campos, deberemos detallar sus nombres, en el orden deseado, separados por comas:

select nombre, direccion from personas;

y obtendríamos

+---------+-----------+
| nombre  | direccion |
+---------+-----------+
| juan    | su casa   |
| Héctor  | calle 1   |
| Daniel  | Calle 2   |
+---------+-----------+

1.5. Buscar por contenido

Normalmente no querremos ver todos los datos que hemos introducido, sino sólo aquellos que cumplan cierta condición. Esta condición se indica añadiendo un apartado WHERE a la orden "SELECT". Por ejemplo, se podrían ver los datos de una persona a partir de su nombre de la siguiente forma:

select nombre, direccion from personas where nombre = 'juan';

+--------+-----------+
| nombre | direccion |
+--------+-----------+
| juan   | su casa   |
+--------+-----------+

En ocasiones no querremos comparar todo el campo con un texto exacto, sino ver si contiene un cierto texto (por ejemplo, porque sólo sepamos un apellido o parte de la calle). En ese caso, no compararíamos con el símbolo "igual" (=), sino que usaríamos la palabra "LIKE", y para las partes que no conozcamos usaremos el comodín "%", como en este ejemplo:

select nombre, direccion from personas where direccion like '%calle%';

que nos diría el nombre y la dirección de nuestros amigos que viven en lugares que contengan la palabra "calle", aunque ésta pueda estar precedida por cualquier texto (%) y quizá también con cualquier texto (%) a continuación:

+---------+-----------+
| nombre  | direccion |
+---------+-----------+
| Héctor  | calle 1   |
| Daniel  | Calle 2   |
+---------+-----------+


1.6. Mostrar datos ordenados

Cuando una consulta devuelva muchos resultados, resultará poco legible si éstos se encuentran desordenados. Por eso, será frecuente añadir "ORDER BY" seguido del nombre del campo que se quiere usar para ordenar (por ejemplo "ORDER BY nombre").

Es posible indicar varios campos de ordenación, de modo que se mire más de un criterio en caso de que un campo coincida (por ejemplo "ORDER BY apellidos, nombre").

Si se quiere que alguno de los criterios de ordenación se aplique en orden contrario (por ejemplo, textos de la Z a la A o números del valor más grande al más pequeño), se puede añadir la palabra "DESC" (de "descending", "descendiendo") al criterio correspondiente, como en "ORDER BY precio DESC". Si no se indica esa palabra, se sobreentiende que se quiere obtener los resultados en orden ascendente (lo que indicaría la palabra "ASC", que es opcional).

select nombre, direccion 
from personas 
where direccion like '%calle%'
order by nombre, direccion desc;

+---------+-----------+
| nombre  | direccion |
+---------+-----------+
| Daniel  | Calle 2   |
| Héctor  | calle 1   |
+---------+-----------+


1.7. Salir de MySQL

Es suficiente por hoy. Para terminar nuestra sesión de MySQL, tecleamos la orden quit o exit y volveremos al sistema operativo.

 

1.8. Ejercicios propuestos

Si no sólo quieres leer, sino que tu intención es aprender y asegurarte de que consolidas los conocimientos, deberías practicar un poco. Aquí tienes una primera tanda de ejercicios propuestos. Si te surgen dudas al resolverlos o quieres asegurarte de que tus respuestas son correctas, puedes encontrarme en el foro de SQL de AprendeAProgramar.com.