Guía completa de SQL: Funciones, cursores, índices y más

¿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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.