Fundamentos y operaciones avanzadas de SQL
En este módulo aprenderás los conceptos clave que sustentan las consultas SQL más comunes y avanzadas. Cada sección está diseñada para responder preguntas típicas de exámenes y entrevistas,…

En una tabla con una columna "Age" definida como NOT NULL, ¿qué ocurre si intentas insertar un registro sin especificar "Age"?
Si deseas obtener la lista de países únicos de las tablas "Customers" y "Suppliers", ¿qué instrucción SQL garantiza que los valores duplicados se eliminen automáticamente?
¿Cuál es el efecto de usar la función COALESCE(InOrder, 0) en una expresión de cálculo de precios?
En una consulta que usa GROUP BY con la función COUNT(*), ¿qué filas se cuentan cuando existen valores NULL en la columna agrupada?
¿Qué sentencia SQL eliminaría únicamente los clientes cuyo país sea 'Germany' sin afectar a la tabla completa?
Al crear una vista que muestra los clientes de Brasil, ¿qué ventaja principal tiene respecto a una tabla física con los mismos datos?
Si una tabla tiene una columna "Email" con una restricción UNIQUE, ¿qué ocurre al intentar insertar dos filas con el mismo correo electrónico?
¿Cuál es la diferencia entre INNER JOIN y LEFT JOIN al combinar las tablas "Orders" y "Customers"?
En una consulta parametrizada para MySQL, ¿qué símbolo se utiliza como marcador de posición para los valores de los parámetros?
Fundamentos y operaciones avanzadas de SQL
En este módulo aprenderás los conceptos clave que sustentan las consultas SQL más comunes y avanzadas. Cada sección está diseñada para responder preguntas típicas de exámenes y entrevistas, y está optimizada para buscadores mediante el uso de palabras clave como "operadores BETWEEN", "restricciones NOT NULL", "UNION", "COALESCE", "GROUP BY" y "vistas".
1. Operadores de rango: BETWEEN y NOT BETWEEN
El operador BETWEEN permite filtrar filas cuyo valor se encuentre dentro de un rango inclusive. Su sintaxis básica es:
SELECT * FROM tabla WHERE columna BETWEEN valor_inicial AND valor_final;
Por el contrario, NOT BETWEEN excluye ese rango:
SELECT * FROM tabla WHERE columna NOT BETWEEN valor_inicial AND valor_final;
Ejemplo práctico:
- Para obtener empleados con salarios entre 3000 y 5000:
WHERE salario BETWEEN 3000 AND 5000. - Para excluir esos salarios:
WHERE salario NOT BETWEEN 3000 AND 5000.
Recuerda que el rango es inclusive, es decir, los valores límite también se consideran.
2. Restricciones NOT NULL y manejo de valores faltantes
Una columna declarada NOT NULL obliga a que cada fila contenga un valor válido. Si intentas insertar un registro sin especificar esa columna, el motor de base de datos genera un error de restricción y la inserción falla.
- Ejemplo:
CREATE TABLE Personas (id INT PRIMARY KEY, Age INT NOT NULL); - Intento de inserción errónea:
INSERT INTO Personas (id) VALUES (1);→ ERROR: columna "Age" no puede ser NULL.
Para evitar el error, puedes:
- Proveer un valor explícito.
- Definir un valor por defecto al crear la tabla (
Age INT NOT NULL DEFAULT 0). - Utilizar funciones como
COALESCEen la inserción.
3. Eliminación de duplicados con UNION
Cuando necesitas combinar resultados de dos consultas y deseas que los valores repetidos desaparezcan, la cláusula UNION es la solución adecuada. A diferencia de UNION ALL, que conserva todas las filas, UNION elimina automáticamente los duplicados.
- Ejemplo:
SELECT Country FROM Customers UNION SELECT Country FROM Suppliers;
Esta instrucción devuelve la lista de países únicos presentes en ambas tablas.
4. Función COALESCE: sustitución de valores NULL
La función COALESCE devuelve el primer argumento no nulo de una lista. Es útil para evitar que los NULL interrumpan cálculos.
- Sintaxis:
COALESCE(valor1, valor2, ..., valorN) - Ejemplo en cálculo de precios:
SELECT Precio * COALESCE(InOrder, 0) FROM Productos;
En este caso, si InOrder es NULL, se reemplaza por 0, evitando que el resultado total sea NULL.
5. Agrupamiento y conteo con GROUP BY y COUNT(*)
La cláusula GROUP BY agrupa filas que comparten valores en una o más columnas. La función COUNT(*) cuenta todas las filas del grupo, incluidos los NULL en la columna de agrupación.
- Ejemplo:
SELECT Categoria, COUNT(*) FROM Productos GROUP BY Categoria;
Incluso si la columna Categoria contiene NULL, esas filas se incluyen en el recuento del grupo NULL.
6. Eliminación selectiva de registros: sentencia DELETE
Para borrar solo los registros que cumplen una condición, se utiliza DELETE FROM con una cláusula WHERE. No se debe confundir con DROP TABLE (elimina la tabla completa) ni con TRUNCATE TABLE (elimina todas las filas).
- Ejemplo correcto:
DELETE FROM Customers WHERE Country = 'Germany';
Esta instrucción elimina únicamente los clientes cuyo país sea Alemania, manteniendo intacta la estructura de la tabla.
7. Vistas vs. tablas físicas
Una vista es una consulta almacenada que se comporta como una tabla virtual. La ventaja principal es que siempre muestra datos en tiempo real, sin almacenar copias físicas.
- Creación de vista de clientes de Brasil:
CREATE VIEW ClientesBrasil AS SELECT * FROM Customers WHERE Country = 'Brazil'; - Al consultar
SELECT * FROM ClientesBrasil;obtienes la información actualizada al instante.
Las vistas no ocupan espacio adicional y simplifican el mantenimiento, aunque no pueden contener índices propios (a menos que sean vistas materializadas, una característica avanzada).
8. Restricción UNIQUE en columnas
La cláusula UNIQUE garantiza que los valores de una columna sean exclusivos en toda la tabla. Si intentas insertar un registro con un valor ya existente, la operación falla y se genera un error de restricción de unicidad.
- Definición:
CREATE TABLE Usuarios (id INT PRIMARY KEY, Email VARCHAR(255) UNIQUE); - Intento de duplicado:
INSERT INTO Usuarios (id, Email) VALUES (2, '[email protected]');→ ERROR: violación de la restricción UNIQUE.
Esta restricción es esencial para campos como correos electrónicos, nombres de usuario o cualquier dato que deba ser único.
Resumen de conceptos clave
- BETWEEN vs NOT BETWEEN: rango inclusivo vs exclusión del rango.
- NOT NULL: obliga a proporcionar un valor; la inserción sin él genera error.
- UNION: combina resultados y elimina duplicados automáticamente.
- COALESCE: reemplaza
NULLpor un valor predeterminado en expresiones. - COUNT(*) con GROUP BY: cuenta todas las filas, incluidos los
NULLen la columna agrupada. - DELETE FROM … WHERE: elimina filas específicas sin afectar la tabla completa.
- Vistas: proporcionan datos en tiempo real sin ocupar espacio adicional.
- UNIQUE: garantiza la unicidad de los valores y previene duplicados.
Dominar estos conceptos te permitirá diseñar consultas SQL eficientes, mantener la integridad de los datos y optimizar el rendimiento de tus bases de datos relacionales.
