Tareas básicas con MySQL

En la web durante estos más de cinco años hemos tratado diferentes tipos de bases de datos, tanto relacionales como SQL, es decir, MySQL o MariaDB, y orientadas a documentos como MongoDB. En el artículo de hoy continuaremos trabajando con las sentencias SQL, usando el motor MySQL, que iniciamos con la entrada “Crear una base de datos MySQL en GNU Linux” que escribí hace ya unos cuantos meses. Por lo tanto me saltaré el pase de la instalación y creación de base de datos, que ya traté entonces. Veremos las tareas básicas con MySQL

logo-mysql

Securizando nuestro servidor MySQL

Una vez realizada la instalación en la anterior artículo nos faltó tratar una parte muy importante que es la securización del servidor de base de datos.

Para ello utilizaremos el siguiente comando:

  1. mysql_secure_installation

Primero de todo, si leemos el texto, en inglés, nos recomienda que utilicemos el script para securizar nuestro servidor, sobre todo si está en producción. A continuación nos preguntará la contraseña del usuario root y si queremos cambiarla. Yo no la cambiaré ya que la que uso me parece bastante segura.

mysql-secure-001

La siguiente pregunta es sobre los usuarios anónimos, le diremos que Sí, deseamos eliminar los usuarios anónimos.

A continuación nos pregunta si queremos eliminar la base de datos de prueba y su acceso, también le diremos que Sí.

La última pregunta es sobre si permitimos que se deshabilite el acceso de manera remota, es decir, a través de otra máquina en la red, del usuario ‘root’ para el acceso a nuestra base de datos, le decimos que Sí.

Y con esto ya habremos terminado de securizar el servidor de base de datos.

Comandos básicos SQL

Al igual que otros lenguajes como C, PHP o Java, SQL tiene su propia sintaxis, elementos y tipos de datos.

Los más habituales son los siguientes:

tipos

La mejor manera de decir es hacer, por lo que veremos varios ejemplos de su uso.

Creación de tablas

  1. CREATE TABLE libros(libro VARCHAR(120),descripcion BLOB,precio DECIMAL(3, 2),disponible BOOL);

¿Qué hemos hecho?

Hemos creado una tabla llamada ‘libros’, con los campos, ‘libro’, para el nombre del libro, con 120 caracteres más que suficiente. El campo ‘descripcion’, que utiliza el tipo BLOB, que si revisamos la tabla es un tipo bloque de texto de gran longitud. El campo ‘precio’, que usará tres dígitos más dos decimales. Por último el campo ‘disponible’, para saber si el libro está disponible en almacén.

Insertar datos en la tabla

  1. INSERT INTO libros(libro, descripcion, precio,disponible) 
  2. VALUES('El estado y la revolución', 'Libro teórico escrito por Lenin', 20.35, TRUE);

¿Y ahora?

Pues hemos dicho que usaremos los campos libro, descripcion,precio y disponible, y después hemos escrito los valores en el mismo orden.

Selección de registros

  1. SELECT libro,descripcion FROM libros;

Creo que la selección anterior no necesita mucha explicación, hemos seleccionado los campos ‘libro’ y ‘descripcion’ de la tabla ‘libros’.

Veremos el siguiente resultado:

sql-basico-002

Modificar registros

  1. UPDATE libros SET disponible = FALSE;

En este caso hemos actualizado el campo ‘disponible’, cambiando a FALSE.

Eliminar registros

  1. DELETE FROM libros;

Es una sentencia un poco radical, ya que eliminará todos los registros de la tabla libros.

Si estamos en modo “destroyer”, podemos también eliminar toda la base de datos con:

  1. DROP DATABASE testochobits;

Consultas avanzadas

Para poder jugar un poco más con las sentencias SQL, he añadido unos cuantos registros más:

mysql-basico-001

Empezaremos utilizando la cláusula WHERE, que nos permitirá filtrar registros en una sentencia SQL.

Algunos ejemplos:

Realizamos una consulta donde queremos que nos muestra el nombre de los libros y sus precios inferiores a 30.

  1. SELECT libro,precio FROM libros WHERE precio < 30;

Vemos el resultado:

mysql-basico-002

Añadido que también podemos ordenar los resultados según nos convenga, utiliando la orden ORDER BY, en las formas ASC, es decir, ascendente y DESC, descendente.

La misma sentencia ordenando los nombres:

  1. SELECT libro,precio FROM libros WHERE precio < 30 ORDER BY libro ASC;

Y el resultado:

mysql-basico-003

Creo que hemos visto la potencia de las sentencias SQL, os recomiendo el documento escrito por Eugenia Bahit «Trabajando con Bases de Datos MySQL» si queréis descubrir muchas más posibilidades.

Salu2!!!