Lenguaje de consulta estructurado (SQL)
SQL (Structured Query Language) es un lenguaje de programación estándar diseñado para gestionar y manipular bases de datos relacionales. Permite realizar operaciones como la creación de estructuras de datos (tablas, vistas, índices), la inserción, modificación, eliminación y consulta de información. Además, SQL incluye funciones para definir permisos de acceso, integridad de datos y procedimientos almacenados, convirtiéndolo en la herramienta fundamental para la administración de bases de datos.
Base de datos
Una base de datos es un conjunto organizado de información o datos estructurados que se almacenan de forma electrónica en un sistema informático. Su principal objetivo es permitir el almacenamiento, consulta, modificación y recuperación eficiente de datos. Las bases de datos se gestionan mediante sistemas gestores de bases de datos (SGBD), que proporcionan herramientas para garantizar la integridad, seguridad y consistencia de la información.
Características de las bases de datos
- Independencia de datos: Separación entre los datos y las aplicaciones que los utilizan.
- Integridad y consistencia: Garantizan que los datos sean precisos y coherentes.
- Seguridad: Control de accesos y permisos para proteger la información.
- Redundancia controlada: Minimización de duplicidad de datos.
- Acceso concurrente: Permite que múltiples usuarios trabajen al mismo tiempo.
- Escalabilidad: Capacidad de manejar mayor cantidad de datos sin afectar el rendimiento.
- Respaldo y recuperación: Posibilidad de restaurar los datos en caso de fallo.
Sintaxis en base de datos
La sintaxis en bases de datos hace referencia a las reglas y estructuras que deben seguirse al escribir comandos en SQL u otros lenguajes relacionados. Incluye el uso correcto de palabras reservadas (como CREATE
, SELECT
, INSERT
), el orden adecuado de las cláusulas, el manejo de comillas para cadenas de texto, y la utilización de punto y coma (;) para finalizar instrucciones. Una sintaxis correcta es esencial para que el sistema interprete y ejecute los comandos de manera precisa.
Creación de base de datos
Crear una base de datos consiste en generar un espacio lógico en el sistema gestor de bases de datos para almacenar tablas, vistas y otros objetos relacionados. En SQL, se utiliza el comando CREATE DATABASE
seguido del nombre de la base de datos. Ejemplo:
CREATE DATABASE Empresa;
Con este comando se reserva un entorno en el que posteriormente se podrán crear y organizar las tablas y relaciones.
Creación de una tabla
La creación de una tabla implica definir una estructura que almacene registros organizados en filas y columnas. Cada columna se define con un nombre, un tipo de dato y, opcionalmente, restricciones como PRIMARY KEY
, NOT NULL
, o UNIQUE
.
Ejemplo en SQL:
CREATE TABLE Empleados (
idEmpleado INT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
salario DECIMAL(10,2),
fechaIngreso DATE
);
Esta tabla permite almacenar información de los empleados, garantizando que cada registro tenga un identificador único.
Tipos de datos básicos de un campo de una tabla
En SQL, los tipos de datos determinan el tipo de valores que puede almacenar un campo de una tabla. Son fundamentales para garantizar la integridad y precisión de los datos. Los principales son:
- Numéricos:
INT
(enteros).DECIMAL(p,s)
oNUMERIC(p,s)
(números con decimales).FLOAT
oREAL
(números de punto flotante).
- Cadenas de caracteres:
CHAR(n)
(cadena de longitud fija).VARCHAR(n)
(cadena de longitud variable).TEXT
(texto largo).
- Fecha y hora:
DATE
(fecha).TIME
(hora).DATETIME
oTIMESTAMP
(fecha y hora).
- Booleanos:
BOOLEAN
(valores lógicos: TRUE o FALSE).
Estos tipos de datos permiten estructurar correctamente la información según su naturaleza.
Clave primaria
La clave primaria (PRIMARY KEY) es una restricción que se aplica a un campo o conjunto de campos en una tabla para garantizar que cada registro sea único e irrepetible. Sus principales características son:
- No permite valores nulos.
- No permite duplicados.
- Identifica de forma exclusiva cada fila en la tabla.
Ejemplo:
CREATE TABLE Estudiantes (
idEstudiante INT PRIMARY KEY,
nombre VARCHAR(50)
);
Aquí idEstudiante
es la clave primaria.
Clave foránea
La clave foránea (FOREIGN KEY) es una restricción que establece una relación entre dos tablas, indicando que el valor de un campo en una tabla debe coincidir con un valor existente en la clave primaria de otra tabla. Esto asegura la integridad referencial.
Ejemplo:
CREATE TABLE Inscripciones (
idInscripcion INT PRIMARY KEY,
idEstudiante INT,
FOREIGN KEY (idEstudiante) REFERENCES Estudiantes(idEstudiante)
);
En este caso, idEstudiante
en la tabla Inscripciones es clave foránea que referencia la clave primaria de Estudiantes.
Campo autoincremento
Un campo autoincremento es aquel que genera automáticamente un valor numérico consecutivo cada vez que se inserta un nuevo registro en una tabla. Es común usarlo para claves primarias.
Ejemplo:
CREATE TABLE Productos (
idProducto INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100)
);
Aquí, idProducto
se incrementa automáticamente en 1 con cada nuevo registro, sin necesidad de que el usuario lo indique.
Tipos de datos: Textos
Los tipos de datos de texto permiten almacenar cadenas de caracteres, que pueden incluir letras, números y símbolos. Los más comunes en SQL son:
- CHAR(n): Almacena una cadena de longitud fija.
- VARCHAR(n): Almacena una cadena de longitud variable.
- TEXT: Permite guardar grandes cantidades de texto.
Estos tipos son útiles para datos como nombres, direcciones, descripciones o comentarios.
Tipos de datos: Numéricos
Los tipos de datos numéricos permiten almacenar valores enteros o decimales. Los principales son:
- INT: Números enteros.
- SMALLINT, BIGINT: Variantes de enteros pequeños o grandes.
- DECIMAL(p,s) o NUMERIC(p,s): Números exactos con precisión y escala.
- FLOAT, REAL, DOUBLE: Números de punto flotante (aproximados).
Se usan para manejar cantidades, precios, identificadores y operaciones matemáticas.
Tipos de datos: Fecha y hora
Los tipos de datos de fecha y hora permiten almacenar información cronológica. Los más comunes son:
- DATE: Almacena solo la fecha (año, mes y día).
- TIME: Almacena la hora (hora, minutos, segundos).
- DATETIME o TIMESTAMP: Guardan fecha y hora en un solo campo.
Estos tipos son fundamentales para registrar eventos, transacciones y seguimientos temporales.
Valores por defecto
Un valor por defecto (DEFAULT) es un valor asignado automáticamente a un campo cuando no se proporciona un dato explícito en una inserción. Esto garantiza que el campo siempre tenga un valor válido.
Ejemplo:
CREATE TABLE Productos (
idProducto INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50),
stock INT DEFAULT 0
);
Si no se indica el valor de stock
, automáticamente se insertará 0.
Valores inválidos
Un valor inválido es aquel que no cumple con las restricciones establecidas para un campo de una tabla. Pueden ser:
- Introducir un dato con tipo de dato incorrecto (ejemplo: texto en un campo numérico).
- Insertar un valor nulo en un campo definido como
NOT NULL
. - Repetir un valor en un campo definido como
UNIQUE
. - Ingresar una fecha inexistente (ejemplo: 30 de febrero).
El sistema gestor de bases de datos rechazará los valores inválidos para mantener la integridad de la información.
SELECT
El comando SELECT en SQL se utiliza para consultar y recuperar datos almacenados en una o varias tablas de una base de datos. Permite especificar qué columnas se desean mostrar y aplicar filtros, ordenamientos o combinaciones con otras tablas. Es la instrucción más usada en SQL, y su sintaxis básica es:
SELECT columna1, columna2 FROM tabla;
INSERT INTO
El comando INSERT INTO sirve para agregar nuevos registros en una tabla. Puede insertar valores en todas las columnas de la tabla o solo en las especificadas. Su sintaxis básica es:
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
UPDATE
El comando UPDATE permite modificar los valores existentes en uno o varios registros de una tabla. Se debe utilizar junto con la cláusula WHERE para especificar qué filas actualizar. Sintaxis:
UPDATE tabla SET columna1 = valor1 WHERE condición;
DELETE
El comando DELETE elimina registros de una tabla. Puede borrar uno, varios o todos los registros, dependiendo del uso de la cláusula WHERE. Su sintaxis es:
DELETE FROM tabla WHERE condición;
WHERE
La cláusula WHERE se emplea para establecer condiciones que deben cumplir los registros en operaciones como SELECT, UPDATE o DELETE. Permite filtrar resultados de acuerdo con valores o expresiones lógicas. Ejemplo:
SELECT * FROM tabla WHERE columna = 'valor';
LIMIT, OR, AND, NOT
- LIMIT: restringe el número de filas que devuelve una consulta. Ejemplo:
SELECT * FROM tabla LIMIT 5;
- OR: se usa en condiciones lógicas para indicar que basta con que se cumpla al menos una condición.
- AND: requiere que todas las condiciones especificadas sean verdaderas para que un registro sea válido.
- NOT: invierte el resultado de una condición, devolviendo los registros que no cumplan con ella.
Operadores de comparación <, >, <>, =, >=, <=
En SQL, los operadores de comparación se utilizan en condiciones (principalmente en la cláusula WHERE) para comparar valores:
<
(menor que) → devuelve verdadero si el valor de la izquierda es menor que el de la derecha.>
(mayor que) → devuelve verdadero si el valor de la izquierda es mayor que el de la derecha.<>
(distinto de) → devuelve verdadero si los valores son diferentes.=
(igual) → devuelve verdadero si los valores son idénticos.>=
(mayor o igual) → devuelve verdadero si el valor es mayor o igual al comparado.<=
(menor o igual) → devuelve verdadero si el valor es menor o igual al comparado.
ORDER BY
La cláusula ORDER BY se utiliza para ordenar los resultados de una consulta SQL de forma ascendente (ASC) o descendente (DESC) en base a una o más columnas. Por defecto, el orden es ascendente.
GROUP BY
La cláusula GROUP BY se emplea para agrupar registros que comparten un mismo valor en una o más columnas. Se suele usar junto con funciones de agregación como COUNT, SUM, AVG, MAX, MIN para obtener resúmenes de datos.
JOIN
La palabra clave JOIN se utiliza para combinar registros de dos o más tablas basadas en una condición de relación. Permite unir filas de diferentes tablas que comparten valores comunes.
INNER JOIN – STRAIGHT JOIN
- INNER JOIN devuelve solo las filas que tienen coincidencias en ambas tablas. Es el tipo de unión más común.
- STRAIGHT JOIN funciona como un INNER JOIN, pero obliga al optimizador de consultas a leer las tablas en el orden en que aparecen en la consulta, útil para optimización.
LEFT JOIN
Un LEFT JOIN devuelve todos los registros de la tabla de la izquierda y los registros coincidentes de la tabla de la derecha. Si no hay coincidencias en la derecha, se muestran valores NULL.
RIGHT JOIN
Un RIGHT JOIN devuelve todos los registros de la tabla de la derecha y los registros coincidentes de la tabla de la izquierda. Si no hay coincidencias en la izquierda, se muestran valores NULL.
NATURAL JOIN
Un NATURAL JOIN combina tablas basándose en columnas con el mismo nombre y tipo de datos en ambas tablas, sin necesidad de especificar la condición de unión manualmente.
CROSS JOIN
Un CROSS JOIN devuelve el producto cartesiano de dos tablas, es decir, todas las combinaciones posibles de registros entre ambas tablas. Si una tabla tiene 5 registros y la otra 4, el resultado tendrá 20 filas.
El operador LIKE en SQL se utiliza para buscar patrones específicos dentro de los valores de un campo de tipo texto. Permite el uso de comodines como %
(cualquier número de caracteres) y _
(un solo carácter). Ejemplo:
SELECT * FROM clientes WHERE nombre LIKE 'A%';
Devuelve todos los clientes cuyos nombres empiezan con «A».
NOT LIKE
El operador NOT LIKE realiza la acción contraria a LIKE: excluye los registros que coincidan con un patrón específico.
Ejemplo:
SELECT * FROM clientes WHERE nombre NOT LIKE 'A%';
Devuelve todos los clientes cuyos nombres no empiezan con «A».
DISTINCT
La palabra clave DISTINCT se utiliza para eliminar valores duplicados en los resultados de una consulta.
Ejemplo:
SELECT DISTINCT ciudad FROM clientes;
Devuelve una lista única de ciudades sin repeticiones.
COUNT
La función COUNT devuelve el número de filas que cumplen una condición determinada o el total de filas en una tabla.
Ejemplo:
SELECT COUNT(*) FROM pedidos;
Devuelve la cantidad total de registros en la tabla pedidos.
SUM
La función SUM calcula la suma de todos los valores numéricos de una columna.
Ejemplo:
SELECT SUM(total) FROM pedidos;
Devuelve la suma de los importes en la columna total.
MAX
La función MAX devuelve el valor máximo dentro de una columna numérica o alfabética.
Ejemplo:
SELECT MAX(precio) FROM productos;
Devuelve el precio más alto de la tabla productos.
MIN
La función MIN devuelve el valor mínimo dentro de una columna numérica o alfabética.
Ejemplo:
SELECT MIN(precio) FROM productos;
Devuelve el precio más bajo de la tabla productos.
AVG
La función AVG calcula el valor promedio de los registros en una columna numérica.
Ejemplo:
SELECT AVG(edad) FROM empleados;
Devuelve el promedio de edad de los empleados.
RAND
La función RAND genera un número aleatorio entre 0 y 1, o un número entero aleatorio si se acompaña de un parámetro.
Ejemplo:
SELECT RAND();
Devuelve un número decimal aleatorio entre 0 y 1.
El operador LIKE en SQL se utiliza para buscar patrones específicos dentro de los valores de un campo de tipo texto. Permite el uso de comodines como %
(cualquier número de caracteres) y _
(un solo carácter). Ejemplo:
SELECT * FROM clientes WHERE nombre LIKE 'A%';
Devuelve todos los clientes cuyos nombres empiezan con «A».
NOT LIKE
El operador NOT LIKE realiza la acción contraria a LIKE: excluye los registros que coincidan con un patrón específico.
Ejemplo:
SELECT * FROM clientes WHERE nombre NOT LIKE 'A%';
Devuelve todos los clientes cuyos nombres no empiezan con «A».
DISTINCT
La palabra clave DISTINCT se utiliza para eliminar valores duplicados en los resultados de una consulta.
Ejemplo:
SELECT DISTINCT ciudad FROM clientes;
Devuelve una lista única de ciudades sin repeticiones.
COUNT
La función COUNT devuelve el número de filas que cumplen una condición determinada o el total de filas en una tabla.
Ejemplo:
SELECT COUNT(*) FROM pedidos;
Devuelve la cantidad total de registros en la tabla pedidos.
SUM
La función SUM calcula la suma de todos los valores numéricos de una columna.
Ejemplo:
SELECT SUM(total) FROM pedidos;
Devuelve la suma de los importes en la columna total.
MAX
La función MAX devuelve el valor máximo dentro de una columna numérica o alfabética.
Ejemplo:
SELECT MAX(precio) FROM productos;
Devuelve el precio más alto de la tabla productos.
MIN
La función MIN devuelve el valor mínimo dentro de una columna numérica o alfabética.
Ejemplo:
SELECT MIN(precio) FROM productos;
Devuelve el precio más bajo de la tabla productos.
AVG
La función AVG calcula el valor promedio de los registros en una columna numérica.
Ejemplo:
SELECT AVG(edad) FROM empleados;
Devuelve el promedio de edad de los empleados.
RAND
La función RAND genera un número aleatorio entre 0 y 1, o un número entero aleatorio si se acompaña de un parámetro.
Ejemplo:
SELECT RAND();
Devuelve un número decimal aleatorio entre 0 y 1.
Alias
Un alias en SQL es un nombre alternativo asignado a una columna o tabla en una consulta, con el fin de simplificar su lectura o hacer más comprensible el resultado. Se utiliza con la palabra clave AS
.
Ejemplo:
SELECT nombre AS cliente, edad AS años FROM usuarios;
Clave primaria compuesta
Una clave primaria compuesta es una clave formada por dos o más columnas que, en conjunto, identifican de manera única cada registro de la tabla. Se utiliza cuando una sola columna no es suficiente para garantizar la unicidad.
Ejemplo:
PRIMARY KEY (id_pedido, id_producto)
Índice de una tabla
Un índice es una estructura que mejora la velocidad de las consultas al permitir acceder a los datos más rápidamente. Se crea sobre una o varias columnas.
Índice de tipo PRIMARY
Es el índice que se genera automáticamente al definir una clave primaria. Garantiza la unicidad y ordenación eficiente de los registros de la tabla.
Índice común (INDEX)
Es un índice estándar que acelera la búsqueda de registros en una tabla, pero no impide valores duplicados ni nulos.
Índice único (UNIQUE)
Es un índice que asegura que los valores en una columna o conjunto de columnas sean únicos. A diferencia de PRIMARY, permite valores nulos (dependiendo del SGBD).
Eliminación de Índice (DROP INDEX)
La instrucción DROP INDEX se utiliza para eliminar un índice existente en una tabla, ya sea porque no se usa o porque afecta el rendimiento.
CREATE INSERT
Es la combinación de crear una tabla con CREATE TABLE e insertar registros en ella con INSERT INTO.
Ejemplo:
CREATE TABLE clientes (id INT, nombre VARCHAR(50));
INSERT INTO clientes VALUES (1, 'Juan');
CREATE INSERT JOIN
Es el uso de CREATE TABLE junto con una inserción (INSERT INTO … SELECT … JOIN …
) que aprovecha una consulta con JOIN para insertar registros en una nueva o existente tabla.
UPDATE SELECT
Es una instrucción que permite actualizar registros utilizando resultados obtenidos desde una consulta SELECT.
Ejemplo:
UPDATE empleados
SET salario = (SELECT AVG(salario) FROM empleados)
WHERE puesto = 'Analista';
UPDATE JOIN
Permite actualizar registros en una tabla basándose en la relación (JOIN) con otra tabla.
Ejemplo:
UPDATE pedidos p
JOIN clientes c ON p.id_cliente = c.id
SET p.estado = 'Confirmado'
WHERE c.activo = 1;
DELETE JOIN
Se utiliza para eliminar registros de una tabla que cumplen condiciones establecidas en una relación (JOIN) con otra tabla.
Ejemplo:
DELETE p
FROM pedidos p
JOIN clientes c ON p.id_cliente = c.id
WHERE c.activo = 0;