0% found this document useful (0 votes)
26 views

Igbd - 05 SQL DML Parte 3

1) Subqueries are SQL SELECT statements that are used as part of another SQL statement. 2) Examples show subqueries used in the WHERE, FROM, and SELECT clauses to filter results or correlate data between tables. 3) To modify data in SQL, INSERT adds new rows, UPDATE modifies existing rows, and DELETE removes rows while ensuring data integrity with transactions.

Uploaded by

Victor Santos
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Igbd - 05 SQL DML Parte 3

1) Subqueries are SQL SELECT statements that are used as part of another SQL statement. 2) Examples show subqueries used in the WHERE, FROM, and SELECT clauses to filter results or correlate data between tables. 3) To modify data in SQL, INSERT adds new rows, UPDATE modifies existing rows, and DELETE removes rows while ensuring data integrity with transactions.

Uploaded by

Victor Santos
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

Implementacin y gestin

de base de datos
Prof. Carlos Takano
Semana 4

Subconsultas (subqueries)

Subconsultas o subqueries

Son sentencias SELECT que se utilizan


como parte de otra sentencia SQL

Subquery Ejemplo 1
/*
Subquery en clusula WHERE
Este subquery debe devolver slo un valor
*/
SELECT employee_id, first_name, last_name,
department_id, salary
FROM employees
WHERE salary >= (SELECT salary FROM employees
WHERE first_name = 'Alexander'
AND last_name = 'Hunold')

Subquery Ejemplo 2
/*
Subquery en clusula WHERE
Este subquery debe devolver slo un valor
Condiciones en subqueries se pueden combinar
con otras
*/
SELECT employee_id, first_name, last_name,
department_id, salary
FROM employees
WHERE salary = (SELECT max(salary) FROM employees
WHERE department_id = 30)
AND department_id = 80

Subquery Ejemplo 3
/*
Subquery en clusula WHERE
Este subquery puede devolver ms de un valor
*/
SELECT d.department_id, d.department_name
FROM departments d
WHERE d.department_id IN (SELECT e.department_id
FROM employees e)
ORDER BY d. department_id

Subquery Ejemplo 4
/*
Subquery en clusula WHERE
Este subquery puede devolver ms de un valor
ALL significa TODOS
ANY significa POR LO MENOS UNO
*/
SELECT employee_id, first_name, last_name,
department_id, salary
FROM employees
WHERE salary > ALL (SELECT salary FROM employees
WHERE first_name='David')

Subquery Ejemplo 5
/*
Subquery en clusula FROM
Este subquery se utiliza como si fuera una tabla
o vista
*/
SELECT e.last_name, e.salary, e.department_id,
m.max_salary
FROM employees e JOIN
(SELECT department_id, max(salary) max_salary
FROM employees
GROUP BY department_id) m
ON e.department_id = m.department_id
WHERE e.salary < m.max_salary

Subquery Ejemplo 6
/*
Subquery en clusula SELECT
Este subquery est correlacionado, utiliza columnas
que pertenecen a la sentencia externa
*/
SELECT employee_id, first_name, last_name,
department_id, salary,
(SELECT max(salary)
FROM employees
WHERE department_id=e.department_id) dept_max
FROM employees e

Subquery Ejemplo 7
/*
Semijoin
Subquery correlacionado
*/
SELECT d.department_id, d.department_name
FROM departments d
WHERE EXISTS
(SELECT 1
FROM employees e
WHERE e.department_id = d.department_id)
ORDER BY d. department_id

Subquery Ejemplo 8
/*
Antijoin
Subquery correlacionado
*/
SELECT d.department_id, d.department_name
FROM departments d
WHERE NOT EXISTS
(SELECT 1
FROM employees e
WHERE e.department_id = d.department_id)
ORDER BY d. department_id

CREATE TABLE AS Ejemplo 1


/*
Crea una nueva tabla e inserta filas
en la misma operacin
*/
CREATE TABLE departments_1700 AS
SELECT * FROM departments
WHERE location_id = 1700

CREATE TABLE AS Ejemplo 2


/*
Crea slo la estructura, sin datos
*/
CREATE TABLE departments_1700 AS
SELECT * FROM departments
WHERE 1 = 2

Sentencias para modificar


datos

Sentencias para modificar datos

Para modificar datos en SQL, se utilizan las siguientes


sentencias:
INSERT
UPDATE
DELETE

Tener en cuenta que la base de datos trabaja con


transacciones
Una

transaccin es una unidad lgica, conformada por una o ms


operaciones de modificacin de los datos
COMMIT confirma la transaccin en curso
ROLLBACK deshace la transaccin en curso

INSERT Ejemplo 1
/*
Inserta una fila
*/
INSERT INTO departments
(department_id, department_name,
manager_id, location_id)
VALUES
(280, 'Corporate Management',
NULL, 1700)

INSERT Ejemplo 2
/*
INSERT con subquery
*/
INSERT INTO departments_1700
SELECT * FROM departments
WHERE location_id = 1700

UPDATE Ejemplo 1
/*
UPDATE simple
*/
UPDATE departments
SET department_name='Treasury',
manager_id=205
WHERE department_id=100

UPDATE Ejemplo 2
/*
UPDATE con subquery
*/
UPDATE
SET
(
SELECT
WHERE
AND
)
WHERE

departments
manager_id =
employee_id FROM employees
first_name = 'Alexander'
last_name='Hunold'
department_id=100

UPDATE Ejemplo 3
/*
UPDATE con subquery correlacionado
*/
UPDATE
SET
(
SELECT
WHERE
)

employees e
manager_id =
manager_id FROM departments d
d.department_id = e.department_id

DELETE Ejemplo 1
/*
DELETE simple
Las filas a eliminar no deben tener
filas dependientes
*/
DELETE FROM departments
WHERE department_id=100

DELETE Ejemplo 2
/*
DELETE con subquery en la clusula WHERE
Las filas a eliminar no deben tener
filas dependientes
*/
DELETE FROM departments
WHERE department_id NOT IN
(SELECT department_id FROM employees)

You might also like