Las bases de datos relacionales son una poderosa herramienta que nos permite almacenar datos dentro de sus tablas de forma ordenada y permanente, a los cuales podemos acceder posteriormente por medio de consultas.

Insertar datos en una tabla

Para insertar datos en una tabla se usa el comando INSERT INTO. Por ejemplo, insertemos una sucursal en la tabla branches:

MariaDB [storage]> INSERT INTO branches (name, start_date) 
                   VALUES ('SUCURSAL A', '2020-07-16');

Recuerda que puedes usar DESC branches para conocer la estructura de tu tabla y obtener sus campos.

El comando INSERT INTO va seguido del nombre de la tabla y su encabezado (lista de campos) entre paréntesis, luego se coloca la palabra reservada VALUES y, finalmente, la lista de valores a insertar encerrada entre paréntesis.

El orden de los campos y valores es muy importante. Asegúrate que cada valor a insertar corresponda (en el mismo orden) con el campo al que pertenece.

Nota que la inserción se ha realizado con éxito a pesar de no incluir los campos idcreated_at y updated_at en el encabezado de la tabla. Esto se debe a que MySQL/MariaDB va a completar el registro de estos datos con sus valores por defecto.

También puedes insertar registros sin especificar el encabezado. Sobre esto, valores por defecto e inserción de múltiples registros te hemos hablado en nuestro libro Aprende SQL con MySQL y MariaDB.

Consultar datos de una tabla

Para consultar los datos de las tablas se usa el comando SELECT. Por ejemplo, vamos a consultar la tabla branches para obtener nuestro registro insertado:

MariaDB [storage]> SELECT 
                      id, name, start_date 
                   FROM
                      branches;

El comando SELECT va seguido de la lista de campos de la tabla (separados por coma), luego se escribe la palabra reservada FROM, y por último, el nombre de la tabla que deseas consultar.

Puedes usar un comodín (*) para consultar todos los campos de la tabla, sin embargo, es una buena práctica construir las consultas especificando los campos deseados.

La consulta anterior nos mostrará el nuevo registro:

+----+------------+------------+
| id | name       | start_date |
+----+------------+------------+
|  1 | SUCURSAL A | 2020-07-16 |
+----+------------+------------+
1 row in set (0.000 sec)

También podemos usar la cláusula WHERE para filtrar los resultados que cumplan con una condición. Para ello, agreguemos primero otra sucursal:

MariaDB [storage]> INSERT INTO branches (name, start_date)
                   VALUES ('SUCURSAL B', '2020-08-16');

Ahora, en lugar de consultar la tabla para que nos muestre todas las sucursales, vamos a buscar la nueva sucursal:

MariaDB [storage]> SELECT 
                      id, name, start_date 
                   FROM 
                      branches 
                   WHERE 
                      name = 'SUCURSAL B';

Esta consulta nos devolverá el siguiente resultado:

+----+------------+------------+
| id | name       | start_date |
+----+------------+------------+
|  2 | SUCURSAL B | 2020-08-16 |
+----+------------+------------+
1 row in set (0.001 sec)

Insertando datos en employees

Ahora te preguntarás ¿cómo insertamos datos en la tabla employees?. Vamos a examinar su estructura ejecutando DESC employees:

+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| id         | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| branch_id  | bigint(20) unsigned | YES  | MUL | NULL    |                |
| dni        | varchar(20)         | YES  | UNI | NULL    |                |
| first_name | varchar(100)        | YES  |     | NULL    |                |
| last_name  | varchar(100)        | YES  |     | NULL    |                |
| birth_date | date                | YES  |     | NULL    |                |
| created_at | timestamp           | YES  |     | NULL    |                |
| updated_at | timestamp           | YES  |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
8 rows in set (0.001 sec)

Nota que esta tabla, a diferencia de branches, incluye un campo branch_id que es clave foránea, el cual además permite valores nulos. Esto significa que podemos tener empleados que no estén asignados a una sucursal.

Para insertar un empleado sin sucursal, solo debemos colocar NULL como valor del campo branch_id:

MariaDB [storage]> INSERT INTO employees 
                   (branch_id, dni, first_name, last_name, birth_date)
                   VALUES (NULL, '15024001', 'Harry', 'Smith', '2000-01-01');

Ahora, si deseamos insertar un empleado que pertenezca a una sucursal registrada, solo debemos pasar el id de dicha sucursal como valor del campo branch_id:

MariaDB [storage]> INSERT INTO employees 
                   (branch_id, dni, first_name, last_name, birth_date)
                   VALUES (1, '15024002', 'Jacob', 'Johnson', '2000-01-02');

Ejecuta SELECT id, name FROM branches para conocer el id de la sucursal.

Para obtener nuestros empleados insertados, podemos ejecutar:

MariaDB [storage]> SELECT 
                      id, branch_id, dni, first_name, last_name 
                   FROM 
                      employees;

Lo cual debería mostrarnos un resultado como el siguiente:

+----+-----------+----------+------------+-----------+
| id | branch_id | dni      | first_name | last_name |
+----+-----------+----------+------------+-----------+
|  1 |      NULL | 15024001 | Harry      | Smith     |
|  2 |         1 | 15024002 | Jacob      | Johnson   |
+----+-----------+----------+------------+-----------+
2 rows in set (0.000 sec)

Sigue practicando agregando sucursales y empleados. En la lección siguiente aprenderemos cómo consultar los empleados relacionados con las sucursales, mostrando los datos de la sucursal a la que pertenecen.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Relaciones entre tablas de bases de datos Lección siguiente Uso de Join en consultas con MySQL / MariaDB