Introducción básica a SQL

Guía básica de comandos SQL

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
Facebook
X
LinkedIn
WhatsApp
Email

Sobre mi

Trabajo en el desarrollo de webs profesionales desde hace más de 25 años.
También me dedico a mis proyectos personales.

Últimas notas publicadas

Categorías

Scroll al inicio