Bases de datos desde cero, sus orígenes y …
Hoy hablaremos de bases de datos, son, muchas veces, la columna vertebral de sistemas informáticos …
leer másEn el capítulo anterior, repasamos los orígenes y fundamentos de las bases de datos. Hicimos un pequeñó viaje por los tipos de bases de datos que existen, entre ellas las relacionales, ahora avanzaremos al corazón del trabajo con bases de datos relacionales: SQL (Structured Query Language), el lenguaje universalmente aceptado para interactuar con estos motores.
SQL nos permite definir, manipular y consultar datos en bases de datos relacionales. En este capítulo, desglosaremos los términos más comunes en SQL y su funcionamiento básico, acompañados de ejemplos progresivos que facilitarán su comprensión.
SQL es el estándar de facto para trabajar con bases de datos relacionales. Ya sea que estés trabajando con MySQL, PostgreSQL, Microsft SQL ( MSSQL) u Oracle, los conceptos y comandos básicos que veremos son universales. Entender cómo funciona te permitirá extraer, analizar y manipular datos con facilidad. Empecemos con un listado con los términos más importantes que conocerás en este capítulo.
Antes de proceder con los comandos, es esencial entender los tipos de datos más comunes disponibles en este tipo de bases de datos. Estos tipos definen la naturaleza y las restricciones de los datos que puedes almacenar en las columnas de tus tablas.
TRUE
o FALSE
(puede variar según el motor de base de datos).Estos tipos de datos forman la base para diseñar esquemas eficientes y estructurar los datos de manera óptima en una base de datos relacional. Ahora que conocemos los tipos de datos disponibles, avancemos hacia los términos y comandos fundamentales en SQL.
A continuación, agrupamos los términos más importantes en SQL según su propósito principal, son comunes a todos los motores de bases de datos relacionales aunque pueden variar ligeramente en su sintaxis. Son los siguientes:
GROUP BY
.En las siguientes secciones, veremos algunos ejemplos de los términos más fundamentales (SELECT
, FROM
, WHERE
,
etc.) en detalle, junto con ejemplos prácticos. Utilizaremos una base de datos en local,
con SQLite para ilustrar los conceptos de manera clara y concisa.
Para empezar, necesitamos una base de datos de ejemplo. Puedes descargar la herramienta SQLiteBrowser desde
su sitio web, o instalarla a través de tu gestor de paquetes favorito. Una vez instalada,
crea una base de datos llamada tienda.db
y ejecuta el siguiente script SQL para crear una tabla de ejemplo:
Con este comando creamos una tabla llamada Productos
con cuatro columnas: id
, nombre
, precio
y categoria
. La
columna id
es la clave primaria de la tabla, y se autoincrementa automáticamente con cada nueva fila insertada. Las
columnas nombre
, precio
y categoria
son de tipo TEXT
, REAL
y TEXT
respectivamente, y no pueden ser nulas (
NOT NULL
). También creamos una tabla adicional llamada Categorias
para almacenar las categorías de los productos:
CREATE TABLE Categorias (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL
);
CREATE TABLE Productos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
precio REAL NOT NULL,
categoria_id INTEGER,
FOREIGN KEY (categoria_id) REFERENCES Categorias (id)
);
Ahora que tenemos dos tablas de ejemplo, veamos cómo interactuar con ella utilizando los comandos de inserción y consulta de datos.
Para insertar datos en la tabla Productos
, utilizamos el comando INSERT INTO
. A continuación, insertamos tres filas
de
datos en la tabla:
INSERT INTO Categorias (nombre) VALUES
('Electrónica'),
('Muebles'),
('Accesorios');
INSERT INTO Productos (nombre, precio, categoria_id) VALUES
('Laptop', 1200, 1),
('Smartphone', 800, 1),
('Auriculares', 50, 3),
('Mesa', 150, 2),
('Silla', 85, 2),
('Cargador', 20, 3),
('Monitor', 250, 1);
Esto añade cinco productos a la tabla. Para verlos, ejecuta una consulta SELECT
para extraer todos los datos de la
tabla.
La consulta SELECT
es el comando más utilizado en SQL nos permite extraer datos de una o más tablas basándonos en una
condición específica. En este caso, extraemos todos los datos de la tabla Productos
:
SELECT * FROM Productos;
Podemos escoger sólo algunas columnas específicas para mostrar en la consulta. Por ejemplo, si solo queremos ver el nombre y el precio de los productos, podemos hacerlo de la siguiente manera:
SELECT nombre, precio FROM Productos;
También podríamos filtrar los resultados basándonos en una condición específica. Por ejemplo, si queremos ver solo los
productos de la categoría Electrónica
, podemos añadir una cláusula WHERE
a nuestra consulta, al tener
sólo la ID de la categoría tenemos que obtenerlo utilizando el número de la categoría al que corresponde, el 1 en este
caso:
SELECT * FROM Productos WHERE categoria_id = 1;
Para poder ver el nombre de la categoría en lugar de la ID, podemos unir las dos tablas utilizando la cláusula JOIN
.
En este caso, utilizamos un INNER JOIN
para combinar las filas de ambas tablas basándonos en la columna
categoria_id
:
SELECT p.nombre, p.precio, c.nombre AS categoria
FROM Productos p
INNER JOIN Categorias c ON p.categoria_id = c.id;
Ahora podemos filtrar por su nombre en vez del ID de la categoría:
SELECT p.nombre, p.precio, c.nombre AS categoria
FROM Productos p
INNER JOIN Categorias c ON p.categoria_id = c.id
WHERE c.nombre = 'Electrónica';
Como vemos, combinando diferentes comandos y cláusulas SQL, podemos extraer, filtrar y manipular datos de manera eficiente cuándo utilizamos o accedemos a una base de datos relacional.
Además de filtrar los resultados, también podemos ordenarlos y limitarlos utilizando las cláusulas ORDER BY
y LIMIT
.
Por ejemplo, si queremos ver los productos ordenados por precio de mayor a menor, podemos hacerlo de la siguiente
manera:
SELECT * FROM Productos ORDER BY precio DESC;
Si solo queremos ver los dos productos más caros, podemos añadir una cláusula LIMIT
a nuestra consulta:
SELECT * FROM Productos ORDER BY precio DESC LIMIT 2;
La cláusula GROUP BY
nos permite agrupar filas que tienen valores comunes en una o más columnas. Por ejemplo, si
quisiéramos agrupar los productos por categoría y contar cuántos productos hay en cada categoría, podríamos hacerlo de
la siguiente manera:
SELECT c.nombre AS categoria, COUNT(p.id) AS total_productos
FROM Productos p
INNER JOIN Categorias c ON p.categoria_id = c.id
GROUP BY c.nombre;
También podemos filtrar los grupos de datos utilizando la cláusula HAVING
. Por ejemplo, si solo queremos ver las
categorías
que tienen más de dos producto, podemos añadir una condición HAVING
a nuestra consulta:
SELECT c.nombre AS categoria, COUNT(p.id) AS total_productos
FROM Productos p
INNER JOIN Categorias c ON p.categoria_id = c.id
GROUP BY c.nombre
HAVING COUNT(p.id) > 2;
Ahora veamos como hacer para actualizar y eliminar datos de la tabla. Algo muy habitual en este tipo de operaciones y que es sumamente importante conocer tanto para mantener la integridad de los datos como para realizar operaciones de mantenimiento.
Para actualizar datos en una tabla, utilizamos el comando UPDATE
. Por ejemplo, si queremos cambiar el precio de un
producto, podemos hacerlo de la siguiente manera:
UPDATE Productos SET precio = 900 WHERE nombre = 'Laptop';
Para eliminar filas de una tabla, utilizamos el comando DELETE
. Por ejemplo, si queremos eliminar un producto de la
tabla, podemos hacerlo de la siguiente manera:
DELETE FROM Productos WHERE nombre = 'Cargador';
Hemos visto de una manera práctica cómo utilizar los comandos más comunes en SQL para interactuar con una base de datos relacional. Estos comandos forman la base para diseñar consultas complejas, manipular datos y definir la estructura de una base de datos. A medida que te familiarices con estos comandos, podrás extraer, analizar y manipular datos de manera eficiente.
En este capítulo, hemos explorado los términos más comunes en SQL y su funcionamiento básico. Hemos cubierto los
comandos de consulta de datos (SELECT
, FROM
, WHERE
, etc.), los comandos de manipulación de datos (INSERT
,
UPDATE
, DELETE
, etc.) y los comandos de definición de datos (CREATE
, ALTER
, DROP
, etc.). Además, hemos
discutido las restricciones y claves (PRIMARY KEY
, FOREIGN KEY
) que se utilizan para garantizar la integridad de los
datos en una base de datos relacional.
Quizá te puedan interesar
Hoy hablaremos de bases de datos, son, muchas veces, la columna vertebral de sistemas informáticos …
leer másExpress.js es un marco de trabajo minimalista, flexible y proporciona un robusto conjunto de …
leer másEn el último capítulo nos adentramos en las profundidades de GNU/Linux, explorando la gestión de …
leer másDe concepto a realidad