Nothing Special   »   [go: up one dir, main page]

Resumen BD U4

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 21

UNIDAD 4_Introducción a las Consultas SQL

Cláusula WHERE

Permite seleccionar datos de una tabla que cumplan una condición específica.
Es esencial para restringir la selección a un subconjunto de filas.

Cláusula HAVING

Utilizada para condiciones que incluyen operadores aritméticos como SUM, MAX,
COUNT, MIN, AVG. A diferencia de WHERE, HAVING se aplica a grupos de registros.
ejemplos de la cláusula HAVING con cada uno de los operadores
aritméticos mencionados:

1. SUM:
sql
SELECT category, SUM(price) AS total_price
FROM products
GROUP BY category
HAVING SUM(price) > 1000;

2. MAX:
sql
SELECT department, MAX(salary) AS max_salary
FROM employees
GROUP BY department
HAVING MAX(salary) > 50000;

3. COUNT:
sql
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

4. MIN:
sql
SELECT product_type, MIN(stock_quantity) AS min_stock
FROM inventory
GROUP BY product_type
HAVING MIN(stock_quantity) < 50;

5. AVG:
sql
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 40000;

Operadores SQL

Operadores en Oracle y MySQL:

 Operadores de comparación ( =, !=, <, >, <=, >=)


 Operadores lógicos ( AND, OR, NOT)
 Operadores aritméticos ( +, -, *, /)
 Operadores de concatenación (en Oracle ||, en MySQL CONCAT)

Ejemplos con Operadores SQL

Operadores de comparación:

 Igualdad (=): Selecciona registros donde un valor coincide exactamente con


otro.

SQL

SELECT * FROM clientes WHERE nombre = 'Juan Pérez';

 Diferencia (!=): Selecciona registros donde un valor no coincide exactamente


con otro.

SQL

SELECT * FROM productos WHERE precio != 100;

 Menor que (<): Selecciona registros donde un valor es menor que otro.

SQL

SELECT * FROM pedidos WHERE fecha_entrega < '2024-06-01';

 Mayor que (>): Selecciona registros donde un valor es mayor que otro.

SQL

SELECT * FROM facturas WHERE total > 500;

 Menor o igual que (<=): Selecciona registros donde un valor es menor o igual
que otro.

SQL

SELECT * FROM calificaciones WHERE nota >= 7;

 Mayor o igual que (>=): Selecciona registros donde un valor es mayor o igual
que otro.

SQL

SELECT * FROM empleados WHERE experiencia >= 5;

Operadores lógicos:
 Y (AND): Combina dos condiciones para que ambas sean verdaderas para que se
incluya un registro.

SQL

SELECT * FROM clientes WHERE ciudad = 'Madrid' AND tipo_cliente


= 'Premium';

 O (OR): Combina dos condiciones para que al menos una sea verdadera para que
se incluya un registro.

SQL

SELECT * FROM productos WHERE categoría = 'Electrónica' OR


categoría = 'Informática';

 NO (NOT): Invierte el resultado de una condición.

SQL

SELECT * FROM pedidos WHERE estado != 'Entregado';

Operadores aritméticos:

 Suma (+): Realiza la suma de dos valores numéricos.

SQL

SELECT precio_venta + descuento AS precio_final FROM productos;

 Resta (-): Realiza la resta de dos valores numéricos.

SQL

SELECT stock - cantidad_vendida AS stock_actual FROM productos;

 Multiplicación (*): Realiza la multiplicación de dos valores numéricos.

SQL

SELECT unidades_por_paquete * precio_por_unidad AS precio_total


FROM productos;

 División (/): Realiza la división de dos valores numéricos.

SQL

SELECT beneficio / ventas AS margen_beneficio FROM


ventas_mensuales;

Operadores de concatenación:
 Oracle (||): Concatena dos cadenas de texto.

SQL

SELECT nombre || ' ' || apellido AS nombre_completo FROM


clientes;

 MySQL (CONCAT): Concatena dos cadenas de texto.

SQL

SELECT CONCAT(nombre, ' ', apellido) AS nombre_completo FROM


clientes;

Ejemplos adicionales:

 Seleccionar todos los clientes de España con nombre que empiece por
"Ana":

SQL

SELECT * FROM clientes WHERE pais = 'España' AND nombre LIKE


'Ana%';

 Calcular el promedio de ventas por mes:

SQL

SELECT MONTH(fecha_venta) AS mes, AVG(total) AS ventas_promedio


FROM ventas
GROUP BY MONTH(fecha_venta);

 Obtener la lista de productos con el precio más bajo por categoría:

SQL

SELECT categoría, MIN(precio_venta) AS precio_minimo


FROM productos
GROUP BY categoría;

Consultas Calculadas

Crear campos nuevos a partir de otros ya existentes utilizando operadores


aritméticos.
1. Calcular el descuento sobre el precio de venta:

Supongamos que tenemos una tabla productos con campos precio_venta y


descuento_porcentaje. Podemos crear un nuevo campo precio_descontado
utilizando la siguiente consulta:

SQL
SELECT *, precio_venta * (1 - descuento_porcentaje/100) AS
precio_descontado
FROM productos;

2. Calcular el total de un pedido con IVA:

Si tenemos una tabla pedidos con campos subtotal y impuesto, podemos calcular el
total con IVA utilizando la siguiente consulta:

SQL
SELECT *, subtotal + subtotal * impuesto/100 AS total_con_iva
FROM pedidos;

3. Calcular la ganancia bruta:

Si tenemos una tabla ventas con campos precio_venta y costo_unitario, podemos


calcular la ganancia bruta por unidad vendida utilizando la siguiente consulta:

SQL
SELECT *, precio_venta - costo_unitario AS ganancia_bruta
FROM ventas;

4. Calcular la edad a partir de la fecha de nacimiento:

Si tenemos una tabla clientes con el campo fecha_nacimiento, podemos calcular la


edad actual de cada cliente utilizando la siguiente consulta:

SQL
SELECT *, YEAR(CURDATE()) - YEAR(fecha_nacimiento) -
(MONTH(CURDATE()) < MONTH(fecha_nacimiento) OR
(MONTH(CURDATE()) = MONTH(fecha_nacimiento) AND
DAY(CURDATE()) < DAY(fecha_nacimiento))) AS edad
FROM clientes;

5. Obtener la diferencia de días entre dos fechas:

Supongamos que tenemos una tabla reservas con campos fecha_llegada y


fecha_salida. Podemos calcular la duración de la estancia en días para cada reserva
utilizando la siguiente consulta:

SQL
SELECT *, DATEDIFF(fecha_salida, fecha_llegada) AS duracion_dias
FROM reservas;

Cláusula GROUP BY

Permite agrupar filas que tienen valores iguales en columnas especificadas. Es


común usarlo con funciones de agregación.

1. Agrupar productos por categoría y obtener el total de ventas por categoría:

Supongamos que tenemos una tabla ventas con campos producto_id, categoria,
precio_venta y unidades_vendidas. Podemos obtener el total de ventas por categoría
utilizando la siguiente consulta:

SQL
SELECT categoria, SUM(precio_venta * unidades_vendidas) AS
total_ventas
FROM ventas
GROUP BY categoria;

2. Agrupar clientes por país y obtener el número de clientes por país:


Si tenemos una tabla clientes con campos id_cliente, pais y nombre, podemos
obtener el número de clientes por país utilizando la siguiente consulta:

SQL
SELECT pais, COUNT(*) AS numero_clientes
FROM clientes
GROUP BY pais;

3. Agrupar pedidos por estado y obtener el promedio de importe por estado:

Supongamos que tenemos una tabla pedidos con campos id_pedido, estado,
importe_total y fecha_pedido. Podemos obtener el promedio de importe por estado
de pedido utilizando la siguiente consulta:

SQL
SELECT estado, AVG(importe_total) AS promedio_importe
FROM pedidos
GROUP BY estado;

4. Agrupar productos por marca y obtener el producto con mayor precio de venta
de cada marca:

Si tenemos una tabla productos con campos producto_id, marca, nombre,


precio_venta y stock, podemos obtener el producto con mayor precio de venta de
cada marca utilizando la siguiente consulta:

SQL
SELECT marca, producto_id, nombre, MAX(precio_venta) AS precio_maximo
FROM productos
GROUP BY marca;

5. Agrupar empleados por departamento y obtener el empleado con mayor salario


de cada departamento:

Supongamos que tenemos una tabla empleados con campos id_empleado,


departamento, nombre, salario y fecha_contrato. Podemos obtener el empleado
con mayor salario de cada departamento utilizando la siguiente consulta:

SQL
SELECT departamento, id_empleado, nombre, MAX(salario) AS
salario_maximo
FROM empleados
GROUP BY departamento;

Subconsultas

Consultas dentro de otras consultas. Útiles para dividir problemas complejos en


partes más manejables.
1. Obtener el nombre del cliente con el mayor número de pedidos:

Supongamos que tenemos dos tablas: clientes con campos id_cliente, nombre y
email y pedidos con campos id_pedido, id_cliente, fecha_pedido y
importe_total. Podemos obtener el nombre del cliente con el mayor número de
pedidos utilizando la siguiente consulta:

SQL
SELECT nombre
FROM clientes
WHERE id_cliente IN (
SELECT id_cliente
FROM pedidos
GROUP BY id_cliente
ORDER BY COUNT(*) DESC
LIMIT 1
);

2. Mostrar los productos que tienen un precio superior a la media de la categoría a


la que pertenecen:

Si tenemos una tabla productos con campos producto_id, nombre, precio_venta,


categoria y stock, podemos mostrar los productos con un precio superior a la media
de su categoría utilizando la siguiente consulta:

SQL
SELECT p.*
FROM productos AS p
WHERE p.precio_venta > (
SELECT AVG(precio_venta)
FROM productos AS p2
WHERE p2.categoria = p.categoria
);

3. Obtener el total de ventas de cada vendedor, incluyendo aquellos que no han


realizado ninguna venta:
Supongamos que tenemos dos tablas: vendedores con campos id_vendedor, nombre y
comision y ventas con campos id_venta, id_vendedor, fecha_venta y
importe_total. Podemos obtener el total de ventas de cada vendedor, incluyendo
aquellos sin ventas, utilizando la siguiente consulta:

SQL
SELECT v.id_vendedor, v.nombre, COALESCE(SUM(pv.importe_total), 0) AS
total_ventas
FROM vendedores AS v
LEFT JOIN ventas AS pv ON v.id_vendedor = pv.id_vendedor
GROUP BY v.id_vendedor, v.nombre;

4. Mostrar los departamentos con la mayor cantidad de empleados que ganan más
del salario promedio de la empresa:

Si tenemos una tabla empleados con campos id_empleado, nombre, salario,


departamento y fecha_contrato, podemos mostrar los departamentos con la mayor
cantidad de empleados que ganan más del salario promedio de la empresa utilizando la
siguiente consulta:

SQL
SELECT d.nombre_departamento, COUNT(*) AS
numero_empleados_por_encima_media
FROM empleados AS e
JOIN departamentos AS d ON e.departamento = d.id_departamento
WHERE e.salario > (
SELECT AVG(salario)
FROM empleados
)
GROUP BY d.nombre_departamento
ORDER BY numero_empleados_por_encima_media DESC;

5. Actualizar el stock de un producto restando la cantidad vendida en un pedido


específico:

Supongamos que tenemos una tabla productos con campos producto_id, nombre,
precio_venta, categoria y stock y una tabla pedidos_detalle con campos
id_detalle_pedido, id_pedido, id_producto, unidades y precio_venta_unidad.
Podemos actualizar el stock de un producto restando la cantidad vendida en un pedido
específico utilizando la siguiente consulta:

SQL
UPDATE productos
SET stock = stock - pd.unidades
FROM productos AS p
INNER JOIN pedidos_detalle AS pd ON p.producto_id = pd.id_producto
WHERE pd.id_pedido = 123;
Vistas

Las vistas son consultas almacenadas que pueden ser tratadas como tablas.

1. Crear una vista para mostrar los productos de una categoría específica:

Supongamos que tenemos una tabla productos con campos producto_id, nombre,
precio_venta, categoria y stock. Podemos crear una vista para mostrar solo los
productos de la categoría "Electrónica" utilizando la siguiente consulta:

SQL
CREATE VIEW vista_productos_electronica AS
SELECT producto_id, nombre, precio_venta, stock
FROM productos
WHERE categoria = 'Electrónica';

2. Crear una vista para mostrar el nombre completo del cliente y el total de sus
pedidos:

Si tenemos dos tablas: clientes con campos id_cliente, nombre, apellido y email
y pedidos con campos id_pedido, id_cliente, fecha_pedido y importe_total,
podemos crear una vista para mostrar el nombre completo del cliente y el total de sus
pedidos utilizando la siguiente consulta:

SQL
CREATE VIEW vista_clientes_pedidos AS
SELECT c.id_cliente, CONCAT(c.nombre, ' ', c.apellido) AS
nombre_completo, SUM(p.importe_total) AS total_pedidos
FROM clientes AS c
JOIN pedidos AS p ON c.id_cliente = p.id_cliente
GROUP BY c.id_cliente, nombre_completo;
3. Utilizar una vista como si fuera una tabla en otra consulta:

Podemos utilizar la vista creada anteriormente (vista_productos_electronica) en


otra consulta para obtener el producto con mayor precio de venta:

SQL
SELECT producto_id, nombre, precio_venta, stock
FROM vista_productos_electronica
ORDER BY precio_venta DESC
LIMIT 1;

4. Actualizar datos a través de una vista:

Si la vista se basa en una consulta actualizable, es posible realizar modificaciones en los


datos a través de la vista. Por ejemplo, podemos actualizar el precio de un producto en
la vista vista_productos_electronica:

SQL
UPDATE vista_productos_electronica
SET precio_venta = 1200
WHERE producto_id = 10;

5. Eliminar una vista:

Para eliminar una vista, se utiliza la instrucción DROP VIEW:

SQL
DROP VIEW vista_productos_electronica;

Nota:

 Las vistas no almacenan datos por sí mismas, sino que hacen referencia a los
datos de las tablas subyacentes.
 Las vistas pueden ser útiles para simplificar consultas complejas, otorgar
permisos de acceso específicos a determinados datos o crear diferentes
perspectivas de los mismos datos.

Procedimientos Almacenados y Funciones

Permiten encapsular lógica compleja en la base de datos, mejorando la


modularidad y reusabilidad del código SQL.
1. Procedimiento almacenado para calcular el impuesto sobre el valor añadido
(IVA) de un importe:

SQL
CREATE PROCEDURE calcular_iva(
IN importe_base DECIMAL(10,2),
IN tipo_iva TINYINT,
OUT iva_resultante DECIMAL(10,2)
)
BEGIN
DECLARE iva_decimal DECIMAL(10,2);
SET iva_decimal = tipo_iva / 100;
SET iva_resultante = importe_base * iva_decimal;
END PROCEDURE;

Uso del procedimiento:

SQL
CALL calcular_iva(100, 21, @iva_calculado);
SELECT @iva_calculado AS iva_resultante;

2. Función para obtener el nombre completo de un cliente a partir de su ID:

SQL
CREATE FUNCTION obtener_nombre_completo(
IN id_cliente INT
)
RETURNS VARCHAR(255)
BEGIN
DECLARE nombre_completo VARCHAR(255);
SELECT CONCAT(nombre, ' ', apellido) INTO nombre_completo
FROM clientes
WHERE id_cliente = id_cliente;
RETURN nombre_completo;
END FUNCTION;
Uso de la función:

SQL
SELECT obtener_nombre_completo(123) AS nombre_completo_cliente;

3. Procedimiento almacenado para actualizar el stock de un producto después de


una venta:

SQL
CREATE PROCEDURE actualizar_stock_venta(
IN id_producto INT,
IN unidades_vendidas INT
)
BEGIN
UPDATE productos
SET stock = stock - unidades_vendidas
WHERE producto_id = id_producto;
END PROCEDURE;

Uso del procedimiento:

SQL
CALL actualizar_stock_venta(456, 10);

4. Función para verificar si un usuario tiene permisos para acceder a un recurso


específico:

SQL
CREATE FUNCTION tiene_permiso_acceso(
IN id_usuario INT,
IN recurso_id INT
)
RETURNS TINYINT
BEGIN
DECLARE tiene_permiso TINYINT;
SELECT COUNT(*) INTO tiene_permiso
FROM permisos
WHERE id_usuario = id_usuario AND recurso_id = recurso_id;
RETURN tiene_permiso;
END FUNCTION;

Uso de la función:

SQL
SELECT tiene_permiso_acceso(789, 123) AS permiso_acceso;
5. Procedimiento almacenado para realizar una transferencia bancaria entre dos
cuentas:

SQL
CREATE PROCEDURE realizar_transferencia(
IN cuenta_origen INT,
IN cuenta_destino INT,
IN importe_transferencia DECIMAL(10,2)
)
BEGIN
DECLARE saldo_origen DECIMAL(10,2);
DECLARE saldo_destino DECIMAL(10,2);

-- Verificar saldos y actualizar si procede


UPDATE cuentas
SET saldo = saldo - importe_transferencia
WHERE id_cuenta = cuenta_origen;

UPDATE cuentas
SET saldo = saldo + importe_transferencia
WHERE id_cuenta = cuenta_destino;

-- Registrar la transacción
INSERT INTO transacciones (
id_cuenta_origen,
id_cuenta_destino,
importe,
fecha_transaccion
)
VALUES (
cuenta_origen,
cuenta_destino,
importe_transferencia,
CURRENT_TIMESTAMP
);
END PROCEDURE;

Uso del procedimiento:

SQL
CALL realizar_transferencia(1001, 1002, 50.00);

Nota:

 Los procedimientos almacenados y las funciones pueden ser reutilizados en


diferentes partes de la aplicación.
 Permiten mejorar la organización y legibilidad del código SQL.
 Ayudan a encapsular la lógica compleja y proteger el acceso a datos sensibles.
Triggers

Son procedimientos que se ejecutan automáticamente en respuesta a ciertos


eventos en una tabla.

Ejemplos con Triggers en MySQL:


1. Trigger para registrar la fecha y hora de creación de un nuevo registro en una
tabla:

SQL
CREATE TRIGGER registrar_fecha_creacion
BEFORE INSERT ON mi_tabla
FOR EACH ROW
BEGIN
SET NEW.fecha_creacion = CURRENT_TIMESTAMP;
END TRIGGER;

Explicación:

 Este trigger se ejecuta antes de insertar un nuevo registro en la tabla mi_tabla.


 Para cada fila que se intenta insertar, se establece el valor de la columna
fecha_creacion en la fecha y hora actuales (CURRENT_TIMESTAMP).

2. Trigger para actualizar el stock de un producto después de una venta:

SQL
CREATE TRIGGER actualizar_stock_venta
AFTER UPDATE ventas
FOR EACH ROW
BEGIN
IF NEW.unidades_vendidas > OLD.unidades_vendidas THEN
UPDATE productos
SET stock = stock - (NEW.unidades_vendidas -
OLD.unidades_vendidas)
WHERE producto_id = NEW.producto_id;
END IF;
END TRIGGER;

Explicación:

 Este trigger se ejecuta después de actualizar un registro en la tabla ventas.


 Para cada fila modificada, se comprueba si el valor de unidades_vendidas ha
aumentado.
 Si ha aumentado, se actualiza el stock del producto correspondiente en la tabla
productos restando la diferencia entre el nuevo valor de unidades vendidas y el
antiguo.

3. Trigger para registrar un historial de cambios en una tabla:

SQL
CREATE TRIGGER registrar_historial_cambios
BEFORE UPDATE OR DELETE ON mi_tabla
FOR EACH ROW
BEGIN
INSERT INTO historial_cambios (
tabla,
id_registro,
accion,
fecha_cambio,
datos_antes,
datos_despues
)
VALUES (
'mi_tabla',
NEW.id_registro,
CASE
WHEN NEW.id_registro IS NULL THEN 'DELETE'
ELSE 'UPDATE'
END,
CURRENT_TIMESTAMP,
OLD,
NEW
);
END TRIGGER;

Explicación:

 Este trigger se ejecuta antes de actualizar o eliminar un registro en la tabla


mi_tabla.
 Para cada fila modificada o eliminada, se inserta un nuevo registro en la tabla
historial_cambios.
 El registro insertado contiene información sobre la tabla afectada, el ID del
registro, la acción realizada (actualización o eliminación), la fecha del cambio,
los datos antes de la modificación y los datos después.

4. Trigger para validar la edad mínima de un usuario al registrarse:

SQL
CREATE TRIGGER validar_edad_registro
BEFORE INSERT ON usuarios
FOR EACH ROW
BEGIN
IF NEW.edad < 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'La edad mínima para
registrarse es de 18 años';
END IF;
END TRIGGER;

Explicación:

 Este trigger se ejecuta antes de insertar un nuevo registro en la tabla usuarios.


 Para cada fila que se intenta insertar, se comprueba si el valor de la columna
edad es menor que 18.
 Si la edad es menor, se genera un error con el código SQLSTATE 45000 y un
mensaje personalizado indicando que la edad mínima es de 18 años.

5. Trigger para auditar el acceso a una tabla sensible:

SQL
CREATE TRIGGER auditar_acceso_tabla
AFTER SELECT
ON mi_tabla_sensible
FOR EACH ROW
BEGIN
INSERT INTO auditoria_accesos (
usuario,
fecha_acceso,
tabla_accsedida,
datos_accsedidos
)
VALUES (
CURRENT_USER(),
CURRENT_TIMESTAMP,
'mi_tabla_sensible',
NEW
);
END TRIGGER;

Explicación:

 Este trigger se ejecuta después de seleccionar cualquier registro en la tabla


mi_tabla_sensible.
 Para cada fila seleccionada, se inserta un nuevo registro en la tabla
auditoria_accesos.
 El registro insertado contiene información sobre el usuario que realizó el acceso,
la fecha y hora del acceso, la tabla accedida y los datos seleccionados.

Nota:

 Los triggers son herramientas poderosas que pueden automatizar tareas y


mejorar la seguridad de la base de datos.

Preguntas de Elección Múltiple

1. ¿Cuál es la finalidad principal de las consultas en SQL?

 a) Almacenar datos
 b) Eliminar datos
 c) Recuperar y manipular datos
 d) Crear estructuras de base de datos

Respuesta: c) Recuperar y manipular datos

2. ¿Qué comando SQL se utiliza para obtener datos de una base de datos?

 a) INSERT
 b) SELECT
 c) UPDATE
 d) DELETE

Respuesta: b) SELECT

3. ¿Cuál es la diferencia entre las funciones MIN y MAX en SQL?

 a) MIN devuelve el valor máximo y MAX devuelve el valor mínimo.


 b) MIN devuelve el valor mínimo y MAX devuelve el valor máximo.
 c) MIN devuelve el valor medio y MAX devuelve el valor total.
 d) MIN y MAX realizan la misma función.

Respuesta: b) MIN devuelve el valor mínimo y MAX devuelve el valor máximo.

4. En el contexto de MySQL y Oracle, ¿qué significa SGBD?


 a) Sistema General de Bases de Datos
 b) Sistema Gestor de Bases de Datos
 c) Sistema de Gestión de Base de Datos
 d) Sistema Global de Base de Datos

Respuesta: b) Sistema Gestor de Bases de Datos

5. ¿Cuál es el propósito del comando SELECT * FROM empleados WHERE


salario > 1000;?

 a) Insertar nuevos empleados con un salario mayor a 1000.


 b) Actualizar el salario de los empleados a más de 1000.
 c) Seleccionar todos los empleados con un salario mayor a 1000.
 d) Eliminar todos los empleados con un salario mayor a 1000.

Respuesta: c) Seleccionar todos los empleados con un salario mayor a 1000.

Preguntas Verdadero/Falso

1. El comando INSERT se utiliza para actualizar registros en una base de datos.

Respuesta: Falso

2. Las funciones de agregado en SQL incluyen SUM, AVG, MIN, MAX y


COUNT.

Respuesta: Verdadero

3. La cláusula WHERE se utiliza para filtrar registros en una consulta SQL.

Respuesta: Verdadero

4. En SQL, SELECT DISTINCT se utiliza para eliminar duplicados de los


resultados.

Respuesta: Verdadero

5. La función AVG en SQL devuelve el valor máximo de una columna numérica.

Respuesta: Falso
Preguntas de Completar

1. Para eliminar todos los registros de una tabla sin borrar la tabla, se utiliza
el comando _________.

Respuesta: TRUNCATE

2. La función SQL que devuelve el número total de filas en una tabla es


_________.

Respuesta: COUNT

3. Para combinar filas de dos o más tablas basadas en una columna


relacionada, se utiliza una _________.

Respuesta: JOIN

4. La cláusula SQL que se utiliza para ordenar los resultados es _________.

Respuesta: ORDER BY

5. En SQL, NULL representa un valor que es _________.

Respuesta: desconocido o ausente

También podría gustarte