Fundamentos de SQL y PL/SQL: consultas, triggers, procedimientos y funciones

Informática y TelecomunicacionesActualizado el 2,75 KB

Resumen

El documento repasa las sentencias básicas de consulta SQL (SELECT, WHERE, ORDER BY, GROUP BY y HAVING) con ejemplos. Después explica en PL/SQL qué son los triggers o disparadores, los procedimientos y las funciones, junto con su estructura básica. Sirve como guía rápida para entender cómo filtrar, agrupar y automatizar operaciones sobre bases de datos.

Puntos clave

  • SELECT muestra datos de tablas, WHERE filtra registros y ORDER BY ordena por un campo (alfabéticamente por defecto).
  • GROUP BY agrupa registros y HAVING filtra sobre grupos ya formados, mientras que WHERE filtra filas antes de agrupar.
  • Un trigger es un bloque de código que se ejecuta automáticamente ante un evento (INSERT, UPDATE o DELETE) sobre una tabla.
  • Los triggers pueden ser BEFORE, AFTER o INSTEAD OF, y a nivel de sentencia o de fila (FOR EACH ROW).
  • Los procedimientos y funciones son bloques PL/SQL con nombre que pueden recibir parámetros y ser invocados desde distintos entornos.
  • La diferencia principal entre procedimiento y función es que la función devuelve un valor mediante la cláusula RETURN.

Ponte a prueba

Sentencias y Comandos SQL

Consultas y Filtros de Datos

  • SELECT: Hace consultas para mostrar tablas o datos.
  • WHERE: Especificamos cuándo queremos mostrar algo en específico. Ejemplo: WHERE CompanyName LIKE 'B%' (que sea igual o empiece por B).
  • ORDER BY: Lo ordena por algún campo que yo especifique; se ordena alfabéticamente por defecto. Ejemplo: ORDER BY ContactName.
  • GROUP BY: Permite agrupar y seleccionar registros. Ejemplo: GROUP BY SupplierID.
  • HAVING: Nos permite hacer filtros en bases de datos que ya están agrupados.

Ejemplo de consulta con agrupamiento:

SELECT OrderID, COUNT(OrderID) as Cantidad
FROM [Order Details]
GROUP BY OrderID
HAVING COUNT(OrderID) > 2

Programación en PL/SQL

Los Triggers (Disparadores)

Es un bloque de código que se ejecuta automáticamente cuando ocurre algún evento (como insertar, actualizar o eliminar) sobre una tabla.

Estructura de un Trigger:

CREATE OR REPLACE TRIGGER NOMBREDISPARADOR
  MOMENTO -- before, after o instead of
  EVENTO -- insert, update o delete
  OF CAMPOS -- solo para update
  ON NOMBRETABLA
  NIVEL -- puede ser a nivel de sentencia (statement) o de fila (for each row)
  WHEN CONDICION -- opcional
BEGIN
  CUERPO DEL DISPARADOR -- sentencias
END NOMBREDISPARADOR;

Los Procedimientos

Los procedimientos o funciones son bloques PL/SQL con nombre, que pueden recibir parámetros y pueden ser invocados desde distintos entornos: SQL*PLUS, Oracle*Forms, desde otros procedimientos y funciones, y desde otras herramientas Oracle y aplicaciones.

Los procedimientos y funciones llevan a cabo tareas específicas, y su mayor diferencia radica en que las funciones devuelven un valor.

Estructura de un Procedimiento:

CREATE [OR REPLACE] PROCEDURE [esquema].nombre-procedimiento
(nombre-parámetro {IN | OUT | IN OUT} tipo de dato, ...) {IS | AS}
  Declaración de variables;
  Declaración de constantes;
  Declaración de cursores;
BEGIN
  Cuerpo del subprograma PL/SQL;
EXCEPTION
  Bloque de excepciones PL/SQL;
END;

Las Funciones

Son bloques de código que permiten agrupar y organizar sentencias SQL que se ejecutan al invocar la función. Contiene una cláusula RETURN.

Estructura de una Función:

CREATE OR REPLACE FUNCTION NOMBREFUNCION(PARAMETRO1 TIPODATO)
  RETURN TIPODEDATO IS
  DECLARACION DE VARIABLES
BEGIN
  ACCIONES;
  RETURN VALOR;
END;

Descargar

PDF Word HTML

Preguntas frecuentes

¿Cuál es la diferencia entre WHERE y HAVING en SQL?

WHERE filtra registros individuales antes de agrupar, mientras que HAVING filtra grupos ya agrupados con GROUP BY. Por ejemplo, HAVING COUNT(OrderID) > 2 solo muestra los grupos con más de dos elementos.

¿Qué es un trigger en PL/SQL?

Un trigger es un bloque de código que se ejecuta automáticamente cuando ocurre un evento como insertar, actualizar o eliminar sobre una tabla. Se define con CREATE OR REPLACE TRIGGER.

¿En qué se diferencian un procedimiento y una función?

Ambos son bloques PL/SQL con nombre que realizan tareas específicas y pueden recibir parámetros. La función, a diferencia del procedimiento, devuelve un valor mediante la cláusula RETURN.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué cláusula se utiliza para filtrar grupos después de aplicar GROUP BY?
2. ¿Qué hace por defecto ORDER BY?
3. ¿Cuándo se ejecuta un trigger?
4. ¿Cuál es la principal diferencia entre una función y un procedimiento?
5. ¿Qué significa WHERE CompanyName LIKE 'B%'?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.