Ejercicios y Actividades de Consultas

Guía Completa de Consultas SQL Básicas

Esta guía cubre los conceptos fundamentales de SQL para consultas básicas, manipulación de datos, funciones agregadas y consultas multitabla.

📐 1. Consultas SQL Básicas

1. Consultas SQL Básicas

1.1. Estructura Básica SELECT

La sentencia SELECT es la base de todas las consultas SQL. Permite recuperar datos de una o más tablas.

Ejemplo 1.1: Seleccionar todos los datos de una tabla
SELECT * FROM Clientes;
Resultado: Devuelve todos los registros con todas las columnas de la tabla Clientes.
Ejemplo 1.2: Seleccionar columnas específicas
SELECT nombre, apellido, email FROM Clientes;
Resultado: Devuelve solo las columnas nombre, apellido y email de todos los clientes.

1.2. Filtrado con WHERE

La cláusula WHERE permite filtrar registros según condiciones específicas.

Ejemplo 1.3: Filtrado básico
SELECT * FROM Clientes WHERE nombre = 'Juan';
Resultado: Devuelve solo los clientes cuyo nombre es "Juan".
Ejemplo 1.4: Operadores de comparación
SELECT * FROM Clientes WHERE fecha_registro > '2024-01-01';
Resultado: Clientes registrados después del 1 de enero de 2024.

1.3. Ordenación con ORDER BY

La cláusula ORDER BY ordena los resultados según una o más columnas.

Ejemplo 1.5: Orden ascendente
SELECT * FROM Clientes ORDER BY apellido ASC;
Resultado: Clientes ordenados por apellido de la A a la Z.
Ejemplo 1.6: Orden descendente
SELECT * FROM Clientes ORDER BY fecha_registro DESC;
Resultado: Clientes ordenados por fecha de registro (más recientes primero).

1.4. Agrupación con GROUP BY

La cláusula GROUP BY agrupa filas que tienen los mismos valores en columnas especificadas.

Ejemplo 1.7: Agrupación básica
SELECT nombre, COUNT(*) AS cantidad
FROM Clientes
GROUP BY nombre;
Resultado: Cuenta cuántos clientes hay con cada nombre.
📐 2. Manipulación de Datos

2. Manipulación de Datos

2.1. Inserción de datos (INSERT)

La sentencia INSERT añade nuevos registros a una tabla.

Ejemplo 2.1: Inserción básica
INSERT INTO Clientes (nombre, apellido, email, fecha_registro)
VALUES ('Ana', 'García', 'ana@example.com', '2024-05-20');
Resultado: Añade un nuevo cliente a la tabla.
Ejemplo 2.2: Inserción múltiple
INSERT INTO Clientes (nombre, apellido, email, fecha_registro)
VALUES 
('Carlos', 'López', 'carlos@example.com', '2024-05-21'),
('María', 'Martínez', 'maria@example.com', '2024-05-22');
Resultado: Añade dos nuevos clientes en una sola operación.

2.2. Actualización de datos (UPDATE)

La sentencia UPDATE modifica registros existentes.

Ejemplo 2.3: Actualización básica
UPDATE Clientes 
SET email = 'nuevoemail@example.com' 
WHERE id_cliente = 1;
Resultado: Cambia el email del cliente con id_cliente = 1.

¡Precaución! Sin la cláusula WHERE, UPDATE afectará a todos los registros de la tabla.

2.3. Eliminación de datos (DELETE)

La sentencia DELETE elimina registros de una tabla.

Ejemplo 2.4: Eliminación básica
DELETE FROM Clientes 
WHERE id_cliente = 5;
Resultado: Elimina el cliente con id_cliente = 5.

¡Precaución! Sin la cláusula WHERE, DELETE eliminará todos los registros de la tabla.

📐 3. Funciones Agregadas

3. Funciones Agregadas

3.1. Funciones básicas

Ejemplo 3.1: COUNT - Contar registros
SELECT COUNT(*) AS total_clientes 
FROM Clientes;
Resultado: Devuelve el número total de clientes.
Ejemplo 3.2: SUM - Sumar valores
SELECT SUM(total) AS ventas_totales 
FROM Pedidos;
Resultado: Suma de todos los valores en la columna "total" de la tabla Pedidos.
Ejemplo 3.3: AVG - Calcular promedio
SELECT AVG(total) AS promedio_pedidos 
FROM Pedidos;
Resultado: Valor promedio de los pedidos.
Ejemplo 3.4: MAX/MIN - Valores extremos
SELECT 
    MAX(total) AS pedido_mas_caro,
    MIN(total) AS pedido_mas_barato
FROM Pedidos;
Resultado: Muestra el pedido con mayor y menor valor.

3.2. Funciones con GROUP BY

Ejemplo 3.5: Agrupación con funciones
SELECT 
    id_cliente,
    COUNT(*) AS total_pedidos,
    SUM(total) AS gasto_total
FROM Pedidos
GROUP BY id_cliente;
Resultado: Muestra cuántos pedidos y cuánto ha gastado cada cliente.
📐 4. Consultas Multitabla-JOIN

4. Consultas Multitabla (JOIN)

4.1. Tipos de JOIN

INNER JOIN

Devuelve solo los registros que tienen coincidencias en ambas tablas.

Ejemplo 4.1: INNER JOIN básico
SELECT c.nombre, c.apellido, p.fecha_pedido, p.total
FROM Clientes c
INNER JOIN Pedidos p ON c.id_cliente = p.id_cliente;
Resultado: Muestra clientes con sus pedidos (solo clientes que tienen pedidos).

LEFT JOIN

Devuelve todos los registros de la tabla izquierda (FROM) y los coincidentes de la derecha (JOIN).

Ejemplo 4.2: LEFT JOIN
SELECT c.nombre, c.apellido, p.fecha_pedido, p.total
FROM Clientes c
LEFT JOIN Pedidos p ON c.id_cliente = p.id_cliente;
Resultado: Muestra todos los clientes, incluso los que no tienen pedidos (con NULL en los campos de pedidos).

FULL JOIN

Devuelve todos los registros cuando hay coincidencia en cualquiera de las tablas.

Ejemplo 4.4: FULL JOIN
SELECT c.nombre, c.apellido, p.fecha_pedido, p.total
FROM Clientes c
FULL JOIN Pedidos p ON c.id_cliente = p.id_cliente;
Resultado: Muestra la combinación completa de clientes y pedidos.

4.2. JOIN con múltiples tablas

Ejemplo 4.5: JOIN con tres tablas
SELECT 
    c.nombre, 
    c.apellido, 
    p.fecha_pedido, 
    pr.nombre_producto,
    dp.cantidad,
    dp.precio_unitario
FROM Clientes c
INNER JOIN Pedidos p ON c.id_cliente = p.id_cliente
INNER JOIN Detalles_Pedido dp ON p.id_pedido = dp.id_pedido
INNER JOIN Productos pr ON dp.id_producto = pr.id_producto;
Resultado: Muestra información combinada de clientes, sus pedidos y los productos de cada pedido.
📐 5. Ejercicios Prácticos

5. Ejercicios Prácticos

Ejercicio 1: Consulta básica

Escribe una consulta que muestre el nombre, apellido y email de los clientes registrados en 2024, ordenados por apellido.

Ejercicio 2: Función agregada

Escribe una consulta que calcule el total gastado por cada cliente en pedidos.

Ejercicio 3: Consulta multitabla

Escribe una consulta que muestre los productos más vendidos (ordenados por cantidad total vendida).

© 2024 Guía Completa de SQL Básico

Este material es para fines educativos.

↑ Inicio de Página ↑ Volver a Contenidos

Consultas a la Base de Datos

El lenguaje SQL (Structured Query Language) es el lenguaje estándar utilizado para interactuar con bases de datos relacionales. Permite realizar operaciones como consultar, insertar, actualizar y eliminar datos. A continuación se presentan los comandos SQL más comunes, con su explicación y ejemplos prácticos.

1. SELECT

Se utiliza para recuperar datos de una o varias tablas.

Sintaxis:

SELECT columna1, columna2 FROM tabla WHERE condición;

Ejemplo:

SELECT * FROM clientes;
2. INSERT

Permite agregar nuevos registros a una tabla.

Sintaxis:

INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);

Ejemplo:

INSERT INTO clientes (nombre, email) VALUES ('Juan Pérez', 'juan@example.com');
3. UPDATE

Modifica registros existentes en una tabla.

Sintaxis:

UPDATE tabla SET columna1 = nuevo_valor1 WHERE condición;

Ejemplo:

UPDATE productos SET precio = precio * 1.10;
4. DELETE

Elimina registros de una tabla.

Sintaxis:

DELETE FROM tabla WHERE condición;

Ejemplo:

DELETE FROM clientes WHERE id = 2;
5. JOIN

Combina filas de dos o más tablas relacionadas.

Sintaxis:

SELECT columna1 FROM tabla1 JOIN tabla2 ON tabla1.columna = tabla2.columna;

Ejemplo:

SELECT pedidos.id, clientes.nombre
FROM pedidos
JOIN clientes ON pedidos.cliente_id = clientes.id;
        
6. GROUP BY

Agrupa filas con valores idénticos para operaciones agregadas.

Sintaxis:

SELECT columna, COUNT(*) FROM tabla GROUP BY columna;

Ejemplo:

SELECT pais, COUNT(*) AS total FROM clientes GROUP BY pais;
7. ORDER BY

Ordena el resultado de una consulta.

Sintaxis:

SELECT columna FROM tabla ORDER BY columna ASC|DESC;

Ejemplo:

SELECT * FROM clientes ORDER BY nombre ASC;
8. WHERE

Filtra registros según una condición.

Sintaxis:

SELECT columna FROM tabla WHERE condición;

Ejemplo:

SELECT * FROM clientes WHERE nombre = 'María';
9. LIMIT

Limita el número de filas devueltas.

Sintaxis:

SELECT columna FROM tabla LIMIT número;

Ejemplo:

SELECT * FROM productos LIMIT 10;
10. OFFSET

Permite paginar resultados junto con LIMIT.

Sintaxis:

SELECT columna FROM tabla LIMIT número OFFSET inicio;

Ejemplo:

SELECT * FROM productos LIMIT 10 OFFSET 20;
11. Copia de datos entre tablas

Permite copiar todos los datos de una tabla a otra.

Ejemplo:

INSERT INTO TablaPermanente
SELECT * FROM TablaTemporal;
        
↑ Principio de Página ↑ Volver a Contenidos

Gestión de Permisos en las Tablas de una Base de Datos SQL

En esta guía interactiva aprenderás cómo manejar los permisos de acceso y modificación en una base de datos SQL. Estos permisos permiten controlar qué usuarios pueden realizar operaciones como SELECT, INSERT, UPDATE o DELETE sobre las tablas.

1. Introducción a los Permisos

Los permisos en SQL permiten definir quién puede realizar determinadas acciones sobre las tablas o vistas de una base de datos. Se otorgan o revocan mediante los comandos GRANT y REVOKE.

2. GRANT: Otorgar Permisos

El comando GRANT se utiliza para dar permisos a un usuario o rol.

GRANT SELECT, INSERT ON empleados TO juan;

Este comando otorga los permisos SELECT e INSERT sobre la tabla empleados al usuario juan.

3. REVOKE: Revocar Permisos

El comando REVOKE elimina permisos previamente otorgados a un usuario o rol.

REVOKE INSERT ON empleados FROM juan;

Este comando revoca el permiso de INSERT en la tabla empleados al usuario juan.

4. Permisos Comunes en SQL
Permiso Descripción
SELECT Permite consultar datos de una tabla.
INSERT Permite insertar nuevos registros.
UPDATE Permite modificar registros existentes.
DELETE Permite eliminar registros.
5. Ejemplo Práctico con Usuarios

Supongamos que tenemos un usuario llamado ana y queremos otorgarle acceso de lectura a la tabla clientes.

GRANT SELECT ON clientes TO ana;

Luego, si queremos quitarle ese permiso:

REVOKE SELECT ON clientes FROM ana;
6. Diagrama Conceptual de Permisos

A continuación se muestra un esquema simple de cómo se gestionan los permisos entre usuarios y objetos:

Diagrama de permisos SQL
7. Consideraciones de Seguridad
  • Evita otorgar permisos innecesarios a usuarios.
  • Utiliza roles para agrupar permisos.
  • Haz auditoría de los permisos periódicamente.
↑ Principio de Página ↑ Volver a Contenidos

Gestión de Permisos en Bases de Datos SQL

Control y asignación de derechos de acceso a tablas y datos

Usuarios y Roles

Los usuarios son individuos o aplicaciones que acceden a la base de datos, mientras que los roles son grupos lógicos que pueden contener varios usuarios.

Ejemplo:

-- Crear un rol
CREATE ROLE lectores;

-- Asignar usuario al rol
GRANT lectores TO usuario1;

Tipos de Permisos

SELECT

Permite consultar (recuperar) datos de una tabla.

INSERT

Permite agregar nuevos registros a una tabla.

UPDATE

Permite modificar registros existentes.

DELETE

Permite eliminar registros de una tabla.

ALTER

Permite cambios en la estructura de la tabla.

CREATE

Permite crear nuevas tablas.

DROP

Permite eliminar tablas existentes.

GRANT/REVOKE

Otorgar o revocar permisos.

GRANT y REVOKE

Declaraciones SQL para otorgar y revocar permisos en una base de datos.

Ejemplo GRANT:

-- Otorgar permiso SELECT en tabla Productos
GRANT SELECT ON Productos TO usuario2;

Ejemplo REVOKE:

-- Revocar permiso DELETE
REVOKE DELETE ON Productos FROM usuario2;

GRANT OPTION

Permite que un usuario otorgue permisos a otros usuarios.

Ejemplo:

-- Otorgar permiso con capacidad de delegar
GRANT SELECT ON Clientes TO gerente WITH GRANT OPTION;

Ejemplos Prácticos

Permiso SELECT en tabla Usuarios

Otorgar permiso para consultar datos en la tabla "Usuarios":

GRANT SELECT ON db_news.Usuarios TO 'usuario1'@'localhost';

Explicación: Este comando permite al usuario "usuario1" realizar consultas (SELECT) en la tabla "Usuarios" de la base de datos "db_news" cuando se conecta desde localhost.

Permiso UPDATE en tabla Noticias

Otorgar permiso para modificar registros en la tabla "Noticias":

GRANT UPDATE ON db_news.Noticias TO 'usuario2'@'localhost';

Explicación: Con este permiso, "usuario2" puede actualizar registros existentes en la tabla "Noticias", pero no puede crear, eliminar o consultar datos (a menos que tenga otros permisos).

Permiso CREATE TABLE

Otorgar permiso para crear nuevas tablas en la base de datos:

GRANT CREATE TABLE ON db_news.* TO 'usuario3'@'localhost';

Explicación: Este permiso permite a "usuario3" crear nuevas tablas en cualquier esquema de la base de datos "db_news". El asterisco (*) indica que aplica a todos los esquemas.

Permiso con GRANT OPTION

Otorgar permiso SELECT con capacidad de delegarlo:

GRANT SELECT ON db_news.Comentarios TO 'usuario4'@'localhost' WITH GRANT OPTION;

Explicación: Además de permitir consultas en "Comentarios", "usuario4" puede otorgar el permiso SELECT a otros usuarios. Útil para delegar administración de permisos.

Permiso DELETE en tabla Categorías

Otorgar permiso para eliminar registros:

GRANT DELETE ON db_news.Categories TO 'usuario5'@'localhost';

Explicación: Este es un permiso sensible que permite a "usuario5" eliminar registros permanentemente de la tabla "Categories". Debe otorgarse con precaución.

Simulador de Permisos

Comando generado:

Seleccione opciones para generar el comando

Guía de Gestión de Permisos en Bases de Datos SQL

© 2023 - Todos los derechos reservados

↑ Principio de Página ↑ Volver a Contenidos

Actividad 2: Ejercicio Práctico de Consultas SQL (CE2.1 y CE2.2)

Resuelva los siguientes ejercicios escribiendo las consultas SQL correspondientes.

Esquema de la base de datos:
EMPLEADOS
id_empleado INT (PK)
nombre VARCHAR(50)
apellido VARCHAR(50)
fecha_contratacion DATE
salario DECIMAL(10,2)
id_departamento INT (FK)
DEPARTAMENTOS
id_departamento INT (PK)
nombre_departamento VARCHAR(50)
ubicacion VARCHAR(50)
id_gerente INT (FK)
PROYECTOS
id_proyecto INT (PK)
nombre_proyecto VARCHAR(100)
fecha_inicio DATE
fecha_fin DATE
presupuesto DECIMAL(12,2)
id_departamento INT (FK)
EMPLEADOS_PROYECTOS
id_empleado INT (PK, FK)
id_proyecto INT (PK, FK)
horas_trabajadas INT
rol VARCHAR(50)
Ejercicio 1: Consultas básicas

Escribe una consulta SQL que muestre el nombre, apellido y salario de todos los empleados que ganan más de 3000 euros, ordenados por salario de forma descendente.

Solución:
SELECT nombre, apellido, salario FROM EMPLEADOS WHERE salario > 3000 ORDER BY salario DESC;
Ejercicio 2: Joins entre tablas

Escribe una consulta SQL que muestre el nombre del empleado, nombre del departamento y ubicación para todos los empleados que trabajan en departamentos ubicados en 'Madrid'.

Solución:
SELECT e.nombre, d.nombre_departamento, d.ubicacion FROM EMPLEADOS e JOIN DEPARTAMENTOS d ON e.id_departamento = d.id_departamento WHERE d.ubicacion = 'Madrid';
Ejercicio 3: Agregación y GROUP BY

Escribe una consulta SQL que muestre el nombre de cada departamento y el número de empleados que tiene, ordenados de mayor a menor número de empleados.

Solución:
SELECT d.nombre_departamento, COUNT(e.id_empleado) AS num_empleados FROM DEPARTAMENTOS d LEFT JOIN EMPLEADOS e ON d.id_departamento = e.id_departamento GROUP BY d.nombre_departamento ORDER BY num_empleados DESC;
Ejercicio 4: Subconsultas

Escribe una consulta SQL que muestre el nombre y apellido de los empleados que trabajan en proyectos con un presupuesto superior a 100,000 euros.

Solución:
SELECT DISTINCT e.nombre, e.apellido FROM EMPLEADOS e JOIN EMPLEADOS_PROYECTOS ep ON e.id_empleado = ep.id_empleado JOIN PROYECTOS p ON ep.id_proyecto = p.id_proyecto WHERE p.presupuesto > 100000;
Ejercicio 5: Procedimientos almacenados

Escribe el código para crear un procedimiento almacenado que aumente el salario de todos los empleados de un departamento específico en un porcentaje dado. El procedimiento debe recibir como parámetros el ID del departamento y el porcentaje de aumento.

Solución:
CREATE PROCEDURE aumentar_salarios_departamento( IN dept_id INT, IN porcentaje_aumento DECIMAL(5,2) BEGIN UPDATE EMPLEADOS SET salario = salario * (1 + porcentaje_aumento / 100) WHERE id_departamento = dept_id; END;
Progreso: 0/5 ejercicios correctos
↑ Principio de Página ↑ Volver a Contenidos

Consulta de información contenida en gestores de datos

🔍 Actividad Práctica 1: Consulta básica y criterios múltiples

La base de datos db_ventas contiene una tabla clientes con los siguientes campos:

  • id_cliente (INT)
  • nombre (VARCHAR)
  • ciudad (VARCHAR)
  • saldo (DECIMAL)

Ejercicio: Redacta una consulta SQL que muestre el nombre y saldo de todos los clientes de 'Madrid' cuyo saldo sea superior a 1000€.

Solución paso a paso:

  1. Queremos seleccionar campos: nombre y saldo.
  2. La tabla es: clientes.
  3. Condiciones:
    • ciudad = 'Madrid'
    • saldo > 1000

Consulta SQL:

SELECT nombre, saldo FROM clientes WHERE ciudad = 'Madrid' AND saldo > 1000;

📊 Actividad Práctica 2: Ordenación y funciones de agregado

Dispones de una tabla pedidos en la base de datos db_ventas con los siguientes campos:

  • id_pedido (INT)
  • fecha (DATE)
  • id_cliente (INT)
  • importe (DECIMAL)

Ejercicio: Muestra el total facturado por cada cliente en el mes de marzo de 2024. Ordena los resultados de mayor a menor.

Solución paso a paso:

  1. Se requiere usar funciones de agrupamiento: SUM().
  2. Filtrar por fechas entre 2024-03-01 y 2024-03-31.
  3. Agrupar por id_cliente.
  4. Ordenar de mayor a menor por el total facturado.

Consulta SQL:

SELECT id_cliente, SUM(importe) AS total_facturado
FROM pedidos
WHERE fecha BETWEEN '2024-03-01' AND '2024-03-31'
GROUP BY id_cliente
ORDER BY total_facturado DESC;
      
↑ Principio de Página ↑ Volver a Contenidos

Guía Completa de Consultas SQL Básicas

Las sentencias DDL (Data Definition Language) permiten crear, modificar y eliminar estructuras de la base de datos.

📐 1. Sentencias de Definición de Datos (DDL)

1. Sentencias de Definición de Datos (DDL)

Las sentencias DDL (Data Definition Language) permiten crear, modificar y eliminar estructuras de la base de datos.

Principales comandos:

CREATE TABLE empleados (id INTPRIMARY KEY,nombre VARCHAR(100) NOT NULL, salario DECIMAL(10,2), departamento_id INT, FOREIGN KEY (departamento_id) REFERENCES departamentos(id) ); -- Modificar estructura de tabla ALTER TABLE empleados ADD COLUMN fecha_contratacion DATE; -- Eliminar tabla DROP TABLE empleados;

Práctica guiada:

Crea una tabla llamada productos con los siguientes campos:

  • id (entero, clave primaria)
  • nombre (cadena de hasta 100 caracteres, no nulo)
  • precio (decimal con 2 decimales)
  • stock (entero)

Añade un campo categoria (cadena de 50 caracteres) a la tabla productos.

Elimina la tabla productos que creaste anteriormente.

📐 2. Sentencias de Manipulación de Datos (DML)

2. Sentencias de Manipulación de Datos (DML)

Las sentencias DML (Data Manipulation Language) permiten insertar, modificar, eliminar y consultar datos.

Principales comandos:

-- Insertar datos INSERT INTO empleados (id, nombre, salario) VALUES (1, 'Juan Pérez', 2500.00); -- Actualizar datos UPDATE empleados SET salario = 2800.00 WHERE id = 1; -- Eliminar datos DELETE FROM empleados WHERE id = 1; -- Consultar datos SELECT nombre, salario FROM empleados WHERE salario > 2000 ORDER BY salario DESC;

Ejercicio práctico:

Dada la siguiente tabla clientes:

id nombre email fecha_registro
1 Ana Gómez ana@example.com 2023-01-15
2 Carlos Ruiz carlos@example.com 2023-02-20
  1. Inserta un nuevo cliente con ID 3, nombre "Luisa Martínez" y email "luisa@example.com"
  2. Actualiza el email de Carlos Ruiz a "carlos.ruiz@example.com"
  3. Selecciona todos los clientes registrados después del 1 de febrero de 2023
📐 3. Sentencias de Control de Privilegios (DCL)

3. Sentencias de Control de Privilegios (DCL)

Las sentencias DCL (Data Control Language) gestionan permisos y acceso a la base de datos.

Principales comandos:

-- Conceder privilegios GRANT SELECT, INSERT ON empleados TO usuario1; -- Revocar privilegios REVOKE DELETE ON empleados FROM usuario2; -- Crear rol y asignar permisos CREATE ROLE editor; GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO editor;

Escenario práctico:

Tienes una base de datos con tres usuarios:

  • admin (todos los privilegios)
  • reportes (solo lectura)
  • asistente (lectura e inserción)

Implementa los permisos necesarios para:

  1. Dar acceso completo al usuario admin
  2. Permitir solo SELECT al usuario reportes
  3. Permitir SELECT e INSERT al usuario asistente
  4. Revocar todos los permisos si un usuario abandona la empresa
📐 4. Procedimientos Almacenados

4. Procedimientos Almacenados

Los procedimientos almacenados son conjuntos de sentencias SQL almacenados en el servidor.

Ejemplo básico:

CREATE OR REPLACEPROCEDURE aumentar_salarios(porcentaje DECIMAL(5,2),depto_id INT) LANGUAGE SQL AS $$ BEGIN UPDATE empleadosSET salario = salario * (1 + porcentaje / 100)WHERE departamento_id = depto_id; COMMIT; END; $$; -- Ejecutar el procedimiento CALL aumentar_salarios(5.0, 10);

Desafío:

Crea un procedimiento almacenado llamado registrar_venta que:

  1. Acepte como parámetros: producto_id, cantidad y cliente_id
  2. Actualice el stock del producto (restando la cantidad vendida)
  3. Registre la venta en una tabla ventas
  4. Retorne el ID de la venta registrada
📐 5. Disparadores (Triggers)

5. Disparadores (Triggers)

Los triggers son procedimientos que se ejecutan automáticamente cuando ocurren eventos específicos.

Ejemplo de trigger:

-- Crear función para el trigger CREATE OR REPLACE FUNCTION registrar_cambio_salario() RETURNS TRIGGER AS $$ BEGIN IF NEW.salario <> OLD.salario THEN INSERT INTO historico_salarios ( empleado_id, salario_anterior, salario_nuevo, fecha_cambio ) VALUES ( NEW.id, OLD.salario, NEW.salario, CURRENT_TIMESTAMP ); END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; -- Crear trigger CREATE TRIGGER trg_cambio_salario BEFORE UPDATE OF salario ON empleados FOR EACH ROW EXECUTE FUNCTION registrar_cambio_salario();

Actividad:

Crea un trigger que:

  1. Se active después de insertar un nuevo producto
  2. Registre en una tabla log_productos:
    • ID del producto
    • Acción realizada ("INSERT")
    • Fecha y hora del evento
    • Usuario que realizó la acción
↑ Principio de Página ↑ Volver a Contenidos

Cuestionario: Lenguajes de consulta y extracción de datos

1. ¿Cuál es la principal función de un lenguaje de consulta?

2. ¿Cuál es el lenguaje de consulta estándar para bases de datos relacionales?

3. ¿Qué significa SQL?

4. ¿Qué lenguaje está orientado a bases de datos objeto-relacionales?

5. ¿Qué lenguaje está basado en Java para consultar entidades persistentes?

6. ¿Cuál de los siguientes lenguajes está diseñado para consultar datos en documentos XML?

7. ¿Qué lenguaje de consulta se integra con URLs para bases de datos relacionales?

8. ¿Cuál es una característica de LINQ en .NET?

9. ¿Cuál de los siguientes lenguajes no forma parte de los tradicionales para extracción de datos?

10. ¿Qué lenguaje permite expresiones de consulta directamente dentro de código C#?

11. ¿Cuál de estos lenguajes es declarativo?

12. ¿Qué permite hacer JPQL que SQL no permite directamente?

13. ¿Qué característica tiene OQL respecto a SQL?

14. ¿En qué contexto se usa comúnmente LINQ?

15. ¿Cuál es una ventaja de usar lenguajes de consulta?

Nº de Test: 0

Instrucciones:

  • Enviar Respuestas: Corrige el cuestionario actual, muestra los aciertos, fallos y calificación de este intento.
  • Reiniciar: Borra las respuestas marcadas en esta sesión, incrementa el contador de reinicios, pero no elimina los datos de los intentos.
  • Finalizar: Calcula la nota media de todos los intentos realizados hasta ahora y muestra un resumen general.
  • Reiniciar Todo: Borra todos los datos almacenados (reinicios, intentos, calificaciones) y reinicia el cuestionario completamente.
↑ Principio de Página ↑ Volver a Contenidos

Cuestionario: Lenguajes de consulta y extracción de datos

1. ¿Cuál es la principal función de un lenguaje de consulta?

2. ¿Cuál es el lenguaje de consulta estándar para bases de datos relacionales?

3. ¿Qué significa SQL?

4. ¿Qué lenguaje está orientado a bases de datos objeto-relacionales?

5. ¿Qué lenguaje está basado en Java para consultar entidades persistentes?

6. ¿Cuál de los siguientes lenguajes está diseñado para consultar datos en documentos XML?

7. ¿Qué lenguaje de consulta se integra con URLs para bases de datos relacionales?

8. ¿Cuál es una característica de LINQ en .NET?

9. ¿Cuál de los siguientes lenguajes no forma parte de los tradicionales para extracción de datos?

10. ¿Qué lenguaje permite expresiones de consulta directamente dentro de código C#?

11. ¿Cuál de estos lenguajes es declarativo?

12. ¿Qué permite hacer JPQL que SQL no permite directamente?

13. ¿Qué característica tiene OQL respecto a SQL?

14. ¿En qué contexto se usa comúnmente LINQ?

15. ¿Cuál es una ventaja de usar lenguajes de consulta?

Nº de Test: 0

Instrucciones:

  • Enviar Respuestas: Corrige el cuestionario actual, muestra los aciertos, fallos y calificación de este intento.
  • Reiniciar: Borra las respuestas marcadas en esta sesión, incrementa el contador de reinicios, pero no elimina los datos de los intentos.
  • Finalizar: Calcula la nota media de todos los intentos realizados hasta ahora y muestra un resumen general.
  • Reiniciar Todo: Borra todos los datos almacenados (reinicios, intentos, calificaciones) y reinicia el cuestionario completamente.
↑ Principio de Página ↑ Volver a Contenidos