Curso SQL: Crear y utilizar una base de datos

Crear y seleccionar una Base de Datos en MySQL


Para crear una base de datos, debemos escribir CREATE DATABASE y a continuación el nombre que le queremos dar a la base de datos.

Pero con crearla no basta para usarla, para seleccionar una base de datos y poder comenzar a utilizarla, debemos escribir USE seguido del nombre de la base de datos.

Vamos a ver un ejemplo de como crear una base de datos que llamaremos "nueva" y de cómo seleccionarla después:

mysql> CREATE DATABASE nueva;
mysql> USE nueva
Database changed

Crear una tabla


Una vez que sepamos los datos que van a tener nuestras tablas, podemos comenzar con su creación. Para crear una tabla bastará con poner CREATE TABLE seguido del nombre de la tabla y después entre paréntesis los elementos que la forman con sus "especificaciones".

Vamos a ver un ejemplo de como crear una tabla en nuestra base de datos "nueva" llamada personal:

mysql> CREATE TABLE personal (nombre VARCHAR(20), sexo CHAR(1), fechanac DATE);

Por ahora nos bastará con saber esto:

Bueno, pues ya tendríamos creada nuestra primera tabla, ahora si queremos comprobar que está creada bastará con poner SHOW TABLES y nos mostrará todas las tablas que tiene la base de datos.

E incluso si quisiesemos comprobar el tipo de dato de las columnas de la tabla, o los nombres, tendríamos que poner DESCRIBE y seguido el nombre de la tabla, en este caso sería DESCRIBE personal

Cargar datos en una tabla


Ya tenemos la tabla creada y preparada para recibir los datos. Hay dos formas de introducir datos en una tabla:

Vamos a ver el mismo ejemplo de cada forma distinta de introducir datos:

NUESTRO ARCHIVO SE LLAMA personal.txt Y QUEDARÍA ASI:

Pedro      m      1986-02-28
Lucia      f        \N
Marta      f        1988-01-04

Y PARA CARGARLO EN LA TABLA personal:

LOAD DATA LOCAL INFILE '/archivos/personal.txt' INTO TABLE personal;

Como vemos, hemos utilizado un \N para decir que ese valor es NULL, quiero decir, que si desconocemos un valor, tendremos que escribir \N en el lugar de ese valor.

VAMOS A AGREGAR LA SEGUNDA LÍNEA DE NUESTRO .TXT DE LA SEGUNDA FORMA:

INSERT INTO personal
VALUES ('Lucia','f','NULL');

Con las otras líneas sería igual. Como vemos, en este caso, ponemos NULL ya que el programa no tiene que interpretar nada. Pero ya veremos NULL y NOT NULL más adelante en profundidad, ahora basta con que sepas para qué lo estamos utilizando.

Extraer información de una tabla

SELECT


Esta etiqueta va a ser la empleada para extraer información de una tabla. Su sintaxis sería: SELECT seleccionar FROM desde WHERE condiciones;. Debemos saber:

Seleccionar registros específicos


En tablas de gran tamaño, la mayoría de las veces no queremos ver todos los registros almacenados, en caso de querer seleccionar solamente un registro en concreto, pondríamos: SELECT seleccionar FROM desde WHERE y seguido lo que queremos ver. Esto se ve mucho mejor con ejemplos asi que vamos a ver un par de ellos:

SELECCIONAREMOS SOLAMENTE UN NOMBRE PARA VER TODO LO QUE TENEMOS ALMACENADO DE ÉL, EN ESTE CASO SERÁ Pedro:

SELECT * FROM personal WHERE nombre = 'Pedro';

Entendemos lo que hacemos?: voy a explicar con palabras lo que hemos puesto con comandos: lo que le queremos decir es que queremos ver todas las columnas (*) de la tabla personal (FROM) pero con la condición de que el valor de la columna nombre coincida con Pedro. De esta forma, nos mostrará todas las columnas de la tabla personal de Pedro.

Hay dos operadores útiles para indicar las condiciones a cumplir: AND y OR. Ahora vamos con algo más complejo pero igual de comprensible que lo anterior:

SELECT * FROM personal WHERE sexo = 'f' AND fechanac > '1987-01-01';

Con esto conseguimos que nos muestre todas las columnas de la tabla personal con mujeres nacidas después de 1987, en este caso nos mostrará las columnas de Marta.

Se pueden hacer búsquedas con condiciones muy largas y concretas, usando los operadores lógicos AND OR < > y sus combinaciones. Prueba.

Seleccionar columnas concretas


Poco que decir de esto, para seleccionar columnas concretas, basta con poner sus nombres separados por comas en el apartado SELECT:

SELECT nombre, sexo FROM personal

Como vemos no hemos puesto WHERE porque en este caso no hay condiciones, quiero que me muestre todos los registros, pero podríamos poner de condición por ejemplo sexo = 'f'

Ordenar registros


También muy simple, se hace con el comando ORDER BY seguido de lo que quieras tomar como referencia para ordenarlo:

SELECT nombre FROM personal ORDER BY fechanac;

Como verás, se te ordena de forma ascendente en función de la fecha de nacimiento de cada registro, para que esto cambie y sea de forma descendente, añadiremos después de fechanac DESC;

Coincidencia de patrones


Para encontrar coincidencias dentro de las tablas de nuestra base de datos, usaremos los comandos LIKE y NOT LIKE, además de los operadores = < >, y por supuesto % y _. Vamos a explicarlo todo con ejemplos:

SELECT * FROM personal WHERE nombre LIKE 'm%';

Le queremos decir que nos muestre todas las columnas de la tabla personal en las que el nombre empiece por m. Aprovecho para explicar %:

SELECT * FROM personal WHERE nombre LIKE _____;

Ahora le quiero decir que me muestre los registros cuyo nombre tenga 5 caracteres (ya que la barra larga que ves en realidad son 5 barras _). Pues creo que no hace falta explicar más acerca de esto, cada _ es un caracter.

Contar registros


A veces, necesitaremos saber el número de registros que tenemos en una determinada tabla, esto lo haremos con la orden COUNT, que en función de dónde y cómo la pongamos contará de una forma u otra:

SELECT COUNT (*) FROM personal;

En este caso, nos mostrará el número de filas que hay en la tabla personal (es decir, el número de registros de dicha tabla).

Otra cosa bastante util que por ahora no veremos con detalle, pero si nombramos con atención, es, en el caso de tener en la tabla uno o más nombres con varias fechanac, por ejemplo, podríamos contar cuántas fechanac tiene cada nombre de la siguiente manera y utilizando GROUP BY:

SELECT fechanac, COUNT(*) FROM personal GROUP BY fechanac