Comandos SQL
Algunos comandos para empezar a trabajar con MariaDB o MySQL y poder crear bases de datos, tablas, usuarios, etc.
Acceder al entorno MySQL
MySQL
Para acceder por la terminal al entorno MySQL tenemos que hacerlo mediante sudo
.
sudo mysql -u root -p
Nos autentificamos con la contraseña que hemos creado al instalar el servicio MySQL o MariaDB.
Y el nuevo prompt será el siguiente (para MariaDB):
MariaDB [(none)]>
Crear una base de datos
CREATE DATABASE
Lo primero que necesitaremos es tener, al menos, una base de datos en nuestro sistema para interactuar con ella.
CREATE DATABASE datos;
Siendo ‘datos’ el nombre de la base de datos que se acaba de crear.
Listar las bases de datos
SHOW DATABASE
Al listar las bases de datos existentes en el sistema comprobamos las que existen y nos sirve para verificar que la creada ha sido exitosa.
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| datos |
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| sys |
+--------------------+
6 rows in set (0,000 sec)
Trabajar sobre una base de datos
USE
Para trabajar sobre una base de datos en concreto y previamente creada.
USE datos;
MariaDB [(none)]> USE datos;
Database changed
MariaDB [datos]>
Crear usuario de la base de datos
CREATE USER
Para poder interactuar con la base de datos necesitamos, además de tener una base de datos creada, un usuario y su contraseña.
CREATE USER 'usuario_datos'@'localhost' IDENTIFIED BY 'pass_datos';
donde usuario_bbdd
será el nombre que le asignemos y password
la contraseña elegida.
MariaDB [datos]> CREATE USER 'usuario_datos'@'localhost' IDENTIFIED BY 'pass_datos';
Query OK, 0 rows affected (0,004 sec)
Asignar privilegios
GRANT PRIVLIEGES
Después de haber creado la base de datos con sus usuario y contraseña debemos asignar los privilegios que dicho usuario puede tener con respecto a la base de datos.
Lo normal es asignarle todos los privilegios al usuario en cuestión, aunque esto dependerá de las necesidades puntuales.
GRANT ALL PRIVILEGES ON datos.* TO 'usuario_datos'@'localhost';
MariaDB [datos]> GRANT ALL PRIVILEGES ON datos.* TO 'usuario_datos'@'localhost';
Query OK, 0 rows affected (0,004 sec)
FLUSH PRIVILEGES
Y para que los cambios tengan efecto hay que aplicarlos.
FLUSH PRIVILEGES;
MariaDB [datos]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,000 sec)
Listar usuarios
SHOW USERS
Para ver todos los usuarios creados.
SHOW USERS;
Aunque en sistemas antiguos puede que este comando no funcione, por lo que hay que acudir al siguiente.
SELECT User, Host FROM mysql.user;
el cual nos listará correctamente todos los usuarios.
Borrar usuario
DROP USER
Para eliminar un usuario.
DROP USER 'nombre'@'host'
‘nombre’ es el nombre del usuario y ‘host’ es el host desde donde el usuario se puede conectar, que puede ser una dirección IP específica, localhost o ‘%’. Este símbolo indica que puede conectarse desde cualquier sitio.
Lo más normal es:
DROP USER 'user_BBDD'@'localhost'
Posteriormente al borrado de un usuario es recomendable ejecutar:
FLUSH PRIVILEGES;
para que los cambios surtan efecto inmediatamente.
Crear tablas
CREATE TABLE
Ya tenemos la base de datos con su usuario y contraseña y se le han aplicado los privilegios necesarios,
Ahora es el momento de empezar a crear tablas para que contengan los registros necesarios.
Vamos a crear una tablas con tres campos, el ‘id’ que será auto incremental y primario, otro con el nombre y el tercero con el correo electrónico
CREATE TABLE datos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(100)
);
MariaDB [datos]> CREATE TABLE datos (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> nombre VARCHAR(50),
-> email VARCHAR(100) );
Query OK, 0 rows affected (0,064 sec)
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
num_pedido VARCHAR(50),
fecha_pedido DATETIME
);
MariaDB [datos]> CREATE TABLE pedidos (id INT AUTO_INCREMENT PRIMARY KEY, num_pedido VARCHAR(50), fecha_pedido DATETIME );
Query OK, 0 rows affected (0,021 sec)
Las instrucciones se pueden facilitar en una línea o en varias, terminando la instrucción, en cualquier caso, con un ‘;’.
Eliminar una tabla
DROP TABLE
Para eliminar una tabla que tengamos en la base de datos.
DROP TABLE datos;
Insertar registros en una tabla
INSERT INTO VALUES
Podemos añadir registros a una tabla creada desde la línea de comandos.
INSERT INTO datos (nombre, email)<br>VALUES ('Juan Castro', 'juan.castro@mail.com');
MariaDB [datos]> INSERT INTO pedidos (num_pedido, fecha_pedido) VALUES ('A3001', '2024-07-13 14:30:25');
Query OK, 1 row affected (0,004 sec)
Consultar datos de una tabla
SELECT FROM WHERE
Podemos consultar, también desde la línea de comandos, los datos almacenados en la tabla de la base de datos.
SELECT nombre, email FROM datos WHERE id = 1;
Nos devuelve el nombre y email almacenado en el registro cuyo valor ‘id’ es igual a 1.
MariaDB [datos]> SELECT nombre, email FROM datos WHERE id=1;
+-------------+----------------------+
| nombre | email |
+-------------+----------------------+
| Juan Castro | juan.castro@mail.com |
+-------------+----------------------+
1 row in set (0,000 sec)
Borrar registros de una tabla
DELETE FROM WHERE
Al igual que podemos introducir o actualizar datos de una tabla, también podemos eliminarlos.
DELETE FROM datos WHERE id = 1;
Borra el registro cuyo ‘id’ es igual a 1.
Modificar la estructura de una tabla
ALTER TABLE
Si tenemos la necesidad de modificar o alterar la estructura de una tabla ya creada, por ejemplo para añadir un nuevo campo más a los ya existentes.
ALTER TABLE datos<br>ADD telefono VARCHAR(20);
A partir de esta acción en la tabla ‘datos’ tendremos los campos ‘nombre’, ‘email’ y ‘telefono’.
Si se realiza una consulta como en el anterior apartado.
MariaDB [datos]> SELECT nombre, email, telefono FROM datos WHERE id=1;
+-------------+----------------------+----------+
| nombre | email | telefono |
+-------------+----------------------+----------+
| Juan Castro | juan.castro@mail.com | NULL |
+-------------+----------------------+----------+
1 row in set (0,000 sec)
Actualizar datos existentes en una tabla
UPDATE SET WHERE
Podemos actualizar datos sobre un registro ya existente en la tabla.
UPDATE datos
SET email = 'castro.juan@mail.com'
WHERE id = 1;
En este caso actualizará el correo electrónico que había previamente almacenado. O bien podemos insertar datos en la nueva columna creada.
UPDATE datos
SET telefono = '666666666'
WHERE id = 1;
Y al volver a realizar una consulta.
MariaDB [datos]> SELECT nombre, email, telefono FROM datos WHERE id=1;
+-------------+----------------------+-----------+
| nombre | email | telefono |
+-------------+----------------------+-----------+
| Juan Castro | juan.castro@mail.com | 666666666 |
+-------------+----------------------+-----------+
1 row in set (0,000 sec)
Combinar filas de dos o más tablas
SELECT FROM JOIN ON
Se usa para vincular tablas entre si dadas que tienen datos relacionados.
Tenemos una segunda tabla llamada ‘pedidos’ que contiene los campos ‘id’, ‘num_pedido’ y ‘fecha_pedido’ y queremos relacionar ambas tablas por el campo nombre.
SELECT datos.nombre, pedidos.nim_pedido
FROM datos
JOIN pedidos
ON datos.id = pedidos.id;
MariaDB [datos]> SELECT datos.nombre, pedidos.num_pedido FROM datos JOIN pedidos ON datos.id = pedidos.id;
+-------------+------------+
| nombre | num_pedido |
+-------------+------------+
| Juan Castro | A3001 |
+-------------+------------+
1 row in set (0,000 sec)
Mostrar las tablas existentes
SHOW TABLES
Se pueden listar todas las tablas contenidas en la base de datos.
SHOW TABLES;
MariaDB [datos]> SHOW TABLES;
+-----------------+
| Tables_in_datos |
+-----------------+
| datos |
| pedidos |
+-----------------+
2 rows in set (0,000 sec)
Ordenar los resultados de una consulta
ORDER BY
Ordena los resultados, de forma ascendente o descendente de una consulta realizada.
SELECT nombre, email
FROM datos
ORDER BY nombre ASC;
Si en la tabla existen, como es de esperar, más de un registro, esta instrucción ordenará el resultado de todos los registros de ‘datos’ por el campo ‘nombre’ de forma ascendente (ASC).
Si se quiere que sea de forma descendente se tiene que sustituir ASC por DESC.
Salir del entorno SQL
Para salir del entorno SQL y volver al prompt del sistema.
EXIT;
Backup o exportar una base de datos
Ya fuera del entorno MySQL, se ejectua el comando mysqldump
.
mysqldump
mysqldump -u usuario -p nombre_bbdd > nombre_archivo_backup.sql