¿Se puede crear una función UDF sin parámetro de entrada? Pon un ejemplo.
Sí, se puede crear una función UDF (User Defined Function) sin parámetro de entrada.
SQL
CREATE FUNCTION getCurrentDate()
RETURNS DATE
BEGIN
RETURN CURRENT_DATE;
END;
Consultas SQL avanzadas
En un DELETE, ¿para qué sirven las cláusulas CASCADE, SET NULL y RESTRICT?
- CASCADE: Elimina automáticamente las filas de las tablas relacionadas.
- SET NULL: Establece los valores de las columnas relacionadas a NULL.
- RESTRICT: Impide la eliminación si existen filas relacionadas, lanzando un error.
¿Qué es un cursor?
Un cursor es un mecanismo en bases de datos relacionales que permite recorrer y manipular filas de un conjunto de resultados de una consulta SQL, una a una. Los cursores se utilizan principalmente en procedimientos almacenados para manejar operaciones complejas fila por fila, donde es necesario realizar operaciones que no pueden ser fácilmente realizadas con una sola instrucción SQL.
¿Qué es un índice FULLTEXT?
Un índice FULLTEXT es un tipo de índice utilizado en bases de datos para realizar búsquedas de texto completo en columnas de tipo texto (como VARCHAR
, TEXT
). A diferencia de los índices normales que buscan coincidencias exactas, los índices FULLTEXT permiten buscar palabras o frases dentro del texto, proporcionando capacidades avanzadas de búsqueda como el ranking de relevancia de los resultados, búsquedas de frases y búsquedas de palabras clave.
¿Se pueden crear subconsultas dentro de una consulta? Pon un ejemplo.
Sí, se pueden crear subconsultas dentro de una consulta.
SQL
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
Explicación y codificación de CASE e IF en SQL
- CASE: La instrucción CASE se utiliza para evaluar una lista de condiciones y retornar una de varias posibles expresiones. Es similar a la estructura switch en otros lenguajes de programación.
SQL
SELECT
employee_id,
first_name,
last_name,
CASE
WHEN salary < 3000 THEN 'Low'
WHEN salary BETWEEN 3000 AND 6000 THEN 'Medium'
ELSE 'High'
END AS salary_level
FROM employees;
- IF: La función IF es utilizada para realizar una evaluación condicional simple. Retorna un valor si la condición es verdadera y otro valor si la condición es falsa.
SQL
SELECT
employee_id,
first_name,
last_name,
IF(salary < 3000, 'Low', 'High') AS salary_level
FROM employees;
Utilizar COALESCE en una función IF NULL
La función COALESCE se utiliza para retornar el primer valor no nulo de una lista de expresiones. Es muy útil para manejar valores nulos.
SQL
SELECT
employee_id,
first_name,
COALESCE(middle_name, 'N/A') AS middle_name,
last_name
FROM employees;
Explicación y ejemplo de CROSS JOIN
- CROSS JOIN: El CROSS JOIN retorna el producto cartesiano de dos tablas, es decir, combina cada fila de la primera tabla con cada fila de la segunda tabla.
SQL
SELECT
A.department_name,
B.employee_name
FROM
departments A
CROSS JOIN
employees B;
Este ejemplo combina todas las filas de la tabla departments con todas las filas de la tabla employees.
Variables de usuario y eventos en SQL
Restricciones de una variable de usuario
En SQL, las variables de usuario se declaran utilizando el símbolo @. Las restricciones principales son:
- Deben ser precedidas por el símbolo @.
- No se necesita declaración previa, se crean al ser asignadas por primera vez.
- Son específicas de la sesión, lo que significa que son visibles solo dentro de la sesión de conexión actual.
SQL
SET @variable := 'Hello, World!';
SELECT @variable;
Configuración de eventos en el servidor
- Eventos: Los eventos son tareas programadas que se ejecutan en el servidor de base de datos en tiempos específicos.
Para configurar eventos, primero se debe habilitar el event_scheduler.
SQL
SET GLOBAL event_scheduler = ON;
CREATE EVENT my_event
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN
INSERT INTO log_table (event_time) VALUES (NOW());
END;
Tipos de JOIN en SQL
Diferencia de JOINs
- INNER JOIN: Retorna filas cuando hay coincidencias en ambas tablas.
SQL
SELECT * FROM employees E INNER JOIN departments D ON E.department_id = D.department_id;
- LEFT JOIN (o LEFT OUTER JOIN): Retorna todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. Si no hay coincidencia, retorna NULL para las columnas de la tabla de la derecha.
SQL
SELECT * FROM employees E LEFT JOIN departments D ON E.department_id = D.department_id;
- RIGHT JOIN (o RIGHT OUTER JOIN): Retorna todas las filas de la tabla de la derecha y las filas coincidentes de la tabla de la izquierda. Si no hay coincidencia, retorna NULL para las columnas de la tabla de la izquierda.
SQL
SELECT * FROM employees E RIGHT JOIN departments D ON E.department_id = D.department_id;
- FULL JOIN (o FULL OUTER JOIN): Retorna todas las filas cuando hay coincidencias en una u otra tabla. (No está soportado en todas las bases de datos).
SQL
SELECT * FROM employees E FULL JOIN departments D ON E.department_id = D.department_id;
Uso de prepared statements en SQL
Uso de prepared statements
Los prepared statements se utilizan para ejecutar la misma instrucción SQL repetidamente con alta eficiencia. Permiten evitar la repetición del análisis sintáctico de la instrucción SQL y ayudan a prevenir ataques de inyección SQL.
SQL
PREPARE stmt FROM 'SELECT * FROM employees WHERE department_id = ?';
SET @dept_id = 1;
EXECUTE stmt USING @dept_id;
DEALLOCATE PREPARE stmt;
En este ejemplo, se prepara una instrucción SQL con un parámetro (?), se asigna un valor a ese parámetro y se ejecuta la instrucción preparada.