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 id
, created_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