SlideShare una empresa de Scribd logo
1 de 260
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
1
02/03/2022
Lenguaje estructurado de
consultas
Unidad 4
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para
uso de los cursos de Bases de Datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
2
02/03/2022
Objetivo general de la Unidad 4
Aplicar sentencias del lenguaje SQL para manipular de datos en tablas,
administrar objetos de la base de datos y controlar la ejecución de
transacciones como mecanismo para mantener la integridad de los
datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
3
02/03/2022
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
4
02/03/2022
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
5
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
6
02/03/2022
DDL: Data Definition Language
▪ El lenguaje de definición de datos SQL (DDL) permite
la especificación de información sobre relaciones,
incluyendo:
▪ El esquema para cada relación.
▪ Dominio de valores asociados con cada atributo.
▪ Restricciones de integridad
▪ Y como veremos más adelante, también otra información
como
▪ El conjunto de índices a mantener para cada relación.
▪ Información de seguridad y autorización para cada relación.
▪ La estructura de almacenamiento físico de cada relación en el
disco.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
7
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
8
02/03/2022
SQL, el Modelo Relacional, y Diagrama E/R
➢ SQL se basa en el
modelo relacional.
➢ Tiene muchas de las
mismas ideas.
➢ Las bases de datos que
admiten SQL a menudo
se describen como base
de datos relacionales.
➢ No siempre es fiel al
modelo
➢ Los diagramas E/R
pueden ser
implementados en SQL
➢ Las entidades, los
atributos y las relaciones
se pueden expresar en
terminos de SQL.
➢ Los relaciones de
muchos a muchos son un
problema, así que deben
ser eliminadas.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
9
02/03/2022
Relaciones, Entidades, Tablas
Modelo Relacional
Relacion
Registros
Atributo
Clave Foránea
Clave Primaria
Diagrama E/R
Entidad
Instancia
Atributo
Relación M:1
SQL
Tabla
Fila
Columna (campo)
Clave Foránea
Clave Primaria
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
10
02/03/2022
Implementando Diagramas E/R
➢ Dado un diagrama E/R
➢ Las entidades se
convierten en tablas
SQL
➢ Los atributos de una
entidad se convierten
en columnas de tablas.
➢ Las relaciones pueden
estar representadas
como claves foráneas
Enrolment
Student
Module
In
Has
ID
Code
Title
Name
Address
Year
Assignment
Exam
Assignment
Exam
Credits
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
11
02/03/2022
Entidades y Atributos
➢ Cada entidad se
convierte en una tabla
de la base de datos.
➢ El nombre de la tabla
suele ser el nombre de
la entidad
➢ Los atributos se
convierten en columnas
de la tabla con el
mismo nombre
➢ Una tabla llamada
estudiante
➢ Con columnas: ID,
Name, Address, and
Year
Student
ID
Name
Address
Year
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
12
02/03/2022
Creación de Tablas
CREATE TABLE
<name> (
<col-def-1>,
<col-def-2>,
:
<col-def-n>,
<constraint-1>,
:
<constraint-k>)
➢ Usted establece…
➢ Un nombre para la tabla
➢ Una lista de definiciones de
columnas
➢ Una lista de restricciones
(como las claves)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
13
02/03/2022
Definición de Columnas
<col-name> <type>
[NULL|NOT NULL]
[DEFAULT <val>]
[constraint-1 [,
constraint-2[,
...]]]
➢ Cada columna tiene un
nombre y un tipo.
➢ Tipos comunes:
➢ INT
➢ REAL
➢ CHAR(n)
➢ VARCHAR(n)
➢ DATE
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
14
02/03/2022
Definición de Columnas
➢ Columnas pueden ser
NULL o NOT NULL
➢ Las columnas NOT
NULL no pueden
tener valores faltantes.
➢ Si no se especifica, por
defecto se asume
NULL.
➢ Columnas pueden
tener un valor por
defecto
➢ Solo necesitas usar la
palabra reservada
DEFAULT seguido
por el valor, ej:
➢ num INT DEFAULT 0
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
15
02/03/2022
Ejemplo
CREATE TABLE Student (
stuID INT NOT NULL,
stuName VARCHAR(50) NOT NULL,
stuAddress VARCHAR(50),
stuYear INT DEFAULT 1)
Student
ID
Name
Address
Year
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
16
02/03/2022
Constraints - Restricciones
CONSTRAINT
<name>
<type>
<details>
➢ Common <type>s
➢ PRIMARY KEY
➢ UNIQUE
➢ FOREIGN KEY
➢ INDEX
➢ Cada restricción recibe
un nombre – MS Access
requiere un nombre,
pero algunos DBMS no
lo necesitan
➢ Constraints que se
refieren a columnas
individuales pueden ser
incluidas en la definición.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
17
02/03/2022
Primary Keys
➢ Los Primary Keys son definidos
a través de constraints.
➢ Una PRIMARY KEY también
incluye un constraint UNIQUE
y hace que las columnas
involucradas sean NOT
NULL
➢ Los <details> de una
clave principal son la lista de
columnas de las que se
compone la clave.
CONSTRAINT <name>
PRIMARY KEY
(col1, col2, …)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
18
02/03/2022
Unique Constraints
➢ Además de una primary key
única, cualquier conjunto de
columnas se puede especificar
como UNIQUE
➢ Esto tiene el efecto de hacer
claves candidatas en la tabla.
➢ Los <details> de un
unique constraint son la lista
de columnas que componen
una clave candidata.
CONSTRAINT <name>
UNIQUE
(col1, col2, …)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
19
02/03/2022
Ejemplo
CREATE TABLE Student (
stuID INT NOT NULL,
stuName VARCHAR(50) NOT NULL,
stuAddress VARCHAR(50),
stuYear INT DEFAULT 1,
CONSTRAINT pkStudent
PRIMARY KEY (stuID))
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
20
02/03/2022
Relaciones
➢ Depende del tipo
➢ 1:1 normalmente no se
utilizan o pueden
tratarse como un caso
especial de M:1
➢ M:1 son representados
como clave foránea
desde el lado M al 1.
➢ M:M se dividen en dos
relaciones de M:1
Enrolment
Student
Module
In
Has
ID
Code
Title
Name
Address
Year
Assignment
Exam
Assignment
Exam
Credits
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
21
02/03/2022
Representando Relaciones
➢ La tabla ENROLMENT:
➢ Tendrá columnas para los
atributos Exam y
Assignment.
➢ Tendrá una clave foránea
para Student por la
relación ‘Has’.
➢ Tendrá una clave foránea
con Module por la relación
‘In’
Enrolment
Student
Module
In
Has
ID
Code
Title
Name
Address
Year
Assignment
Exam
Assignment
Exam
Credits
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
22
02/03/2022
Foreign Keys
➢ Las claves foráneas
también se definen como
constraints.
➢ Tu necesitas otorgar
➢ Las columnas que
componen la FK
➢ La tabla referenciada
➢ Las columnas a las que
hace referencia el FK
CONSTRAINT <name>
FOREIGN KEY
(col1,col2,…)
REFERENCES
<table>
[(ref1,ref2,…)]
➢ If the FK references the PK
of <table> you don’t
need to list the columns
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
23
02/03/2022
Ejemplo
CREATE TABLE Enrolment (
stuID INT NOT NULL,
modCode CHAR(6) NOT NULL,
enrAssignment INT,
enrExam INT,
CONSTRAINT enrPK
PRIMARY KEY (stuID, modCode),
CONSTRAINT enrStu FOREIGN KEY (stuID)
REFERENCES Student (stuID),
CONSTRAINT enrMod FOREIGN KEY (modCode)
REFERENCES Module (modCode))
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
24
02/03/2022
Consideraciones de diseño de InnoDB
(MySql)
Emula la arquitectura de Oracle
▪ Sistemas únicos
▪ Buffering de inserts
▪ Index hash
▪ DataDictionary Interno
▪ Undo
▪ Insert Buffer
▪ MySQL Replication info
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
25
02/03/2022
Limites de tamaño con InnoDB
(MySql)
▪ Tamaño máximo de una tabla: 32GB
▪ Columnas por tabla: 1000
▪ Tamaño máximo de la llave 3500 caracteres
▪ Tamaño máximo del tablespace 64TB
▪ Numero máximo de transacciones concurrentes:
1023
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
26
02/03/2022
Convertir tipos de Engines
(MySql)
▪ Para crear una tabla con un Engine predefinido
▪ CREATE TABLE Test (rid INT) ENGINE=INNODB;
▪ Para definir el default por sesión:
▪ SET STORAGE_ENGINE=INNODB
▪ Convertir tablas de un Engine a otro
▪ ALTER TABLE Test ENGINE=INNODB
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
27
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
28
02/03/2022
Modificando Tablas
➢ Algunas veces desea
cambiar la estructura
de una tabla existente
➢ Una forma es eliminarlo
(DROP) y luego crearlo
➢ Esto es peligroso, por
lo que existe la opción
ALTER TABLE en su
lugar
➢ ALTER TABLE permite:
➢ Agregar una nueva
columna
➢ Remover una columna
existente.
➢ Agregar un Nuevo
constraint
➢ Remover un constraint
existente.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
29
02/03/2022
ALTERando Columnas
Para agregar o remover
columnas use…
ALTER TABLE <table>
ADD COLUMN <col>
ALTER TABLE <table>
DROP COLUMN <name>
Ejemplos:
ALTER TABLE Student
ADD COLUMN
Degree VARCHAR(50)
ALTER TABLE Student
DROP COLUMN Degree
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
30
02/03/2022
ALTERando Constraints
Para agregar o remover
restricciones use…
ALTER TABLE <table>
ADD CONSTRAINT
<definition>
ALTER TABLE <table>
DROP CONSTRAINT
<name>
Ejemplos:
ALTER TABLE Module
ADD CONSTRAINT
ck UNIQUE (title)
ALTER TABLE Module
DROP CONSTRAINT ck
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
31
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
32
02/03/2022
Deleting Tables
➢ Para borrar una tabla
existente:
DROP TABLE
[IF EXISTS]
<name>
➢ Ejemplo:
DROP TABLE Module
➢ Tenga cuidado con
alguna sentencia SQL con
DROP en ella pues…
➢ También eliminará
cualquier información de la
tabla
➢ Normalmente no se le
pedirá que confirme la
ejecución de la sentencia
➢ No hay una manera fácil de
deshacer los cambios.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
33
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
34
02/03/2022
TRUNCATE
▪ Este comando se utiliza para eliminar o
borrar los datos que contiene una tabla.
▪ Es útil cuando sólo se quiere borrar los
datos, pero no se quiere borrar la tabla.
▪ Este comando deja vacía una tabla, es
decir, sin datos.
▪ Sintaxis:
TRUNCATE TABLE nombretabla
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
35
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
36
02/03/2022
ALTER (RENAME)
▪ En ocasiones podemos querer cambiar el nombre de
nuestra tabla para darle un nombre mas relevante. Para
este propósito, podemos usar ALTER TABLE para
cambiar el nombre de una tabla.
▪ A las columnas también se les puede dar un nombre nuevo
con el uso de ALTER TABLE.
ALTER TABLE table_name RENAME TO new_table_name;
ALTER TABLE table_name RENAME COLUMN old_name
TO new_name;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
37
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
38
02/03/2022
DML: Data Manipulation Language
▪ El Lenguaje de Manipulación de Datos es un idioma
proporcionado por los sistemas gestores de bases de
datos que permite a los usuarios de la misma llevar a
cabo las tareas de consulta o modificación de los datos
contenidos en las Tablas de las Bases de Datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
39
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
40
02/03/2022
La instrucción INSERT
▪ La inserción de tuplas se realiza con la sentencia INSERT,
▪ Es posible insertar directamente valores.
▪ O bien insertar el conjunto de resultados de una consulta.
▪ En cualquier caso, los valores que se insertan deben pertenecer al
dominio de cada uno de los atributos de la relación.
▪ Ejemplos: CLIENTES (DNI, NOMBRE, DIR)
▪ La inserción
▪ INSERT INTO CLIENTES VALUES (1111,'Mario',
'C/. Mayor, 3');
▪ Es equivalente a las siguientes sentencias
▪ INSERT INTO CLIENTES (NOMBRE,DIR,DNI)
VALUES ('Mario','C/. Mayor, 3',1111);
▪ INSERT INTO CLIENTES (DNI,DIR,NOMBRE)
VALUES (1111,'C/. Mayor, 3’,'Mario');
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
41
02/03/2022
Añadir una fila
INSERT INTO TESTEMP
VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000, NULL)
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
25000.00
1998-06-25 -
C01
SMITH
000111
INSERT INTO TESTEMP(EMPNO, LASTNAME, WORKDEPT, HIREDATE, SALARY)
VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
42
02/03/2022
Añadir varias filas
▪ Ejemplo:
▪ Para la siguiente base de datos, queremos incluir en la relación GRUPOS a todos
los grupos, junto con su número de álbumes publicados:
▪ GRUPOS (NOMBRE, ALBUMES) LP (TIT, GRUPO, ANIO, NUM_CANC)
▪ Solución:
▪ En SQL se prohíbe que la consulta que se incluye en una cláusula INSERT
haga referencia a la misma tabla en la que se quieren insertar las tuplas.
▪ En ORACLE sí está permitido
INSERT INTO GRUPOS
SELECT GRUPO, COUNT (DISTINCT TIT) FROM LP
GROUP BY GRUPO;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
43
02/03/2022
Añadir varias filas (cont.)
TESTEMP
INSERT INTO TESTEMP
SELECT
FROM EMPLOYEE
WHERE EMPNO < = '000050'
EMPNO,LASTNAME,WORKDEPT,HIREDATE,SALARY,BONUS
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
38250.00
40175.00
25000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
44
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
45
02/03/2022
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
46
02/03/2022
La instrucción DELETE
▪ La eliminación de tuplas se realiza con la sentencia DELETE:
▪ DELETE FROM R WHERE P; -- WHERE es opcional
▪ Elimina tuplas completas, no columnas. Puede incluir subconsultas.
▪ Ejemplos: para la BD de CLIENTES, CUENTAS, SUCURSALES.
▪ Eliminar todas cuentas con código entre 1000 y 1100.
▪ DELETE FROM CUENTAS WHERE COD BETWEEN 1000 AND 1100;
▪ Eliminar todas las cuentas del cliente “Jose María García”.
▪ DELETE FROM CUENTAS WHERE DNI IN
(SELECT DNI FROM CLIENTES
WHERE NOMBRE LIKE 'Jose María García');
▪ Eliminar todas las cuentas de sucursales situadas en "Chinchón".
▪ DELETE FROM CUENTAS WHERE NSUCURS IN
(SELECT NSUC FROM SUCURSALES
WHERE CIUDAD LIKE 'Chinchón');
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
47
02/03/2022
Borrar filas
DELETE FROM TESTEMP
WHERE EMPNO = '000111'
Antes:
Después:
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
38250.00
40175.00
25000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
52750.00
41250.00
38250.00
40175.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
A00
B01
C01
E01
HAAS
THOMPSON
KWAN
GEYER
000010
000020
000030
000050
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
48
02/03/2022
Borrar filas
▪ Eliminar todas las tuplas de cuentas en la sucursal de
‘Perryridge’
delete from account
where branch_name = 'Perryridge'
▪ Eliminar todas las cuentas en cada sucursal ubicada en la
ciudad ‘Needham’.
delete from account
where branch_name in (select branch_name
from branch
where branch_city = 'Needham')
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
49
02/03/2022
Eliminación mediante consulta
▪ Eliminar el registro de todas las cuentas con saldos
por debajo del promedio en el banco.
delete from account
where balance < (select avg (balance )
from account )
Problema: a medida que eliminamos tuplas del depósito, el saldo
promedio cambia
Solución usada en SQL:
1. Primero, calcule el balance promedio (avg) y encuentre todas las
tuplas que deben ser eliminadas
2. Luego, elimine las tuplas encontradas en el paso anterior (sin
recalcular el avg o volviendo a seleccionar las tuplas)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
50
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
51
02/03/2022
La instrucción UPDATE
▪ La modificación de tuplas se realiza con la sentencia UPDATE,
▪ Es posible elegir el conjunto de tuplas que se van a actualizar usando la clausula
WHERE.
▪ Ejemplos: CUENTAS (COD, DNI, NSUCURS, SALDO)
▪ Suma del 5% de interés a los saldos de todas las cuentas.
▪ UPDATE CUENTAS SET SALDO = SALDO * 1.05;
▪ Suma del 1% de bonificación a aquellas cuentas cuyo saldo sea superior a
100.000 €.
▪ UPDATE CUENTAS SET SALDO = SALDO * 1.01
WHERE SALDO > 100000;
▪ Modificación de DNI y saldo simultáneamente para el código 898.
▪ UPDATE CUENTAS SET DNI='555', SALDO=10000
WHERE COD LIKE '898';
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
52
02/03/2022
Modificar datos
UPDATE TESTEMP
SET SALARY = SALARY + 1000
WHERE WORKDEPT = 'C01'
Antes:
Después:
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
38250.00
40175.00
25000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
39250.00
40175.00
26000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
53
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
54
02/03/2022
Estructura de consulta básica
▪ SQL se basa en operaciones relacionales y de conjuntos con
ciertas modificaciones y mejoras
▪ Una consulta SQL típica tiene la forma:
select A1, A2, ..., An
from r1, r2, ..., rm
where P
▪ Ai representa un atributo
▪ Ri representa una relación
▪ P es un predicado (condición).
▪ Esta consulta es equivalente a la expresión del álgebra relacional.
▪ El resultado de una consulta SQL es una relación.
))
(
( 2
1
,
,
, 2
1 m
P
A
A
A
r
r
r
n



 


Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
55
02/03/2022
Estructura básica de la sentencia
SELECT
▪ Consta de tres cláusulas:
▪ SELECT
▪ La lista de los atributos que se incluirán en el resultado de una consulta.
▪ FROM
▪ Especifica las relaciones que se van a usar como origen en el proceso de la
consulta.
▪ WHERE
▪ Especifica la condición de filtro sobre las tuplas en términos de los atributos de las
relaciones de la cláusula FROM.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
56
02/03/2022
Estructura básica de la
sentencia SELECT
▪ Una consulta SQL tiene la forma:
SELECT A1, ..., An /* Lista de atributos */
FROM R1, ..., Rm /* Lista de relaciones. A
veces opcional */
WHERE P; /* Condición. Cláusula
opcional */
▪ Es posible que exista el mismo nombre de atributo en
dos relaciones distintas.
▪ Se añade "NOMBRE_RELACION." antes del nombre
para desambiguar.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
57
02/03/2022
La cláusula SELECT
▪ La clausula select lista los atributos deseados en el resultado de
una consulta
▪ corresponde a la operación de proyección del álgebra relacional
▪ Ejemplo: encontrar los nombres de todas las sucursales en la
relación de préstamo (loan):
select branch_name
from loan
▪ En el álgebra relacional, la consulta sería:
branch_name (loan)
▪ NOTA: Los nombres de SQL no distinguen entre mayúsculas y
minúsculas (es decir, puede usar letras mayúsculas o
minúsculas).
▪ Ej.: Branch_Name ≡ BRANCH_NAME ≡ branch_name
▪ Algunas personas usan mayúsculas donde usamos negrita.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
58
02/03/2022
La cláusula SELECT(Cont.)
▪ SQL permite valores duplicados tanto en las relaciones como
en los resultados de las consultas..
▪ Para forzar la eliminación de duplicados, inserte la palabra
clave distinct después de select
▪ Encuentre los nombres de todas las sucursales en las
relaciones de préstamo (loan) y elimine los duplicados
select distinct branch_name
from loan
▪ La palabra clave all especifica que los valores duplicados no
serán eliminados.
select all branch_name
from loan
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
59
02/03/2022
La cláusula SELECT(Cont.)
▪ Un asterisco en la cláusula de selección denota "todos los
atributos"
select *
from loan
▪ La cláusula select puede contener expresiones aritméticas que
involucran la operación, +, –, , y /, y que operan sobre
constantes o atributos de tuplas.
▪ La consulta (query):
select loan_number, branch_name, amount  100
from loan
devolvería una relación que es la misma que la relación de
préstamo (loan), excepto que el valor del atributo amount se
multiplica por 100
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
60
02/03/2022
Estructura de la sentencia SELECT
- Nombres de las tablas / vistas
- Condiciones (filtros) de selección de filas
- Nombre de las columnas
- Condiciones de selección de grupo
- Nombres de columnas
SELECT A1, …, An
FROM T1, …, Tn
WHERE P
GROUP BY Ai1, …, Ain
HAVING Q
ORDER BY Aj1, …, Ajn
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
61
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
62
02/03/2022
MERGE
▪ MERGE es la combinación de tres instrucciones:
INSERT, DELETE y UPDATE.
▪ Si hay una tabla de origen y una tabla de destino
que deseamos fusionar, con la ayuda de la
declaración MERGE podemos realizar las tres
operaciones (INSERTAR, ACTUALIZAR,
ELIMINAR) a la vez
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
63
02/03/2022
MERGE
▪ Ejemplo: Supongamos que hay dos tablas:
• PRODUCT_LIST: tabla que contiene los detalles
actuales sobre los productos disponibles con los
campos P_ID, P_NAME y P_PRICE correspondientes al
ID, nombre y precio de cada producto.
• UPDATED_LIST tabla que contiene los nuevos
detalles sobre los productos disponibles con los
campos P_ID, P_NAME y P_PRICE correspondientes al
ID, nombre y precio de cada producto.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
64
02/03/2022
MERGE
La tarea es actualizar los detalles de los productos en
PRODUCT_LIST según la UPDATED_LIST.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
65
02/03/2022
MERGE
▪ Solución: Ahora, para explicar mejor este
ejemplo, dividamos el ejemplo en pasos.
▪ Paso 1: Reconocer la tabla TARGET y
SOURCE Entonces, en este ejemplo, dado que se
solicita actualizar los productos en PRODUCT_LIST
según UPDATED_LIST,
▪ PRODUCT_LIST actuará como tabla TARGET y
▪ UPDATED_LIST actuará como tabla SOURCE.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
66
02/03/2022
MERGE
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
67
02/03/2022
MERGE
▪ Paso 2: Reconocer las operaciones a
realizar. Ahora, como se puede ver, hay tres
discrepancias entre la tabla TARGET y SOURCE,
que son:
▪ 1. El costo del COFFEE en TARGET es de 15,00 mientras
que en SOURCE es 25.00
PRODUCT_LIST
102 COFFEE 15.00
UPDATED_LIST
102 COFFEE 25.00
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
68
02/03/2022
MERGE
▪ 2. No hay ningún producto BISCUIT en SOURCE pero sí
en TARGET
▪ 3. No hay ningún producto CHIPS en TARGET pero sí en
SOURCE
PRODUCT_LIST
103 BISCUIT 20.00
UPDATED_LIST
104 CHIPS 22.00
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
69
02/03/2022
MERGE
▪ Por lo tanto, se deben realizar tres operaciones en el
TARGET de acuerdo con las discrepancias anteriores.
Estas son :
▪ 1. UPDATE operation
▪ 2. DELETE operation
▪ 3. INSERT operation
102 COFFEE 25.00
103 BISCUIT 20.00
104 CHIPS 22.00
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
70
02/03/2022
MERGE
▪ Paso 3: escribir la consulta SQL. La consulta SQL para
realizar las operaciones mencionadas anteriormente con
la ayuda de la instrucción MERGE es:
/* Seleccionar el Target (objetivo) y Source (fuente) */
MERGE PRODUCT_LIST AS TARGET
USING UPDATE_LIST AS SOURCE
/* 1. Performing the UPDATE operation */
/* If the P_ID is same,
check for change in P_NAME or P_PRICE */
ON (TARGET.P_ID = SOURCE.P_ID)
WHEN MATCHED
AND TARGET.P_NAME <> SOURCE.P_NAME
OR TARGET.P_PRICE <> SOURCE.P_PRICE
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
71
02/03/2022
MERGE
/* Update the records in TARGET */
THEN UPDATE
SET TARGET.P_NAME = SOURCE.P_NAME,
TARGET.P_PRICE = SOURCE.P_PRICE
/* 2. Performing the INSERT operation */
/* When no records are matched with TARGET table
Then insert the records in the target table */
WHEN NOT MATCHED BY TARGET
THEN INSERT (P_ID, P_NAME, P_PRICE)
VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)
/* 3. Performing the DELETE operation */
/* When no records are matched with SOURCE table
Then delete the records from the target table */
WHEN NOT MATCHED BY SOURCE
THEN DELETE
/* END OF MERGE */
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
72
02/03/2022
MERGE
▪ Salida
▪ Entonces, de esta manera, todos podemos realizar
estas tres declaraciones principales en SQL junto con
la ayuda de la declaración MERGE.
▪ Nota: En la sintaxis MERGE se puede utilizar
cualquier nombre que no sea TARGET y SOURCE. Se
usan solo para darte una mejor explicación.
PRODUCT_LIST
P_ID P_NAME P_PRICE
101 TEA 10.00
102 COFFEE 25.00
104 CHIPS 22.00
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
73
02/03/2022
MERGE en MySql
▪ MERGE no es compatible con MySQL. Sin
embargo, hay otra forma posible de hacer lo
mismo:
▪ INSERT ... ON DUPLICATE KEY UPDATE Statement
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
74
02/03/2022
INSERT ... ON DUPLICATE KEY
UPDATE (MySql)
▪ Si especifica una cláusula ON DUPLICATE KEY
UPDATE y la inserción de una fila provocaría un
valor duplicado en un índice UNIQUE o PRIMARY
KEY, se produce un UPDATE de la fila anterior.
▪ Por ejemplo, si la columna a se declara como
UNIQUE y contiene el valor 1:
▪ INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON
DUPLICATE KEY UPDATE c=c+1;
▪ La eliminación tiene que manejarse aparte
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
75
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
76
02/03/2022
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
77
02/03/2022
Data Control Language
▪ Objetivos
▪ Conocer los mecanismos de seguridad implementados
en un RDBMS y cómo usarlos
▪ Contenido
▪ Identificación de usuarios
▪ Privilegios
▪ La Declaración GRANT
▪ La Declaración REVOKE
▪ El catálogo del sistema
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
78
02/03/2022
Identificación de usuarios
Admin
FRED
Ventas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
79
02/03/2022
Privilegios
▪ Privilegios Permitidos
▪ SELECT, INSERT, UPDATE, DELETE
▪ CREATE Table, View, Procedure, Trigger, Rule, Default
▪ El propietario/creador de una tabla
automáticamente tiene todos los privilegios
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
80
02/03/2022
Privilegios Directos
Clientes Pedidos Productos Personal
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
81
02/03/2022
Privilegios indirectos
Clientes Pedidos Productos Personal
Programa
Usuario
Administrador
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
82
02/03/2022
Requerimientos de seguridad
▪ Integridad de la base de datos física
▪ Integridad de la base de datos lógica
▪ Integridad del elemento
▪ Auditabilidad
▪ Control de acceso
▪ Autenticación de usuario
▪ Disponibilidad
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
83
02/03/2022
Requerimientos de seguridad
▪ Integridad de la base de datos física
▪ inmunidad a catástrofes físicas, como cortes de
energía, fallas de medios
▪ hardware de seguridad física, UPS
▪ Respaldos regulares (regular backups)
▪ Integridad de la base de datos lógica
▪ capacidad de reconstrucción
▪ mantener un log (registro) de transacciones
▪ reverso de operaciones a partir del log para restaurar los
sistemas a un punto estable
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
84
02/03/2022
Requerimientos de seguridad
▪ Integridad del elemento
▪ la integridad de los elementos específicos de la base de datos es
su corrección o precisión
▪ verificaciones de campo
– permitir solo valores aceptables
▪ controles de acceso
– permitir que solo los usuarios autorizados actualicen elementos
▪ registro de cambios (change log)
– Usado para deshacer cambios que produjeron un error
▪ Integridad referencial (key integrity concerns)
▪ proceso de bloqueo de dos fases (two phase locking process)
▪ Auditabilidad
▪ log de operaciones read/write sobre la base de datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
85
02/03/2022
Requerimientos de seguridad
▪ Controles de acceso (similar a los Sistemas Operativos)
▪ separación lógica de usuarios por privilegios de acceso
▪ Mas complicado que en los SO debido a la complejidad de las BDs
(granularidad/inferencia/agregación)
▪ Autenticación de Usuario
▪ Puede estar separado del SO
▪ puede ser riguroso
▪ Disponibilidad
▪ Usuarios concurrentes
▪ granularity of locking
▪ reliability
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
86
02/03/2022
Autorización en SQL
Formas de autorización sobre partes de la base de datos:
▪ Read authorization - permite la lectura, pero no la
modificación de los datos.
▪ Insert authorization - permite la inserción de nuevos
datos, pero no la modificación de los datos existentes.
▪ Update authorization - permite la modificación, pero
no la eliminación de datos.
▪ Delete authorization - permite la eliminación de datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
87
02/03/2022
Autorización en SQL (Cont.)
Formas de autorización para modificar el esquema de
la base de datos:
▪ Index authorization - permite la creación y
eliminación de índices.
▪ Resources authorization - permite la creación de
nuevas relaciones.
▪ Alteration authorization - permite agregar o
eliminar atributos en una relación.
▪ Drop authorization - permite eliminar relaciones.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
88
02/03/2022
Vistas
▪ Proporcione un mecanismo para ocultar ciertos
datos de la vista de ciertos usuarios.
▪ Para crear una vista usamos el comando :
create view v as <query expression>
donde:
▪ <query expression> es cualquier expresión legal
▪ El nombre de la vista está representado por v
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
89
02/03/2022
Autorización y Vistas
▪ Los usuarios pueden recibir autorización sobre las vistas, sin
que se les otorgue ninguna autorización sobre las relaciones
utilizadas en la definición de la vista.
▪ La capacidad de las vistas para ocultar datos sirve tanto para
simplificar el uso del sistema como para mejorar la seguridad
al permitir que los usuarios accedan solo a los datos que
necesitan para su trabajo.
▪ Se puede usar una combinación de seguridad a nivel
relacional y seguridad a nivel de vista para limitar el acceso
de un usuario a los datos que necesita.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
90
02/03/2022
Ejemplo de una Vista
▪ Supongamos que un empleado de banco necesita saber los
nombres de los clientes de cada sucursal, pero no está
autorizado para ver información específica del préstamo (loan).
▪ Enfoque: denegar el acceso directo a la relación de préstamo, pero
otorgar acceso a la vista de préstamos de clientes, que consta solo
de los nombres de los clientes y las sucursales en las que tienen
un préstamo
▪ La vista de préstamos al cliente se define en SQL de la siguiente
manera :
create view cust-loan as
select branchname, customer-name
from borrower, loan
where borrower.loan-number = loan.loan-number
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
91
02/03/2022
Ejemplo de una Vista (Cont.)
▪ El oficinista está autorizado a ver el resultado de la consulta:
select *
from cust-loan
▪ Cuando el procesador de consultas traduce el resultado en
una consulta sobre las relaciones reales en la base de datos,
obtenemos una consulta sobre prestatario y préstamo.
▪ Se debe verificar la autorización en la consulta del empleado
antes de que el procesamiento de la consulta reemplace una
vista por la definición de la vista.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
92
02/03/2022
Autorización sobre Vistas
▪ La creación de la vista no requiere autorización de
recursos ya que no se está creando una relación real.
▪ El creador de una vista obtiene solo aquellos privilegios
que no proporcionan autorización adicional más allá de
la que ya tenía.
▪ P.ej. si el creador del view cust-loan solo había leído (read)
la autorización en el prestatario (borrower) y el préstamo
(loan), solo obtiene la autorización de lectura en cust-loan
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
93
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
94
02/03/2022
Otorgamiento de privilegios
▪ El paso de la autorización de un usuario a otro puede
representarse mediante un gráfico de autorización.
▪ Los nodos de este gráfico son los usuarios.
▪ La raíz del gráfico es el administrador de la base de datos.
▪ Considere gráfico para autorización de actualización en
loan
▪ Una flecha Ui → Uj indica que el
usuario Ui ha concedido autorización
de actualización en loan a Uj.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
95
02/03/2022
Grafo de concesión de autorización
▪ Requerimiento: Todas las flechas en un grafo de autorización deben ser
parte de alguna ruta que se origine con el administrador de la base de
datos.
▪ Si un DBA revoca la autorización sobre U1:
▪ La autorización debe ser revocada de U4 ya que U1 ya no tiene autorización
▪ La autorización no debe ser revocada de U5 ya que U5 tiene otra ruta de
autorización de DBA a través de U2
▪ Debe evitar ciclos de autorizaciones sin camino
desde la raíz :
▪ DBA concede autorización a U7
▪ U7 concede autorización a U8
▪ U8 concede autorización a U7
▪ DBA revoca autorización de U7
▪ Debe revocarse la autorización de U7 a U8 y
desde U8 a U7 ya que ya no hay una ruta de
DBA a U7 o U8.
u7
u8
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
96
02/03/2022
Especificación de autorización en SQL
▪ La declaración grant se utiliza para conferir autorización.
grant <lista de privilegios>
on <nombre de la relación o de la vista> to <lista de usuarios>
▪ <lista de usuarios> is:
▪ un user-id
▪ public, que permite a todos los usuarios válidos el privilegio concedido
▪ Un rol (se revisará más de esto después)
▪ Otorgar un privilegio sobre una vista no implica otorgar ningún
privilegio sobre las relaciones subyacentes.
▪ El otorgante del privilegio ya debe tener el privilegio sobre el
elemento especificado (o ser el administrador de la base de datos).
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
97
02/03/2022
Autorización
Formas de autorización sobre partes de la base de datos:
▪ Read - permite la lectura, pero no la modificación de los datos.
▪ Insert - permite la inserción de nuevos datos, pero no la modificación de los
datos existentes.
▪ Update - permite la modificación, pero no la eliminación de datos.
▪ Delete - permite la eliminación de datos.
Formas de autorización para modificar el esquema de la base de datos:
▪ Index - permite la creación y eliminación de índices.
▪ Resources - permite la creación de nuevas relaciones.
▪ Alteration - permite agregar o eliminar atributos en una relación.
▪ Drop - permite borrar relaciones.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
98
02/03/2022
Privilegios en SQL
▪ select: permite el acceso de lectura a la relación, o la capacidad de
consultar usando la vista
▪ Ejemplo: conceder a usuarios U1, U2, y U3 la autorización select
sobre la relación branch:
grant select on branch to U1, U2, U3
▪ insert: la posibilidad de insertar tuplas(registros)
▪ update: la capacidad de actualizar usando la declaración de
actualización de SQL
▪ delete: la posibilidad de eliminar tuplas.
▪ references: capacidad de declarar claves foráneas al crear relaciones.
▪ usage: En SQL-92; autoriza a un usuario a usar un dominio específico
▪ all privileges: utilizado como una forma abreviada para todos los
privilegios permitidos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
99
02/03/2022
Privilegio Para otorgar privilegios
▪ with grant option: permite que un usuario, al que
se le otorga un privilegio, pase el privilegio a otros
usuarios.
▪ Ejemplo:
grant select on branch to U1 with grant option
otorga a U1 los privilegios de select sobre branch y permite que
U1 conceda este privilegio a otros
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
100
02/03/2022
Roles
▪ Los roles permiten que los
privilegios comunes para
una clase de usuarios se
puedan especificar solo una
vez creando un "rol"
correspondiente.
▪ Los privilegios se pueden
otorgar o revocar a los roles,
de la misma forma que se lo
hace con los usuarios
▪ Los roles se pueden asignar
a los usuarios, e incluso a
otros roles
create role teller
create role manager
grant select on branch to teller
grant update (balance) on
account to teller
grant all privileges on account
to manager
grant teller to manager
grant teller to alice, bob
grant manager to avi
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
101
02/03/2022
Revocación de autorizaciones en SQL
▪ La sentencia revoke es utilizada para revocar la autorización.
revoke<privilege list>
on <relation name or view name> from <user list> [restrict|cascade]
▪ Ejemplo:
revoke select on branch from U1, U2, U3 cascade
▪ La revocación de un privilegio de un usuario puede causar que
otros usuarios también pierdan ese privilegio; denominada
cascada de revoke.
▪ Podemos evitar la cascada especificando restrict:
revoke select on branch from U1, U2, U3 restrict
Con restrict, el comando revoke fallará si se requieren
revocaciones en cascada.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
102
02/03/2022
Revocación de autorizaciones en SQL
(Cont.)
▪ <privilege-list> puede ser all para revocar todos los
privilegios que pueden tener los revocados(revokee).
▪ Si <revokee-list> incluye public, entonces todos los
usuarios pierden el privilegio excepto aquellos que se
lo otorgan explícitamente.
▪ Si el mismo privilegio fue otorgado dos veces al mismo
usuario por diferentes beneficiarios, el usuario puede
conservar el privilegio después de la revocación.
▪ Todos los privilegios que dependen del privilegio que
se revoca también se revocan.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
103
02/03/2022
Limitaciones de la autorización en SQL
▪ SQL no admite la autorización a nivel de tupla
▪ P.ej. no podemos restringir a los estudiantes para que solo
vean (las tuplas que almacenan) sus propias calificaciones
▪ Con el crecimiento del acceso web a las bases de datos, los
accesos a las bases de datos provienen principalmente de los
servidores de aplicaciones.
▪ Los usuarios finales no tienen ID de usuario de base de
datos, todos están asignados al mismo ID de usuario de
base de datos
▪ Todos los usuarios finales de una aplicación (como una
aplicación web) pueden asignarse a un solo usuario de base de
datos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
104
02/03/2022
Limitaciones de la autorización en SQL
▪ La tarea de autorización en los casos anteriores recae en el
programa de aplicación, sin soporte de SQL
▪ Beneficio: la aplicación puede implementar autorizaciones
detalladas, como tuplas individuales.
▪ Inconveniente: la autorización debe realizarse en el código
de la aplicación y puede estar dispersa por toda la
aplicación
▪ Verificar la ausencia de lagunas de autorización se vuelve
muy difícil ya que requiere leer grandes cantidades de
código de aplicación
▪ ¿Solución? Programación Orientada a aspectos-> Se revisará en
la asignatura de “Diseño y Arquitectura de Software”
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
105
02/03/2022
Resumen
▪ Identificación de usuarios
▪ Los usuarios del sistema se pueden agrupar para facilitar el manejo de la
seguridad
▪ Privilegios
▪ Los permisos se pueden otorgar en varios niveles y se pueden otorgar directa
o indirectamente utilizando vistas y procedimientos almacenados.
▪ La declaración GRANT
▪ Se utiliza para otorgar permisos a las personas sobre los objetos de la base de
datos.
▪ La declaración REVOKE
▪ Se utiliza para quitar permisos.
▪ El catálogo del sistema
▪ Toda la información sobre los permisos se almacena dentro del catálogo.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
106
02/03/2022
GRANT/ REVOKE
▪ GRANT privilege ON tablename TO list
[ WITH GRANT OPTION]
▪ Ejemplo:
GRANT ALL ON dept TO John
GRANT SELECT ON dept TO sally WITH GRANT OPTION
GRANT SELECT, UPDATE, INSERT ON dept TO Jim, Mike, Howard
REVOKE privilege ON tablename FROM list [CASCADE]
e.g REVOKE SELECT ON dept FROM Sally CASCADE
▪ Sin embargo, en gran medida se hace en estos días a
través de casillas de verificación en cuadrículas en
herramientas GUI de administración de la BD
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
107
02/03/2022
DCL Lenguaje De Control De Datos:
SENTENCIA GRANT
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON {tbl_name | * | *.* | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR count |
MAX_UPDATES_PER_HOUR count |
MAX_CONNECTIONS_PER_HOUR count |
MAX_USER_CONNECTIONS count]]
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
108
02/03/2022
DCL Lenguaje De Control De Datos:
SENTENCIA GRANT
Ejemplo:
• GRANT SELECT ON sucursal TO u1, u2, u3;
• GRANT SELECT, INSERT, UPDATE ON prueba.estudiante TO mzabala IDENTIFIED
BY ‘1234‘;
• GRANT USAGE ON * TO anonimo@localhost IDENTIFIED BY 'clave';
• GRANT USAGE ON * TO anonimo@10.28.56.15 IDENTIFIED BY 'clave';
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
SENTENCIA REVOKE
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
Ejemplo:
REVOKE SELECT ON prueba.estudiante FROM mzabala;
REVOKE SELECT ON prueba.gente FROM anonimo;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
109
02/03/2022
DCL Lenguaje De Control De Datos:
DROP USER
La sentencia DROP USER elimina la o las cuentas de usuario MySQL.
• Para usarla se debe revocar los privilegios asignados al usuario.
• La sentencia DROP USER debe poseer el privilegio GRANT OPTION
para la base de datos mysql. Cada cuenta se nombra usando el
mismo formato que para GRANT o REVOKE; por ejemplo,
'jeffrey'@'localhost'. Las partes del usuario y la máquina del nombre
de la cuenta corresponden a los valores de las columnas User y Host
del registro de la tabla user para la cuenta.
• DROP USER se añadió en MySQL 4.1.1 y originalmente sólo borra
cuentas que no tengan privilegios, en MySQL 5.0.2, fue modificada
para borrar también cuentas que tengan privilegios.
DROP USER user;
Ejemplo:
DROP USER mzabala;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
110
02/03/2022
DCL Lenguaje De Control De Datos:
SHOW GRANTS
La sentencia SHOW GRANTS permite visualizar los privilegios que
posee un usuario definido en MySQL, para posteriormente poder ser
revocados en caso que se desee eliminarlos.
Ejemplo:
SHOW GRANTS FOR 'root'@'localhost';
SHOW GRANTS FOR user;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
111
02/03/2022
Non-ANSI Privileges
▪ Sample Non ANSI Table Privileges
GRANT ALTER ON dept TO Sally
GRANT INDEX ON dept TO John
▪ Sample Non ANSI Database Privileges
GRANT CONNECT ON database TO John, Ann
GRANT RESOURCE TO Alex
GRANT DBA TO Simon
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
112
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
113
02/03/2022
Transacciones
▪ Una transacción es una acción, o una serie de
acciones, realizadas por un solo usuario o un
programa de aplicación, que lee o actualiza el
contenido de una base de datos.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
114
02/03/2022
Transacciones
▪ Una transacción es una o más sentencias que se toman
como una unidad (todo termina bien o todo se aborta)
▪ Una transacción es una unidad lógica de trabajo
▪ Definida para las reglas del negocio
▪ Típicamente incluye al menos una modificación de datos
▪ Pasa la base de datos de un estado consistente a otro
▪ Una transacción tiene dos posibles salidas:
▪ Committed
▪ Todas las modificaciones quedan en firme
▪ Rolled back
▪ Las modificaciones retornan a su estado inicial
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
115
02/03/2022
Rol de las transacciones
▪ Proteger los datos de las fallas del software,
hardware, y potencia eléctrica
▪ Permitir el aislamiento de datos de tal forma que
varios usuarios pueden acceder simultáneamente a
los datos sin interferencia
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
116
02/03/2022
Cuándo usar transacciones?
▪ Cuando un conjunto de sentencias se deben
comportar como una unidad
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
117
02/03/2022
Lenguaje de Control de Transacciones
(TCL)
▪ Los comandos del lenguaje de control de
transacciones se utilizan para administrar
transacciones en la base de datos.
▪ Estos se utilizan para administrar los cambios
realizados por las declaraciones DML.
▪ También permite que las declaraciones se agrupen
en transacciones lógicas.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
118
02/03/2022
Sentencias para transacciones
▪ COMMIT: se utiliza para guardar permanentemente
cualquier transacción en la base de datos.
▪ ROLLBACK: restaura la base de datos al último
estado confirmado. También se usa con el
comando savepoint para saltar a un punto de
guardado en una transacción.
▪ SAVEPOINT: se usa para guardar temporalmente
una transacción para que pueda retroceder a ese
punto cuando sea necesario.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
119
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
120
02/03/2022
Transacciones
➢ Una transacción es una
"unidad lógica de
trabajo" en una base
de datos
➢ Cada transacción hace
algo en la base de
datos
➢ Ninguna parte de él por
sí sola logra nada de
utilidad o interés
➢ Las transacciones son la
unidad de recuperación,
consistencia e integridad
también.
➢ Propiedades ACID
➢ Atomicidad
➢ Consistencia
➢ Isolation (Aislamiento)
➢ Durabilidad
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
121
02/03/2022
Atomicidad y Consistencia
➢ Atomicidad
➢ Transacciones son
atómicas – no tienen
partes (conceptualmente)
➢ No pueden ser
ejecutadas parcialmente;
no debe ser detectable
que se intercalan con
otra transacción.
➢ Consistencia
➢ Las transacciones
llevan la base de datos
de un estado
consistente a otro
➢ En medio de una
transacción, la base de
datos puede no ser
consistente
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
122
02/03/2022
Isolation y Durabilidad
➢ Isolation
➢ Los efectos de una
transacción no son visibles
para otras transacciones
hasta que se haya
completado
➢ Desde fuera la transacción
ha ocurrido o no
➢ Para mí, esto en realidad
suena como una
consecuencia de la
atomicidad...
➢ Durabilidad
➢ Una vez que se ha
completado una
transacción, sus cambios
se hacen permanentes
➢ Incluso si el sistema falla,
los efectos de una
transacción deben
permanecer en su lugar
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
123
02/03/2022
Ejemplo de transacción
➢ Transferir $50 desde una
cuenta A a una cuenta B
Read(A)
A = A - 50
Write(A)
Read(B)
B = B+50
Write(B)
Atomicity - no debe tomar
dinero de A sin dárselo a B
Consistency - el dinero no se
pierde ni se gana
Isolation - otras consultas no
deberían ver cambios en A o
B hasta que se completen
las operaciones
Durability - el dinero no vuelve
a A
transacción
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
124
02/03/2022
El manejador de Transacciones
➢ El administrador de
transacciones aplica
las propiedades ACID
➢ Programa las
operaciones de
transacciones
➢ COMMIT y ROLLBACK
son utilizados para
asegurar la atomicidad
➢ Se utilizan bloqueos(Locks)
o marcas de
tiempo(timestamps) para
garantizar la consistencia y
el aislamiento de las
transacciones simultáneas
➢ Se mantiene un
registro(log) para
garantizar la durabilidad en
caso de falla del sistema
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
125
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Filtros
▪ Agrupación
▪ Ordenación
▪ Filtros de grupo
▪ Subconsultas
▪ Consultas multitablas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
126
02/03/2022
Sentencias para transacciones
▪ Cuatro sentencias definen la estructura de una
transacción
▪ start tran
▪ commit tran
▪ rollback tran
▪ savepoint
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
127
02/03/2022
start tran y commit tran
▪ start tran
▪ Inicia la transacción
▪ commit tran
▪ Finaliza la transacción
▪ Todas las modificaciones quedan en firme
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
128
02/03/2022
start tran y commit tran
▪ Sintaxis:
start { tran | transaction } [ transaction_name ]
commit [ tran | transaction | work ] [ transaction_name | savepoint_name ]
▪ Ejemplo:
-- @amount is a monetary amount to be transferred.
-- @from_account is the account to be debited.
-- @to_account is the account to be credited.
start tran
update accounts
set balance = balance - @amount
where account = @from_account
update accounts
set balance = balance + @amount
where account = @to_account
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
129
02/03/2022
Ejemplo de start tran y commit tran
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
130
02/03/2022
COMMIT y ROLLBACK
➢ COMMIT señala el final
exitoso de una transacción
➢ Cualquier cambio realizado
por la transacción debe
guardarse
➢ Estos cambios ahora son
visibles para otras
transacciones
➢ ROLLBACK señala el final
fallido de una transacción
➢ Cualquier cambio realizado
por la transacción debe ser
deshecho
➢ Ahora es como si la
transacción nunca hubiera
existido.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
131
02/03/2022
rollback tran
▪ rollback tran termina una transacción
▪ Deshace las modificaciones que se hayan hecho
▪ La ejecución continua con la instrucción siguiente a
rollback
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
132
02/03/2022
Sintaxis para rollback tran
▪ Sintaxis:
rollback [ tran [ transaction_name | savepoint_name ] |
transaction [ transaction_name | savepoint_name ] |
work [ transaction_name | savepoint_name ] ]
▪ Ejemplo:
-- If @from_account is below 0, abort the transfer
start tran
update accounts
set balance = balance - @amount
where account = @from_account
update accounts
set balance = balance + @amount
where account = @to_account
if (select balance from accounts
where account = @from_account) < 0
rollback tran
else
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
133
02/03/2022
Ejemplo
para
rollback
tran DROP DATABASE IF EXISTS test;
CREATE DATABASE test CHARACTER SET utf8mb4;
USE test;
CREATE TABLE cliente (
id INT UNSIGNED PRIMARY KEY,
nombre CHAR (20) );
START TRANSACTION;
INSERT INTO cliente VALUES (1, 'Pepe’);
COMMIT;
-- 1. ¿Qué devolverá esta consulta?
SELECT * FROM cliente;
SET AUTOCOMMIT=0;
INSERT INTO cliente VALUES (2, 'Maria’);
INSERT INTO cliente VALUES (20, 'Juan’);
DELETE FROM cliente WHERE nombre = 'Pepe’;
-- 2. ¿Qué devolverá esta consulta?
SELECT * FROM cliente;
ROLLBACK;
-- 3. ¿Qué devolverá esta consulta?
SELECT * FROM cliente;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
134
02/03/2022
Ejemplo con begin tran, commit tran,
rollback tran
▪ Crear una tabla:
select * into mytitles
from pubs2..titles
▪ Iniciar una transacción:
start tran
▪ Borrar todas las filas de la tabla:
delete from mytitles
select * from mytitles
▪ Deshacer el borrado:
rollback tran
select * from mytitles
▪ Iniciar una transacción:
start tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
135
02/03/2022
• Borrar todas las filas de la tabla:
delete from mytitles
select * from mytitles
• Dejar en firme el borrado:
commit tran
select * from mytitles
• Borrar los objetos de base de datos
creados:
drop table mytitles
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
136
02/03/2022
savepoint
▪ savepoint crea un nombre de un punto de
grabación
▪ Es una extensión SQL que permite rollbacks parciales
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
137
02/03/2022
Sintaxis para savepoint
▪ Sintaxis:
savepoint { transaction | tran } savepoint_name
▪ Ejemplo:
-- The rollback rolls back to point1. This undoes
-- the delete of business books, but not the
-- delete of mod_cook books. Execution resumes
-- with the statement after the rollback, which
-- deletes popular_comp books.
start tran
delete from titles where type = "mod_cook"
savepoint tran point1
delete from titles where type = "business"
rollback tran point1
delete from titles where type = "popular_comp"
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
138
02/03/2022
Ejemplo con savepoints
▪ Crear una tabla:
select * into mytitles
from pubs2..titles
▪ Iniciar una transacción:
start tran
▪ Borrar datos de una tabla:
delete from mytitles
where type = "psychology"
select * from mytitles
▪ Establecer un savepoint:
savepoint tran title_sav
▪ Borrar los restantes datos de la tabla:
delete from mytitles
select * from mytitles
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
139
02/03/2022
• Restaurar hasta el savepoint:
rollback tran title_sav
select * from mytitles
• Dejar en firme la transacción:
commit tran
• Borrar los objetos de base de datos
creados:
drop table mytitles
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
140
02/03/2022
Ejemplo
con
savepoints DROP DATABASE IF EXISTS test;
CREATE DATABASE test CHARACTER SET utf8mb4;
USE test;
CREATE TABLE producto (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL, precio DOUBLE );
INSERT INTO producto (id, nombre) VALUES (1, 'Primero’);
INSERT INTO producto (id, nombre) VALUES (2, 'Segundo’);
INSERT INTO producto (id, nombre) VALUES (3, 'Tercero’);
-- 1. Comprobamos las filas que existen en la tabla
SELECT * FROM producto;
-- 2. Ejecutamos una transacción que incluye un SAVEPOINT
START TRANSACTION;
INSERT INTO producto (id, nombre) VALUES (4, 'Cuarto’);
SAVEPOINT sp1;
INSERT INTO producto (id, nombre) VALUES (5, 'Cinco’);
INSERT INTO producto (id, nombre) VALUES (6, 'Seis’);
ROLLBACK TO sp1;
-- 3. ¿Qué devolverá esta consulta?
SELECT * FROM producto;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
141
02/03/2022
Transacciones anidadas
▪ Se pueden tener transacciones anidadas:
▪ El start y commit más externos comienzan y finalizan
las transacciones
▪ Las sentencias start y commit internos solamente
guardan un registro del nivel de anidamiento
▪ Ejemplo:
start tran
delete from titles where type = "mod_cook"
start tran
delete from titles where type = "business"
start tran
delete from titles where type = "trad_cook"
commit tran -- No deletes committed yet.
commit tran -- No deletes committed yet.
commit tran -- All deletes committed here.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
142
02/03/2022
Rollbacks anidados
▪ Cuando se ejecutan rollback anidados sin puntos de
grabación:
▪ El rollback deshace todas las transacciones en progreso,
sin importar el nivel de anidamiento del rollback
▪ Termina la transacción
▪ La ejecución continúa con la sentencia siguiente al rollback
▪ Ejemplo:
start tran
delete from titles where type = "mod_cook"
start tran
delete from titles where type = "business"
start tran
delete from titles where type = "trad_cook"
rollback tran -- Entire transaction rolled back
commit tran -- This statement has no effect
commit tran -- This statement has no effect
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
143
02/03/2022
Transacciones y el registro de transacciones
▪ El registro de transacciones almacena los efectos de
cada insert, update y delete
▪ El sistema utiliza el registro de transacciones para
rehacer las transacciones que se reversaron
▪ Se registra el comienzo de una transacción, los
commits y rollbacks
▪ Si un servidor falla durante una transacción, no hay registro
de un rollback o commit
▪ Durante la recuperación (recovery), las modificaciones en
transacciones sin un registro de rollback o commit no
tendrán efecto. Si las modificaciones fueron grabadas en
disco, se revertirán.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
144
02/03/2022
Modo de transacción
▪ Un modo de transacción especifica cómo el
servidor debe definir las transacciones
▪ Dos modos de transacción
▪ Unchained
▪ Chained
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
145
02/03/2022
Modo unchained
▪ En modo unchained, se requiere explícitamente de una
sentencia start tran
▪ También se requiere de commit tran o rollback tran
explícitos
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
146
02/03/2022
Ejemplo de modo Unchained
set chained off
start tran
delete salesdetail
where stor_id = "5023"
and ord_num = "AB-123-DEF-425-1Z3"
if @@error <> 0
begin
rollback tran
return
end
delete sales
where stor_id = "5023"
and ord_num = "AB-123-DEF-425-1Z3"
if @@error <> 0
begin
rollback tran
return
end
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
147
02/03/2022
Modo chained
▪ En modo chained, el servidor ejecuta un start implícito
antes de:
▪ Sentencias DML– insert, update, delete, select
▪ Sentencias de Cursor– open, fetch
▪ Se requiere de commit tran o rollback tran explícitos
▪ Este modo es ANSI compliant
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
148
02/03/2022
Ejemplo de modo chained
set chained on
-- The server executes an implicit begin tran before
-- the next statement.
delete salesdetail
where stor_id = "5023"
and ord_num = "AB-123-DEF-425-1Z3"
if @@error <> 0
begin
rollback tran
return
end
delete sales
where stor_id = "5023"
and ord_num = "AB-123-DEF-425-1Z3"
if @@error <> 0
begin
rollback tran
return
end
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
149
02/03/2022
Ejemplo
start tran
insert sales values
("5023", "AB-123-DEF-425-1Z3", "Oct 31 1985")
if @@error <> 0
begin
rollback transaction
return
end
insert salesdetail values
("5023", "AB-123-DEF-425-1Z3", "TC4203",
2500, 60.5)
if @@error <> 0
begin
rollback transaction
return
end
commit transaction
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
150
02/03/2022
Ejemplo
start tran
update publishers
set pub_id = "9999"
where pub_id = "9988"
/* check for system error or no rows affected
*/
if @@error <> 0 or @@rowcount <> 1
begin
rollback tran /* Rollback to begin
tran*/
return
end
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
151
02/03/2022
update titles
set pub_id = "9999" -- cascade change to titles
where pub_id = "9988"
if @@error <> 0
begin
rollback tran /* Rollback both updates*/
return
end
/* You might not check @@rowcount for the
** update to the titles table because a publisher
** may not have any titles associated with it.
** A message sent by a print or raiserror
** statement may be used to advise the user that
** no rows were modified in titles. */
commit tran
Ejemplo
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
152
02/03/2022
Ejemplo
• Batch que contiene transacción:
declare @err int, @rows int
start tran
update publishers
set pub_id = "x999"
where pub_id = "0736"
select @err = @@error, @rows = @@rowcount
if @err <> 0
begin
rollback tran
raiserror 31001, "0736"
return
end
if @rows = 0
begin
rollback tran
raiserror 35001, "publishers"
return
end
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
153
02/03/2022
Ejemplo
update titles -- cascade change to titles
set pub_id = "x999"
where pub_id = "0736"
select @err = @@error
if @err <> 0
begin
rollback tran
raiserror 31002, "0736"
return
end
commit tran
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
154
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Ordenación
▪ Filtros
▪ Agrupación
▪ Consultas multitablas
▪ Filtros de grupo
▪ Subconsultas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
155
02/03/2022
Estructura de la sentencia SELECT
- Nombres de las tablas / vistas
- Condiciones (filtros) de selección de filas
- Nombre de las columnas
- Condiciones de selección de grupo
- Nombres de columnas
SELECT A1, …, An
FROM T1, …, Tn
WHERE P
GROUP BY Ai1, …, Ain
HAVING Q
ORDER BY Aj1, …, Ajn
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
156
02/03/2022
Esquema de ejemplos - DB Employees
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
157
02/03/2022
Esquema de ejemplos - DB Employees
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
158
02/03/2022
Esquema de ejemplos - DB Employees
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
159
02/03/2022
Tablas para Ejemplos - Employee
CREATE TABLE EMPLOYEE
(EMPNO CHARACTER(6) PRIMARY KEY
,FIRSTNME VARCHAR(12) NOT NULL
,MIDINIT CHARACTER(1)
,LASTNAME VARCHAR(15) NOT NULL
,WORKDEPT CHARACTER(3)
,PHONENO CHARACTER(4)
,HIREDATE DATE
,JOB CHARACTER(8)
,EDLEVEL SMALLINT NOT NULL
,SEX CHARACTER(1)
,BIRTHDATE DATE
,SALARY DECIMAL(9,2)
,BONUS DECIMAL(9,2)
,COMM DECIMAL(9,2))
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
160
02/03/2022
Tablas para Ejemplos - Employee
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
161
02/03/2022
Tablas para Ejemplos - Department
CREATE TABLE DEPARTMENT
(DEPTNO CHARACTER(3) PRIMARY KEY
,DEPTNAME VARCHAR(36) NOT NULL
,MGRNO CHARACTER(6)
,ADMRDEPT CHARACTER(3) NOT NULL
,LOCATION CHARACTER(16));
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
162
02/03/2022
Tablas para Ejemplos - Project
CREATE TABLE `DEPARTMENT` (
`DEPTNO` char(3) NOT NULL,
`DEPTNAME` varchar(36) NOT NULL,
`MGRNO` char(6) DEFAULT NULL,
`ADMRDEPT` char(3) NOT NULL,
`LOCATION` char(16) DEFAULT NULL);
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
163
02/03/2022
Proyección de algunas columnas
DEPTNAME ADMRDEPT
DEPTNO
SPIFFY COMPUTER SERVICE DIV.
PLANNING
INFORMATION CENTER
DEVELOPMENTCENTER
MANUFACTURING SYSTEMS
ADMINISTRATION SYSTEMS
SUPPORT SERVICES
OPERATIONS
SOFTWARE SUPPORT
A00
A00
A00
A00
D01
D01
A00
E01
E01
A00
B01
C01
D01
D11
D21
E01
E11
E21
SELECT DEPTNO, DEPTNAME, ADMRDEPT
FROM DEPARTMENT
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
164
02/03/2022
Eliminación de filas duplicadas
▪ SQL permite duplicados en el resultado
▪ Para eliminar las tuplas repetidas se utiliza la cláusula DISTINCT.
▪ También es posible pedir explícitamente la inclusión de filas repetidas
mediante el uso de la cláusula ALL.
ADMRDEPT
A00
A00
A00
A00
D01
D01
A00
E01
E01
SELECT ADMRDEPT
FROM DEPARTMENT
ADMRDEPT
A00
D01
E01
SELECT DISTINCT ADMRDEPT
FROM DEPARTMENT
SELECT ALL ADMRDEPT
FROM DEPARTMENT
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
165
02/03/2022
Eliminación de filas duplicadas
▪ ¿Qué trabajos realiza cada departamento?
WORKDEPT
A00
A00
A00
B01
C01
C01
D11
D11
D21
D21
E01
E11
E11
E21
E21
JOB
CLERK
PRES
SALESREP
MANAGER
ANALYST
MANAGER
DESIGNER
MANAGER
CLERK
MANAGER
MANAGER
MANAGER
OPERATOR
FIELDREP
MANAGER
SELECT DISTINCT WORKDEPT, JOB
FROM EMPLOYEE
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
166
02/03/2022
Proyección de todos los atributos
▪ Se puede pedir la proyección de todos los atributos de
la consulta mediante utilizando el símbolo '*'
▪ La tabla resultante contendrá todos los atributos de las
tablas que aparecen en la cláusula FROM.
SELECT * FROM DEPARTMENT
SPIFFY COMPUTER SERVICE DIV.
PLANNING
INFORMATION CENTER
DEVELOPMENTCENTER
MANUFACTURING SYSTEMS
ADMINISTRATION SYSTEMS
SUPPORT SERVICES
OPERATIONS
SOFTWARE SUPPORT
DEPTNAME ADMRDEPT LOCATION
MGRNO
DEPTNO
A00
A00
A00
A00
D01
D01
A00
E01
E01
000010
000020
000030
- - - - - -
000060
000070
000050
000090
000100
A00
B01
C01
D01
D11
D21
E01
E11
E21
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
167
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Ordenación
▪ Filtros
▪ Consultas multitablas
▪ Agrupación
▪ Filtros de grupo
▪ Subconsultas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
168
02/03/2022
Estructura de la sentencia SELECT
- Nombres de las tablas / vistas
- Condiciones (filtros) de selección de filas
- Nombre de las columnas
- Condiciones de selección de grupo
- Nombres de columnas
SELECT A1, …, An
FROM T1, …, Tn
WHERE P
GROUP BY Ai1, …, Ain
HAVING Q
ORDER BY Aj1, …, Ajn
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
169
02/03/2022
Salida ordenada
▪ SQL permite controlar el orden en el que se presentan las tuplas
de una relación mediante la cláusula ORDER BY.
▪ La cláusula ORDER BY tiene la forma
ORDER BY A1 <DIRECCION>, ..., An <DIRECCION>
▪ A1, ..., An son atributos de la relación resultante de la consulta
▪ Ai <DIRECCION> controla si la ordenación es Ascendente 'ASC' o
descendente 'DESC' por el campo Ai. Por defecto la ordenación se
realiza de manera ascendente.
▪ La ordenación se realiza tras haber ejecutado la consulta sobre
las tuplas resultantes.
▪ La ordenación puede convertirse en una operación costosa
dependiendo del tamaño de la relación resultante.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
170
02/03/2022
Salida ordenada (cont.)
SELECT DEPTNO, DEPTNAME, ADMRDEPT
FROM DEPARTMENT
ORDER BY ADMRDEPT ASC
SPIFFY COMPUTER SERVICE DIV.
INFORMATION CENTER
PLANNING
SUPPORTSERVICES
DEVELOPMENTCENTER
MANUFACTURING SYSTEMS
ADMINISTRATION SYSTEMS
SOFTWARE SUPPORT
OPERATIONS
DEPTNAME ADMRDEPT
DEPTNO
A00
A00
A00
A00
A00
D01
D01
E01
E01
A00
C01
B01
E01
D01
D11
D21
E21
E11
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
171
02/03/2022
Salida ordenada (cont.)
SELECT DEPTNO, DEPTNAME, ADMRDEPT
FROM DEPARTMENT
ORDER BY ADMRDEPT ASC, DEPTNO DESC
SUPPORT SERVICES
DEVELOPMENT CENTER
INFORMATION CENTER
PLANNING
SPIFFY COMPUTER SERVICE DIV.
ADMINISTRATION SYSTEMS
MANUFACTURING SYSTEMS
SOFTWARE SUPPORT
OPERATIONS
DEPTNAME DEPTNO
ADMRDEPT
A00
A00
A00
A00
A00
D01
D01
E01
E01
E01
D01
C01
B01
A00
D21
D11
E21
E11
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
172
02/03/2022
Contenido
▪ Lenguaje de Definición de Datos
(DDL)
▪ Sentencia Create
▪ Sentencia Alter
▪ Sentencia Drop
▪ Sentencia Truncate.
▪ Sentencia Rename
▪ Lenguaje de Manipulación de
Datos (DML)
▪ Sentencia Insert
▪ Sentencia Delete
▪ Sentencia Update
▪ Sentencia Select
▪ Sentencia Merge
▪ Lenguaje de Control de Datos
(DCL)
▪ Sentencias Grant y Revoke
▪ Lenguaje de Control de
Transacciones (TCL)
▪ Propiedades ACID (Atomicidad,
Consistency, Isolation, Durability)
▪ Sentencias Commit, Rollback y
Savepoint
▪ Consultas SQL básicas
▪ Ordenación
▪ Filtros
▪ Consultas multitablas
▪ Agrupación
▪ Filtros de grupo
▪ Subconsultas
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
173
02/03/2022
Estructura de la sentencia SELECT
- Nombres de las tablas / vistas
- Condiciones (filtros) de selección de filas
- Nombre de las columnas
- Condiciones de selección de grupo
- Nombres de columnas
SELECT A1, …, An
FROM T1, …, Tn
WHERE P
GROUP BY Ai1, …, Ain
HAVING Q
ORDER BY Aj1, …, Ajn
-Describe la salida deseada con:
•Nombres de columnas
•Expresiones aritméticas
•Literales
•Funciones escalares
•Funciones de columna
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
174
02/03/2022
Selección de filas
▪ La cláusula WHERE permite filtrar las filas de la relación
resultante.
▪ La condición de filtrado se especifica como un predicado.
▪ El predicado de la cláusula WHERE puede ser simple o complejo
▪ Se utilizan los conectores lógicos AND (conjunción), OR (disyunción) y
NOT (negación)
▪ Las expresiones pueden contener
▪ Predicados de comparación
▪ BETWEEN / NOT BETWEEN
▪ IN / NOT IN (con y sin subconsultas)
▪ LIKE / NOT LIKE
▪ IS NULL / IS NOT NULL
▪ ALL, SOME/ANY (subconsultas)
▪ EXISTS (subconsultas)
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
175
02/03/2022
Selección de filas (cont.)
▪ Predicados de comparación
▪ Operadores: =, <> (es el ≠), <, <=, >=. >
▪ BETWEEN Op1 AND Op2
▪ Es el operador de comparación para intervalos de valores o
fechas.
▪ IN es el operador que permite comprobar si un valor
se encuentra en un conjunto.
▪ Puede especificarse un conjunto de valores (Val1,
Val2, …)
▪ Puede utilizarse el resultado de otra consulta SELECT.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
176
02/03/2022
Selección de filas (cont.)
▪ LIKE es el operador de comparación de cadenas de
caracteres.
▪ SQL distingue entre mayúsculas y minúsculas
▪ Las cadenas de caracteres se incluyen entre comillas
simples
▪ SQL permite definir patrones a través de los siguientes
caracteres:
▪ '%', que es equivalente a "cualquier subcadena de caracteres"
▪ '_', que es equivalente a "cualquier carácter"
▪ IS NULL es el operador de comparación de valores
nulos.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
177
02/03/2022
Ejemplo de selección de filas
▪ ¿Qué departamentos informan al A00?
SELECT DEPTNO, ADMRDEPT
FROM DEPARTMENT
WHERE ADMRDEPT='A00'
DEPTNO ADMRDEPT
A00
B01
C01
D01
E01
A00
A00
A00
A00
A00
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
178
02/03/2022
Ejemplo de selección de filas
▪ Necesito el apellido y el nivel de formación de los
empleados cuyo nivel de formación es mayor o
igual a 19
SELECT LASTNAME, EDLEVEL
FROM EMPLOYEE
WHERE EDLEVEL >= 19
EDLEVEL
LASTNAME
KWAN
LUCCHESSI
20
19
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
179
02/03/2022
Ejemplo de selección de filas
▪ Necesito el número de empleado, apellido y fecha de
nacimiento de aquellos que hayan nacido después del 1 de
enero de 1955 (inclusive).
SELECT EMPNO, LASTNAME, BIRTHDATE
FROM EMPLOYEE
WHERE BIRTHDATE >='1955-01-01'
ORDER BY BIRTHDATE
BIRTHDATE
EMPNO
000160
000100
LASTNAME
PIANKA
SPENCER
1955-04-12
1956-12-18
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
180
02/03/2022
Múltiples condiciones - AND
▪ Necesito el número de empleado, el trabajo y el
nivel de formación de los analistas con un nivel de
educación 16
SELECT EMPNO, JOB, EDLEVEL
FROM EMPLOYEE
WHERE JOB='ANALYST' AND EDLEVEL=16
EMPNO JOB EDLEVEL
000130 ANALYST 16
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
181
02/03/2022
Múltiples condiciones – AND/OR
▪ Obtener el número de empleado, el trabajo y el nivel de
formación de todos los analistas con un nivel 16 y de todos
los empleados de nivel 18. La salida se ordena por trabajo
y nivel SELECT EMPNO, JOB, EDLEVEL
FROM EMPLOYEE
WHERE (JOB='ANALYST' AND EDLEVEL=16)
OR EDLEVEL=18
ORDER BY JOB, EDLEVEL
EMPNO JOB EDLEVEL
000130
000140
000220
000020
000010
ANALYST
ANALYST
DESIGNER
MANAGER
PRES
16
18
18
18
18
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
182
02/03/2022
SELECT con BETWEEN
▪ Obtener el número de empleado y el nivel de todos
los empleados con un nivel entre 12 y 15
SELECT EMPNO, EDLEVEL
FROM EMPLOYEE
WHERE EDLEVEL BETWEEN 12 AND 15
ORDER BY EDLEVEL
000250
EMPNO EDLEVEL
000310
000290
000300
000330
000100
000230
000120
000270
12
12
14
14
14
14
14
15
15
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
183
02/03/2022
SELECT con IN
▪ Listar los apellidos y nivel de formación de todos los
empleados de nivel 14, 19 o 20.
▪ El resultado clasificado por nivel y apellido
SELECT LASTNAME, EDLEVEL
FROM EMPLOYEE
WHERE EDLEVEL IN (14, 19, 20)
ORDER BY EDLEVEL, LASTNAME
LASTNAME EDLEVEL
JEFFERSON
LEE
O'CONNELL
SMITH
SPENSER
LUCCHESI
KWAN
14
14
14
14
14
19
20
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
184
02/03/2022
Búsqueda parcial - LIKE
▪ Obtener el apellido de todos los empleados cuyo
apellido empiece por G
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE 'G%';
LASTNAME
GEYER
GOUNOT
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
185
02/03/2022
Búsqueda parcial – LIKE
Ejemplos con %
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '%SON';
THOMPSON
HENDERSON
ADAMSON
JEFFERSON
JOHNSON
THOMPSON
ADAMSON
MARINO
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '%M%N%';
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
186
02/03/2022
Búsqueda parcial – LIKE
Ejemplos con _
▪ ¿Qué empleados tienen una C como segunda letra
de su apellido?
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '_C%';
LASTNAME
SCOUTTEN
SCHNEIDER
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
187
02/03/2022
Búsqueda parcial – NOT LIKE
▪ Necesito todos los departamentos excepto aquellos
cuyo número NO empiece por 'D'
SELECT DEPTNO, DEPTNAME
FROM DEPARTMENT
WHERE DEPTNO NOT LIKE 'D%';
DEPTNAME
DEPTNO
SPIFFY COMPUTER SERVICE DIV.
PLANNING
INFORMATION CENTER
SUPPORT SERVICES
OPERATIONS
SOFTWARE SUPPORT
A00
B01
C01
E01
E11
E21
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
188
02/03/2022
Expresiones y renombramiento de columnas
SELECT EMPNO, SALARY, COMM,
SALARY+COMM AS INCOME
FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO
SALARY COMM INCOME
EMPNO
18270.00
19180.00
17250.00
15340.00
17750.00
15900.00
19950.00
1462.00
1534.00
1380.00
1227.00
1420.00
1272.00
1596.00
19732.00
20714.00
18630.00
16567.00
19170.00
17172.00
21546.00
000210
000250
000260
000290
000300
000310
000320
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
189
02/03/2022
Renombramiento de tablas
▪ Es posible obtener “copias” de una tabla situando etiquetas
junto al nombre de las tablas.
▪ Ejemplo: en el siguiente esquema de base de datos,
queremos obtener el nombre de los empleados con al menos
dos hijos.
EMP (DNI, NOM) HIJOS (DNI, NOMH)
▪ Realiza el producto cartesiano de las tres tablas y da como
resultado aquellas tuplas con igual DNI en las tres y con
distinto nombre en los hijos. ¿Solución a la repetición de
nombres de distintos empleados?
SELECT NOM
FROM EMP, HIJOS H1, HIJOS H2
WHERE EMP.DNI = H1.DNI AND EMP.DNI = H2.DNI AND
H1.NOMH <> H2.NOMH;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
190
02/03/2022
Renombramiento de tablas
(cont.)
▪ Utilizar clausula DISTINCT (elimina filas repetidas) e
incluir la clave de la tabla:
▪ Ejemplo: en el siguiente esquema de base de datos, se
piden los apellidos de cada empleado y de su supervisor.
▪ EMP (DNI, NOM, AP, SUELDO, ND, DNISUPERV)
▪ Las etiquetas también sirven para desambiguar.
SELECT DISTINCT EMP.NOM, EMP.DNI
FROM EMP, HIJOS H1, HIJOS H2
WHERE EMP.DNI = H1.DNI AND EMP.DNI = H2.DNI AND
H1.NOMH <> H2.NOMH;
SELECT E.AP, S.AP
FROM EMP E, EMP S
WHERE E.DNISUPERV = S.DNI;
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
191
02/03/2022
Tipos SQL y valores literales
▪ La norma SQL define un conjunto de tipos para las
columnas de las tablas.
▪ Habitualmente cada SGBD tiene tipos propios o
particularidades para los tipos de la norma SQL.
▪ Es necesario consultar el manual del SGBD para
obtener información acerca de los tamaños máximos
de almacenamiento.
▪ En el caso de cadenas, cual es la longitud máxima de
almacenamiento.
▪ En el caso de tipos numéricos, cual es el rango de valores
posibles.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
192
02/03/2022
Tipos SQL y valores literales
Tipo Ejemplo
BIGINT 8589934592
INTEGER 186282
SMALLINT 186
NUMERIC(8,2) 999999.99 (precisión, escala)
DECIMAL(8,2) 999999.99 (precisión, escala)
REAL 6.02257E23
DOUBLE PRECISION 3.141592653589
FLOAT 6.02257E23
CHARACTER(max) 'GREECE ' (15 caracteres)
VARCHAR(n) 'hola'
DATE date 'YYYY-MM-DD'
TIME time 'hh:mm:ss.ccc'
TIMESTAMP timestamp 'YYYY-MM-DD hh:mm:ss.ccc'
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
193
02/03/2022
Expresiones
▪ Aunque SQL no es un lenguaje de programación de
propósito general, permite definir expresiones calculadas.
▪ Estas expresiones pueden contener
▪ Referencias a columnas
▪ Valores literales
▪ Operadores aritméticos
▪ Llamadas a funciones
▪ Los operadores aritméticos son los habituales: +, -, * y /
▪ Estos operadores sólo funcionan con valores numéricos.
▪ Los operadores '+' y '–' habitualmente funcionan para fechas.
▪ Aunque las normas SQL definen un conjunto mínimo de
funciones, los SGBD proporcionan una gran variedad.
▪ Es necesario consultar el manual del SGBD particular.
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
194
02/03/2022
Funciones matemáticas
comunes
Descripción IBM DB2
SQL
Server
Oracle MySQL
Valor absoluto ABSs ABS ABS ABS
Menor entero >= valor CEIL CEILING CEIL CEILING
Menor entero <= valor FLOOR FLOOR FLOOR FLOOR
Potencia POWER POWER POWER POWER
Redondeo a un número
de cifras decimales
ROUND ROUND ROUND ROUND
Módulo MOD. % MOD. %
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
195
02/03/2022
Funciones de cadena
Descripción IBM DB2 SQL Server Oracle MySQL
Convierte todos los caracteres a
minúsculas
LOWER LOWER LOWER LOWER
Convierte todos los caracteres a
mayúsculas
UPPER UPPER UPPER UPPER
Elimina los blancos del final de la
cadena
RTRIM RTRIM RTRIM RTRIM
Elimina los blancos del comienzo
de la cadena
LTRIM LTRIM LTRIM LTRIM
Devuelve una subcadena SUBSTR SUBSTRING SUBSTR SUBSTRING
Concatena dos cadenas CONCAT + CONCAT CONCAT
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
196
02/03/2022
Operaciones aritméticas
▪ Necesito obtener el salario, la comisión y los ingresos
totales de todos los empleados que tengan un salario
menor de 20000€ , clasificado por número de empleado
SELECT EMPNO, SALARY, COMM,
SALARY + COMM
FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO
18270.00
19180.00
17250.00
15340.00
17750.00
15900.00
19950.00
1462.00
1534.00
1380.00
1227.00
1420.00
1272.00
1596.00
19732.00
20714.00
18630.00
16567.00
19170.00
17172.00
21546.00
SALARY COMM
EMPNO
000210
000250
000260
000290
000300
000310
000320
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
197
02/03/2022
Operaciones aritméticas
(cont.) SELECT EMPNO, SALARY,
SALARY*1.0375
FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO
SALARY
EMPNO
18270.00
19180.00
17250.00
15340.00
17750.00
15900.00
19950.00
18955.125000
19899.250000
17896.875000
15915.250000
18415.625000
16496.250000
20698.125000
000210
000250
000260
000290
000300
000310
000320
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
198
02/03/2022
Expresiones en predicados
SELECT EMPNO, SALARY,
(COMM/SALARY)*100
FROM EMPLOYEE
WHERE (COMM/SALARY) * 100 > 8
ORDER BY EMPNO
SALARY
EMPNO
2274.00
1462.00
2301.00
2030.00
28420.00
18270.00
28760.00
25370.00
000140
000210
000240
000330
COMM
8.001400
8.002100
8.000600
8.001500
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
199
02/03/2022
Uso de funciones
SELECT EMPNO, SALARY,
TRUNCATE(SALARY*1.0375, 2)
FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO
SALARY
EMPNO
18270.00
19180.00
17250.00
15340.00
17750.00
15900.00
19950.00
18955.12
19899.25
17896.87
15915.25
18415.62
16496.25
20698.12
000210
000250
000260
000290
000300
000310
000320
Bases de Datos
Ph.D. Franklin Parrales
Carrera de Software
200
02/03/2022
Uso de funciones (cont.)
SELECT CONCAT(LASTNAME,' , ',FIRSTNAME ) AS NAME
FROM EMPLOYEE
WHERE WORKDEPT = 'A00'
ORDER BY NAME
NAME
HAAS, CHRISTA
LUCCHESI, VINCENZO
O'CONNELL, SEAN
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL
DB1 Unidad 4: SQL

Más contenido relacionado

La actualidad más candente

POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Diagrama de Flujo de Datos (DFD)
Diagrama de Flujo de Datos (DFD)Diagrama de Flujo de Datos (DFD)
Diagrama de Flujo de Datos (DFD)Yaskelly Yedra
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQLIsabel Gómez
 
Arquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasArquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasAntonio Soria
 
Configuracion y administracion del espacio en disco
 Configuracion y administracion del espacio en disco Configuracion y administracion del espacio en disco
Configuracion y administracion del espacio en discoYael_21
 
Fundamentos de base de datos 1a. unidad
Fundamentos de base de datos 1a. unidadFundamentos de base de datos 1a. unidad
Fundamentos de base de datos 1a. unidademilio_ambrosio
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...José Antonio Sandoval Acosta
 
Documento arquitectura de software
Documento arquitectura de softwareDocumento arquitectura de software
Documento arquitectura de softwareAURA SYSTEMS S.A.C
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Base De Datos Distribuidas
Base De Datos DistribuidasBase De Datos Distribuidas
Base De Datos DistribuidasJorge Guerra
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Integrity constraints in dbms
Integrity constraints in dbmsIntegrity constraints in dbms
Integrity constraints in dbmsVignesh Saravanan
 

La actualidad más candente (20)

POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Diagrama de Flujo de Datos (DFD)
Diagrama de Flujo de Datos (DFD)Diagrama de Flujo de Datos (DFD)
Diagrama de Flujo de Datos (DFD)
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
Arquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos DistribuidasArquitecturas de Bases de Datos Distribuidas
Arquitecturas de Bases de Datos Distribuidas
 
Lenguaje SQL
Lenguaje SQLLenguaje SQL
Lenguaje SQL
 
Configuracion y administracion del espacio en disco
 Configuracion y administracion del espacio en disco Configuracion y administracion del espacio en disco
Configuracion y administracion del espacio en disco
 
Fundamentos de base de datos 1a. unidad
Fundamentos de base de datos 1a. unidadFundamentos de base de datos 1a. unidad
Fundamentos de base de datos 1a. unidad
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
 
Integridad de base de datos
Integridad de base de datosIntegridad de base de datos
Integridad de base de datos
 
Documento arquitectura de software
Documento arquitectura de softwareDocumento arquitectura de software
Documento arquitectura de software
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Base De Datos Distribuidas
Base De Datos DistribuidasBase De Datos Distribuidas
Base De Datos Distribuidas
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Ataques a-bases-de-datos
Ataques a-bases-de-datosAtaques a-bases-de-datos
Ataques a-bases-de-datos
 
Integrity constraints in dbms
Integrity constraints in dbmsIntegrity constraints in dbms
Integrity constraints in dbms
 
Formato ieee830
Formato ieee830Formato ieee830
Formato ieee830
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 

Similar a DB1 Unidad 4: SQL

OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxMARGOTHLORENAMARTINE
 
Unidad I- Introducción.pptx
Unidad I- Introducción.pptxUnidad I- Introducción.pptx
Unidad I- Introducción.pptxdffdfsd
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Byron Quisquinay
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sqlJulio Pari
 
DB1 Unidad 1: Sistemas de almacenamiento de la información
DB1 Unidad 1: Sistemas de almacenamiento de la informaciónDB1 Unidad 1: Sistemas de almacenamiento de la información
DB1 Unidad 1: Sistemas de almacenamiento de la informaciónFranklin Parrales Bravo
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datosFrancis Xavier
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdfJenny29068
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas Crhis
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQLAna Aguirre
 
Lenguaje de defincion de datos
Lenguaje   de  defincion de datosLenguaje   de  defincion de datos
Lenguaje de defincion de datosIrisMTF16
 

Similar a DB1 Unidad 4: SQL (20)

Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
 
Unidad I- Introducción.pptx
Unidad I- Introducción.pptxUnidad I- Introducción.pptx
Unidad I- Introducción.pptx
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
Tsql
TsqlTsql
Tsql
 
Abd3 sql
Abd3 sqlAbd3 sql
Abd3 sql
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Base de datos - Clase 2
Base de datos - Clase 2Base de datos - Clase 2
Base de datos - Clase 2
 
Fundamentos sql server2
Fundamentos sql server2Fundamentos sql server2
Fundamentos sql server2
 
Base de datos - Clase 1
Base de datos - Clase 1Base de datos - Clase 1
Base de datos - Clase 1
 
Presentación1
Presentación1Presentación1
Presentación1
 
DB1 Unidad 1: Sistemas de almacenamiento de la información
DB1 Unidad 1: Sistemas de almacenamiento de la informaciónDB1 Unidad 1: Sistemas de almacenamiento de la información
DB1 Unidad 1: Sistemas de almacenamiento de la información
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practico-sql
Manual practico-sqlManual practico-sql
Manual practico-sql
 
Lenguaje de defincion de datos
Lenguaje   de  defincion de datosLenguaje   de  defincion de datos
Lenguaje de defincion de datos
 

Más de Franklin Parrales Bravo

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaFranklin Parrales Bravo
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebFranklin Parrales Bravo
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaFranklin Parrales Bravo
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosFranklin Parrales Bravo
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebFranklin Parrales Bravo
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaFranklin Parrales Bravo
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasFranklin Parrales Bravo
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosFranklin Parrales Bravo
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosFranklin Parrales Bravo
 
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosFranklin Parrales Bravo
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosFranklin Parrales Bravo
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraFranklin Parrales Bravo
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareFranklin Parrales Bravo
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software Franklin Parrales Bravo
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosFranklin Parrales Bravo
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosFranklin Parrales Bravo
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosFranklin Parrales Bravo
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoFranklin Parrales Bravo
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4Franklin Parrales Bravo
 

Más de Franklin Parrales Bravo (20)

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en Cuenca
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicua
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidas
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgos
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidos
 
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectos
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestra
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y Enrutamiento
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
 

Último

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 

Último (7)

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 

DB1 Unidad 4: SQL

  • 1. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 1 02/03/2022 Lenguaje estructurado de consultas Unidad 4 Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para uso de los cursos de Bases de Datos
  • 2. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 2 02/03/2022 Objetivo general de la Unidad 4 Aplicar sentencias del lenguaje SQL para manipular de datos en tablas, administrar objetos de la base de datos y controlar la ejecución de transacciones como mecanismo para mantener la integridad de los datos
  • 3. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 3 02/03/2022
  • 4. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 4 02/03/2022
  • 5. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 5 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 6. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 6 02/03/2022 DDL: Data Definition Language ▪ El lenguaje de definición de datos SQL (DDL) permite la especificación de información sobre relaciones, incluyendo: ▪ El esquema para cada relación. ▪ Dominio de valores asociados con cada atributo. ▪ Restricciones de integridad ▪ Y como veremos más adelante, también otra información como ▪ El conjunto de índices a mantener para cada relación. ▪ Información de seguridad y autorización para cada relación. ▪ La estructura de almacenamiento físico de cada relación en el disco.
  • 7. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 7 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 8. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 8 02/03/2022 SQL, el Modelo Relacional, y Diagrama E/R ➢ SQL se basa en el modelo relacional. ➢ Tiene muchas de las mismas ideas. ➢ Las bases de datos que admiten SQL a menudo se describen como base de datos relacionales. ➢ No siempre es fiel al modelo ➢ Los diagramas E/R pueden ser implementados en SQL ➢ Las entidades, los atributos y las relaciones se pueden expresar en terminos de SQL. ➢ Los relaciones de muchos a muchos son un problema, así que deben ser eliminadas.
  • 9. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 9 02/03/2022 Relaciones, Entidades, Tablas Modelo Relacional Relacion Registros Atributo Clave Foránea Clave Primaria Diagrama E/R Entidad Instancia Atributo Relación M:1 SQL Tabla Fila Columna (campo) Clave Foránea Clave Primaria
  • 10. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 10 02/03/2022 Implementando Diagramas E/R ➢ Dado un diagrama E/R ➢ Las entidades se convierten en tablas SQL ➢ Los atributos de una entidad se convierten en columnas de tablas. ➢ Las relaciones pueden estar representadas como claves foráneas Enrolment Student Module In Has ID Code Title Name Address Year Assignment Exam Assignment Exam Credits
  • 11. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 11 02/03/2022 Entidades y Atributos ➢ Cada entidad se convierte en una tabla de la base de datos. ➢ El nombre de la tabla suele ser el nombre de la entidad ➢ Los atributos se convierten en columnas de la tabla con el mismo nombre ➢ Una tabla llamada estudiante ➢ Con columnas: ID, Name, Address, and Year Student ID Name Address Year
  • 12. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 12 02/03/2022 Creación de Tablas CREATE TABLE <name> ( <col-def-1>, <col-def-2>, : <col-def-n>, <constraint-1>, : <constraint-k>) ➢ Usted establece… ➢ Un nombre para la tabla ➢ Una lista de definiciones de columnas ➢ Una lista de restricciones (como las claves)
  • 13. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 13 02/03/2022 Definición de Columnas <col-name> <type> [NULL|NOT NULL] [DEFAULT <val>] [constraint-1 [, constraint-2[, ...]]] ➢ Cada columna tiene un nombre y un tipo. ➢ Tipos comunes: ➢ INT ➢ REAL ➢ CHAR(n) ➢ VARCHAR(n) ➢ DATE
  • 14. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 14 02/03/2022 Definición de Columnas ➢ Columnas pueden ser NULL o NOT NULL ➢ Las columnas NOT NULL no pueden tener valores faltantes. ➢ Si no se especifica, por defecto se asume NULL. ➢ Columnas pueden tener un valor por defecto ➢ Solo necesitas usar la palabra reservada DEFAULT seguido por el valor, ej: ➢ num INT DEFAULT 0
  • 15. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 15 02/03/2022 Ejemplo CREATE TABLE Student ( stuID INT NOT NULL, stuName VARCHAR(50) NOT NULL, stuAddress VARCHAR(50), stuYear INT DEFAULT 1) Student ID Name Address Year
  • 16. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 16 02/03/2022 Constraints - Restricciones CONSTRAINT <name> <type> <details> ➢ Common <type>s ➢ PRIMARY KEY ➢ UNIQUE ➢ FOREIGN KEY ➢ INDEX ➢ Cada restricción recibe un nombre – MS Access requiere un nombre, pero algunos DBMS no lo necesitan ➢ Constraints que se refieren a columnas individuales pueden ser incluidas en la definición.
  • 17. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 17 02/03/2022 Primary Keys ➢ Los Primary Keys son definidos a través de constraints. ➢ Una PRIMARY KEY también incluye un constraint UNIQUE y hace que las columnas involucradas sean NOT NULL ➢ Los <details> de una clave principal son la lista de columnas de las que se compone la clave. CONSTRAINT <name> PRIMARY KEY (col1, col2, …)
  • 18. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 18 02/03/2022 Unique Constraints ➢ Además de una primary key única, cualquier conjunto de columnas se puede especificar como UNIQUE ➢ Esto tiene el efecto de hacer claves candidatas en la tabla. ➢ Los <details> de un unique constraint son la lista de columnas que componen una clave candidata. CONSTRAINT <name> UNIQUE (col1, col2, …)
  • 19. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 19 02/03/2022 Ejemplo CREATE TABLE Student ( stuID INT NOT NULL, stuName VARCHAR(50) NOT NULL, stuAddress VARCHAR(50), stuYear INT DEFAULT 1, CONSTRAINT pkStudent PRIMARY KEY (stuID))
  • 20. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 20 02/03/2022 Relaciones ➢ Depende del tipo ➢ 1:1 normalmente no se utilizan o pueden tratarse como un caso especial de M:1 ➢ M:1 son representados como clave foránea desde el lado M al 1. ➢ M:M se dividen en dos relaciones de M:1 Enrolment Student Module In Has ID Code Title Name Address Year Assignment Exam Assignment Exam Credits
  • 21. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 21 02/03/2022 Representando Relaciones ➢ La tabla ENROLMENT: ➢ Tendrá columnas para los atributos Exam y Assignment. ➢ Tendrá una clave foránea para Student por la relación ‘Has’. ➢ Tendrá una clave foránea con Module por la relación ‘In’ Enrolment Student Module In Has ID Code Title Name Address Year Assignment Exam Assignment Exam Credits
  • 22. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 22 02/03/2022 Foreign Keys ➢ Las claves foráneas también se definen como constraints. ➢ Tu necesitas otorgar ➢ Las columnas que componen la FK ➢ La tabla referenciada ➢ Las columnas a las que hace referencia el FK CONSTRAINT <name> FOREIGN KEY (col1,col2,…) REFERENCES <table> [(ref1,ref2,…)] ➢ If the FK references the PK of <table> you don’t need to list the columns
  • 23. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 23 02/03/2022 Ejemplo CREATE TABLE Enrolment ( stuID INT NOT NULL, modCode CHAR(6) NOT NULL, enrAssignment INT, enrExam INT, CONSTRAINT enrPK PRIMARY KEY (stuID, modCode), CONSTRAINT enrStu FOREIGN KEY (stuID) REFERENCES Student (stuID), CONSTRAINT enrMod FOREIGN KEY (modCode) REFERENCES Module (modCode))
  • 24. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 24 02/03/2022 Consideraciones de diseño de InnoDB (MySql) Emula la arquitectura de Oracle ▪ Sistemas únicos ▪ Buffering de inserts ▪ Index hash ▪ DataDictionary Interno ▪ Undo ▪ Insert Buffer ▪ MySQL Replication info
  • 25. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 25 02/03/2022 Limites de tamaño con InnoDB (MySql) ▪ Tamaño máximo de una tabla: 32GB ▪ Columnas por tabla: 1000 ▪ Tamaño máximo de la llave 3500 caracteres ▪ Tamaño máximo del tablespace 64TB ▪ Numero máximo de transacciones concurrentes: 1023
  • 26. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 26 02/03/2022 Convertir tipos de Engines (MySql) ▪ Para crear una tabla con un Engine predefinido ▪ CREATE TABLE Test (rid INT) ENGINE=INNODB; ▪ Para definir el default por sesión: ▪ SET STORAGE_ENGINE=INNODB ▪ Convertir tablas de un Engine a otro ▪ ALTER TABLE Test ENGINE=INNODB
  • 27. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 27 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 28. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 28 02/03/2022 Modificando Tablas ➢ Algunas veces desea cambiar la estructura de una tabla existente ➢ Una forma es eliminarlo (DROP) y luego crearlo ➢ Esto es peligroso, por lo que existe la opción ALTER TABLE en su lugar ➢ ALTER TABLE permite: ➢ Agregar una nueva columna ➢ Remover una columna existente. ➢ Agregar un Nuevo constraint ➢ Remover un constraint existente.
  • 29. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 29 02/03/2022 ALTERando Columnas Para agregar o remover columnas use… ALTER TABLE <table> ADD COLUMN <col> ALTER TABLE <table> DROP COLUMN <name> Ejemplos: ALTER TABLE Student ADD COLUMN Degree VARCHAR(50) ALTER TABLE Student DROP COLUMN Degree
  • 30. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 30 02/03/2022 ALTERando Constraints Para agregar o remover restricciones use… ALTER TABLE <table> ADD CONSTRAINT <definition> ALTER TABLE <table> DROP CONSTRAINT <name> Ejemplos: ALTER TABLE Module ADD CONSTRAINT ck UNIQUE (title) ALTER TABLE Module DROP CONSTRAINT ck
  • 31. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 31 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 32. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 32 02/03/2022 Deleting Tables ➢ Para borrar una tabla existente: DROP TABLE [IF EXISTS] <name> ➢ Ejemplo: DROP TABLE Module ➢ Tenga cuidado con alguna sentencia SQL con DROP en ella pues… ➢ También eliminará cualquier información de la tabla ➢ Normalmente no se le pedirá que confirme la ejecución de la sentencia ➢ No hay una manera fácil de deshacer los cambios.
  • 33. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 33 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 34. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 34 02/03/2022 TRUNCATE ▪ Este comando se utiliza para eliminar o borrar los datos que contiene una tabla. ▪ Es útil cuando sólo se quiere borrar los datos, pero no se quiere borrar la tabla. ▪ Este comando deja vacía una tabla, es decir, sin datos. ▪ Sintaxis: TRUNCATE TABLE nombretabla
  • 35. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 35 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 36. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 36 02/03/2022 ALTER (RENAME) ▪ En ocasiones podemos querer cambiar el nombre de nuestra tabla para darle un nombre mas relevante. Para este propósito, podemos usar ALTER TABLE para cambiar el nombre de una tabla. ▪ A las columnas también se les puede dar un nombre nuevo con el uso de ALTER TABLE. ALTER TABLE table_name RENAME TO new_table_name; ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
  • 37. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 37 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 38. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 38 02/03/2022 DML: Data Manipulation Language ▪ El Lenguaje de Manipulación de Datos es un idioma proporcionado por los sistemas gestores de bases de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Tablas de las Bases de Datos
  • 39. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 39 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 40. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 40 02/03/2022 La instrucción INSERT ▪ La inserción de tuplas se realiza con la sentencia INSERT, ▪ Es posible insertar directamente valores. ▪ O bien insertar el conjunto de resultados de una consulta. ▪ En cualquier caso, los valores que se insertan deben pertenecer al dominio de cada uno de los atributos de la relación. ▪ Ejemplos: CLIENTES (DNI, NOMBRE, DIR) ▪ La inserción ▪ INSERT INTO CLIENTES VALUES (1111,'Mario', 'C/. Mayor, 3'); ▪ Es equivalente a las siguientes sentencias ▪ INSERT INTO CLIENTES (NOMBRE,DIR,DNI) VALUES ('Mario','C/. Mayor, 3',1111); ▪ INSERT INTO CLIENTES (DNI,DIR,NOMBRE) VALUES (1111,'C/. Mayor, 3’,'Mario');
  • 41. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 41 02/03/2022 Añadir una fila INSERT INTO TESTEMP VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000, NULL) EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 25000.00 1998-06-25 - C01 SMITH 000111 INSERT INTO TESTEMP(EMPNO, LASTNAME, WORKDEPT, HIREDATE, SALARY) VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000)
  • 42. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 42 02/03/2022 Añadir varias filas ▪ Ejemplo: ▪ Para la siguiente base de datos, queremos incluir en la relación GRUPOS a todos los grupos, junto con su número de álbumes publicados: ▪ GRUPOS (NOMBRE, ALBUMES) LP (TIT, GRUPO, ANIO, NUM_CANC) ▪ Solución: ▪ En SQL se prohíbe que la consulta que se incluye en una cláusula INSERT haga referencia a la misma tabla en la que se quieren insertar las tuplas. ▪ En ORACLE sí está permitido INSERT INTO GRUPOS SELECT GRUPO, COUNT (DISTINCT TIT) FROM LP GROUP BY GRUPO;
  • 43. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 43 02/03/2022 Añadir varias filas (cont.) TESTEMP INSERT INTO TESTEMP SELECT FROM EMPLOYEE WHERE EMPNO < = '000050' EMPNO,LASTNAME,WORKDEPT,HIREDATE,SALARY,BONUS EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 38250.00 40175.00 25000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111
  • 44. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 44 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 45. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 45 02/03/2022
  • 46. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 46 02/03/2022 La instrucción DELETE ▪ La eliminación de tuplas se realiza con la sentencia DELETE: ▪ DELETE FROM R WHERE P; -- WHERE es opcional ▪ Elimina tuplas completas, no columnas. Puede incluir subconsultas. ▪ Ejemplos: para la BD de CLIENTES, CUENTAS, SUCURSALES. ▪ Eliminar todas cuentas con código entre 1000 y 1100. ▪ DELETE FROM CUENTAS WHERE COD BETWEEN 1000 AND 1100; ▪ Eliminar todas las cuentas del cliente “Jose María García”. ▪ DELETE FROM CUENTAS WHERE DNI IN (SELECT DNI FROM CLIENTES WHERE NOMBRE LIKE 'Jose María García'); ▪ Eliminar todas las cuentas de sucursales situadas en "Chinchón". ▪ DELETE FROM CUENTAS WHERE NSUCURS IN (SELECT NSUC FROM SUCURSALES WHERE CIUDAD LIKE 'Chinchón');
  • 47. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 47 02/03/2022 Borrar filas DELETE FROM TESTEMP WHERE EMPNO = '000111' Antes: Después: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 38250.00 40175.00 25000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111 EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 52750.00 41250.00 38250.00 40175.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 A00 B01 C01 E01 HAAS THOMPSON KWAN GEYER 000010 000020 000030 000050
  • 48. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 48 02/03/2022 Borrar filas ▪ Eliminar todas las tuplas de cuentas en la sucursal de ‘Perryridge’ delete from account where branch_name = 'Perryridge' ▪ Eliminar todas las cuentas en cada sucursal ubicada en la ciudad ‘Needham’. delete from account where branch_name in (select branch_name from branch where branch_city = 'Needham')
  • 49. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 49 02/03/2022 Eliminación mediante consulta ▪ Eliminar el registro de todas las cuentas con saldos por debajo del promedio en el banco. delete from account where balance < (select avg (balance ) from account ) Problema: a medida que eliminamos tuplas del depósito, el saldo promedio cambia Solución usada en SQL: 1. Primero, calcule el balance promedio (avg) y encuentre todas las tuplas que deben ser eliminadas 2. Luego, elimine las tuplas encontradas en el paso anterior (sin recalcular el avg o volviendo a seleccionar las tuplas)
  • 50. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 50 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 51. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 51 02/03/2022 La instrucción UPDATE ▪ La modificación de tuplas se realiza con la sentencia UPDATE, ▪ Es posible elegir el conjunto de tuplas que se van a actualizar usando la clausula WHERE. ▪ Ejemplos: CUENTAS (COD, DNI, NSUCURS, SALDO) ▪ Suma del 5% de interés a los saldos de todas las cuentas. ▪ UPDATE CUENTAS SET SALDO = SALDO * 1.05; ▪ Suma del 1% de bonificación a aquellas cuentas cuyo saldo sea superior a 100.000 €. ▪ UPDATE CUENTAS SET SALDO = SALDO * 1.01 WHERE SALDO > 100000; ▪ Modificación de DNI y saldo simultáneamente para el código 898. ▪ UPDATE CUENTAS SET DNI='555', SALDO=10000 WHERE COD LIKE '898';
  • 52. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 52 02/03/2022 Modificar datos UPDATE TESTEMP SET SALARY = SALARY + 1000 WHERE WORKDEPT = 'C01' Antes: Después: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 38250.00 40175.00 25000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111 EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 39250.00 40175.00 26000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111
  • 53. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 53 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 54. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 54 02/03/2022 Estructura de consulta básica ▪ SQL se basa en operaciones relacionales y de conjuntos con ciertas modificaciones y mejoras ▪ Una consulta SQL típica tiene la forma: select A1, A2, ..., An from r1, r2, ..., rm where P ▪ Ai representa un atributo ▪ Ri representa una relación ▪ P es un predicado (condición). ▪ Esta consulta es equivalente a la expresión del álgebra relacional. ▪ El resultado de una consulta SQL es una relación. )) ( ( 2 1 , , , 2 1 m P A A A r r r n       
  • 55. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 55 02/03/2022 Estructura básica de la sentencia SELECT ▪ Consta de tres cláusulas: ▪ SELECT ▪ La lista de los atributos que se incluirán en el resultado de una consulta. ▪ FROM ▪ Especifica las relaciones que se van a usar como origen en el proceso de la consulta. ▪ WHERE ▪ Especifica la condición de filtro sobre las tuplas en términos de los atributos de las relaciones de la cláusula FROM.
  • 56. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 56 02/03/2022 Estructura básica de la sentencia SELECT ▪ Una consulta SQL tiene la forma: SELECT A1, ..., An /* Lista de atributos */ FROM R1, ..., Rm /* Lista de relaciones. A veces opcional */ WHERE P; /* Condición. Cláusula opcional */ ▪ Es posible que exista el mismo nombre de atributo en dos relaciones distintas. ▪ Se añade "NOMBRE_RELACION." antes del nombre para desambiguar.
  • 57. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 57 02/03/2022 La cláusula SELECT ▪ La clausula select lista los atributos deseados en el resultado de una consulta ▪ corresponde a la operación de proyección del álgebra relacional ▪ Ejemplo: encontrar los nombres de todas las sucursales en la relación de préstamo (loan): select branch_name from loan ▪ En el álgebra relacional, la consulta sería: branch_name (loan) ▪ NOTA: Los nombres de SQL no distinguen entre mayúsculas y minúsculas (es decir, puede usar letras mayúsculas o minúsculas). ▪ Ej.: Branch_Name ≡ BRANCH_NAME ≡ branch_name ▪ Algunas personas usan mayúsculas donde usamos negrita.
  • 58. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 58 02/03/2022 La cláusula SELECT(Cont.) ▪ SQL permite valores duplicados tanto en las relaciones como en los resultados de las consultas.. ▪ Para forzar la eliminación de duplicados, inserte la palabra clave distinct después de select ▪ Encuentre los nombres de todas las sucursales en las relaciones de préstamo (loan) y elimine los duplicados select distinct branch_name from loan ▪ La palabra clave all especifica que los valores duplicados no serán eliminados. select all branch_name from loan
  • 59. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 59 02/03/2022 La cláusula SELECT(Cont.) ▪ Un asterisco en la cláusula de selección denota "todos los atributos" select * from loan ▪ La cláusula select puede contener expresiones aritméticas que involucran la operación, +, –, , y /, y que operan sobre constantes o atributos de tuplas. ▪ La consulta (query): select loan_number, branch_name, amount  100 from loan devolvería una relación que es la misma que la relación de préstamo (loan), excepto que el valor del atributo amount se multiplica por 100
  • 60. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 60 02/03/2022 Estructura de la sentencia SELECT - Nombres de las tablas / vistas - Condiciones (filtros) de selección de filas - Nombre de las columnas - Condiciones de selección de grupo - Nombres de columnas SELECT A1, …, An FROM T1, …, Tn WHERE P GROUP BY Ai1, …, Ain HAVING Q ORDER BY Aj1, …, Ajn -Describe la salida deseada con: •Nombres de columnas •Expresiones aritméticas •Literales •Funciones escalares •Funciones de columna
  • 61. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 61 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 62. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 62 02/03/2022 MERGE ▪ MERGE es la combinación de tres instrucciones: INSERT, DELETE y UPDATE. ▪ Si hay una tabla de origen y una tabla de destino que deseamos fusionar, con la ayuda de la declaración MERGE podemos realizar las tres operaciones (INSERTAR, ACTUALIZAR, ELIMINAR) a la vez
  • 63. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 63 02/03/2022 MERGE ▪ Ejemplo: Supongamos que hay dos tablas: • PRODUCT_LIST: tabla que contiene los detalles actuales sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto. • UPDATED_LIST tabla que contiene los nuevos detalles sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
  • 64. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 64 02/03/2022 MERGE La tarea es actualizar los detalles de los productos en PRODUCT_LIST según la UPDATED_LIST.
  • 65. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 65 02/03/2022 MERGE ▪ Solución: Ahora, para explicar mejor este ejemplo, dividamos el ejemplo en pasos. ▪ Paso 1: Reconocer la tabla TARGET y SOURCE Entonces, en este ejemplo, dado que se solicita actualizar los productos en PRODUCT_LIST según UPDATED_LIST, ▪ PRODUCT_LIST actuará como tabla TARGET y ▪ UPDATED_LIST actuará como tabla SOURCE.
  • 66. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 66 02/03/2022 MERGE
  • 67. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 67 02/03/2022 MERGE ▪ Paso 2: Reconocer las operaciones a realizar. Ahora, como se puede ver, hay tres discrepancias entre la tabla TARGET y SOURCE, que son: ▪ 1. El costo del COFFEE en TARGET es de 15,00 mientras que en SOURCE es 25.00 PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00
  • 68. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 68 02/03/2022 MERGE ▪ 2. No hay ningún producto BISCUIT en SOURCE pero sí en TARGET ▪ 3. No hay ningún producto CHIPS en TARGET pero sí en SOURCE PRODUCT_LIST 103 BISCUIT 20.00 UPDATED_LIST 104 CHIPS 22.00
  • 69. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 69 02/03/2022 MERGE ▪ Por lo tanto, se deben realizar tres operaciones en el TARGET de acuerdo con las discrepancias anteriores. Estas son : ▪ 1. UPDATE operation ▪ 2. DELETE operation ▪ 3. INSERT operation 102 COFFEE 25.00 103 BISCUIT 20.00 104 CHIPS 22.00
  • 70. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 70 02/03/2022 MERGE ▪ Paso 3: escribir la consulta SQL. La consulta SQL para realizar las operaciones mencionadas anteriormente con la ayuda de la instrucción MERGE es: /* Seleccionar el Target (objetivo) y Source (fuente) */ MERGE PRODUCT_LIST AS TARGET USING UPDATE_LIST AS SOURCE /* 1. Performing the UPDATE operation */ /* If the P_ID is same, check for change in P_NAME or P_PRICE */ ON (TARGET.P_ID = SOURCE.P_ID) WHEN MATCHED AND TARGET.P_NAME <> SOURCE.P_NAME OR TARGET.P_PRICE <> SOURCE.P_PRICE
  • 71. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 71 02/03/2022 MERGE /* Update the records in TARGET */ THEN UPDATE SET TARGET.P_NAME = SOURCE.P_NAME, TARGET.P_PRICE = SOURCE.P_PRICE /* 2. Performing the INSERT operation */ /* When no records are matched with TARGET table Then insert the records in the target table */ WHEN NOT MATCHED BY TARGET THEN INSERT (P_ID, P_NAME, P_PRICE) VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE) /* 3. Performing the DELETE operation */ /* When no records are matched with SOURCE table Then delete the records from the target table */ WHEN NOT MATCHED BY SOURCE THEN DELETE /* END OF MERGE */
  • 72. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 72 02/03/2022 MERGE ▪ Salida ▪ Entonces, de esta manera, todos podemos realizar estas tres declaraciones principales en SQL junto con la ayuda de la declaración MERGE. ▪ Nota: En la sintaxis MERGE se puede utilizar cualquier nombre que no sea TARGET y SOURCE. Se usan solo para darte una mejor explicación. PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00 102 COFFEE 25.00 104 CHIPS 22.00
  • 73. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 73 02/03/2022 MERGE en MySql ▪ MERGE no es compatible con MySQL. Sin embargo, hay otra forma posible de hacer lo mismo: ▪ INSERT ... ON DUPLICATE KEY UPDATE Statement
  • 74. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 74 02/03/2022 INSERT ... ON DUPLICATE KEY UPDATE (MySql) ▪ Si especifica una cláusula ON DUPLICATE KEY UPDATE y la inserción de una fila provocaría un valor duplicado en un índice UNIQUE o PRIMARY KEY, se produce un UPDATE de la fila anterior. ▪ Por ejemplo, si la columna a se declara como UNIQUE y contiene el valor 1: ▪ INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; ▪ La eliminación tiene que manejarse aparte https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
  • 75. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 75 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 76. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 76 02/03/2022
  • 77. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 77 02/03/2022 Data Control Language ▪ Objetivos ▪ Conocer los mecanismos de seguridad implementados en un RDBMS y cómo usarlos ▪ Contenido ▪ Identificación de usuarios ▪ Privilegios ▪ La Declaración GRANT ▪ La Declaración REVOKE ▪ El catálogo del sistema
  • 78. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 78 02/03/2022 Identificación de usuarios Admin FRED Ventas
  • 79. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 79 02/03/2022 Privilegios ▪ Privilegios Permitidos ▪ SELECT, INSERT, UPDATE, DELETE ▪ CREATE Table, View, Procedure, Trigger, Rule, Default ▪ El propietario/creador de una tabla automáticamente tiene todos los privilegios
  • 80. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 80 02/03/2022 Privilegios Directos Clientes Pedidos Productos Personal
  • 81. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 81 02/03/2022 Privilegios indirectos Clientes Pedidos Productos Personal Programa Usuario Administrador
  • 82. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 82 02/03/2022 Requerimientos de seguridad ▪ Integridad de la base de datos física ▪ Integridad de la base de datos lógica ▪ Integridad del elemento ▪ Auditabilidad ▪ Control de acceso ▪ Autenticación de usuario ▪ Disponibilidad
  • 83. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 83 02/03/2022 Requerimientos de seguridad ▪ Integridad de la base de datos física ▪ inmunidad a catástrofes físicas, como cortes de energía, fallas de medios ▪ hardware de seguridad física, UPS ▪ Respaldos regulares (regular backups) ▪ Integridad de la base de datos lógica ▪ capacidad de reconstrucción ▪ mantener un log (registro) de transacciones ▪ reverso de operaciones a partir del log para restaurar los sistemas a un punto estable
  • 84. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 84 02/03/2022 Requerimientos de seguridad ▪ Integridad del elemento ▪ la integridad de los elementos específicos de la base de datos es su corrección o precisión ▪ verificaciones de campo – permitir solo valores aceptables ▪ controles de acceso – permitir que solo los usuarios autorizados actualicen elementos ▪ registro de cambios (change log) – Usado para deshacer cambios que produjeron un error ▪ Integridad referencial (key integrity concerns) ▪ proceso de bloqueo de dos fases (two phase locking process) ▪ Auditabilidad ▪ log de operaciones read/write sobre la base de datos
  • 85. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 85 02/03/2022 Requerimientos de seguridad ▪ Controles de acceso (similar a los Sistemas Operativos) ▪ separación lógica de usuarios por privilegios de acceso ▪ Mas complicado que en los SO debido a la complejidad de las BDs (granularidad/inferencia/agregación) ▪ Autenticación de Usuario ▪ Puede estar separado del SO ▪ puede ser riguroso ▪ Disponibilidad ▪ Usuarios concurrentes ▪ granularity of locking ▪ reliability
  • 86. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 86 02/03/2022 Autorización en SQL Formas de autorización sobre partes de la base de datos: ▪ Read authorization - permite la lectura, pero no la modificación de los datos. ▪ Insert authorization - permite la inserción de nuevos datos, pero no la modificación de los datos existentes. ▪ Update authorization - permite la modificación, pero no la eliminación de datos. ▪ Delete authorization - permite la eliminación de datos
  • 87. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 87 02/03/2022 Autorización en SQL (Cont.) Formas de autorización para modificar el esquema de la base de datos: ▪ Index authorization - permite la creación y eliminación de índices. ▪ Resources authorization - permite la creación de nuevas relaciones. ▪ Alteration authorization - permite agregar o eliminar atributos en una relación. ▪ Drop authorization - permite eliminar relaciones.
  • 88. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 88 02/03/2022 Vistas ▪ Proporcione un mecanismo para ocultar ciertos datos de la vista de ciertos usuarios. ▪ Para crear una vista usamos el comando : create view v as <query expression> donde: ▪ <query expression> es cualquier expresión legal ▪ El nombre de la vista está representado por v
  • 89. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 89 02/03/2022 Autorización y Vistas ▪ Los usuarios pueden recibir autorización sobre las vistas, sin que se les otorgue ninguna autorización sobre las relaciones utilizadas en la definición de la vista. ▪ La capacidad de las vistas para ocultar datos sirve tanto para simplificar el uso del sistema como para mejorar la seguridad al permitir que los usuarios accedan solo a los datos que necesitan para su trabajo. ▪ Se puede usar una combinación de seguridad a nivel relacional y seguridad a nivel de vista para limitar el acceso de un usuario a los datos que necesita.
  • 90. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 90 02/03/2022 Ejemplo de una Vista ▪ Supongamos que un empleado de banco necesita saber los nombres de los clientes de cada sucursal, pero no está autorizado para ver información específica del préstamo (loan). ▪ Enfoque: denegar el acceso directo a la relación de préstamo, pero otorgar acceso a la vista de préstamos de clientes, que consta solo de los nombres de los clientes y las sucursales en las que tienen un préstamo ▪ La vista de préstamos al cliente se define en SQL de la siguiente manera : create view cust-loan as select branchname, customer-name from borrower, loan where borrower.loan-number = loan.loan-number
  • 91. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 91 02/03/2022 Ejemplo de una Vista (Cont.) ▪ El oficinista está autorizado a ver el resultado de la consulta: select * from cust-loan ▪ Cuando el procesador de consultas traduce el resultado en una consulta sobre las relaciones reales en la base de datos, obtenemos una consulta sobre prestatario y préstamo. ▪ Se debe verificar la autorización en la consulta del empleado antes de que el procesamiento de la consulta reemplace una vista por la definición de la vista.
  • 92. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 92 02/03/2022 Autorización sobre Vistas ▪ La creación de la vista no requiere autorización de recursos ya que no se está creando una relación real. ▪ El creador de una vista obtiene solo aquellos privilegios que no proporcionan autorización adicional más allá de la que ya tenía. ▪ P.ej. si el creador del view cust-loan solo había leído (read) la autorización en el prestatario (borrower) y el préstamo (loan), solo obtiene la autorización de lectura en cust-loan
  • 93. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 93 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 94. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 94 02/03/2022 Otorgamiento de privilegios ▪ El paso de la autorización de un usuario a otro puede representarse mediante un gráfico de autorización. ▪ Los nodos de este gráfico son los usuarios. ▪ La raíz del gráfico es el administrador de la base de datos. ▪ Considere gráfico para autorización de actualización en loan ▪ Una flecha Ui → Uj indica que el usuario Ui ha concedido autorización de actualización en loan a Uj.
  • 95. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 95 02/03/2022 Grafo de concesión de autorización ▪ Requerimiento: Todas las flechas en un grafo de autorización deben ser parte de alguna ruta que se origine con el administrador de la base de datos. ▪ Si un DBA revoca la autorización sobre U1: ▪ La autorización debe ser revocada de U4 ya que U1 ya no tiene autorización ▪ La autorización no debe ser revocada de U5 ya que U5 tiene otra ruta de autorización de DBA a través de U2 ▪ Debe evitar ciclos de autorizaciones sin camino desde la raíz : ▪ DBA concede autorización a U7 ▪ U7 concede autorización a U8 ▪ U8 concede autorización a U7 ▪ DBA revoca autorización de U7 ▪ Debe revocarse la autorización de U7 a U8 y desde U8 a U7 ya que ya no hay una ruta de DBA a U7 o U8. u7 u8
  • 96. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 96 02/03/2022 Especificación de autorización en SQL ▪ La declaración grant se utiliza para conferir autorización. grant <lista de privilegios> on <nombre de la relación o de la vista> to <lista de usuarios> ▪ <lista de usuarios> is: ▪ un user-id ▪ public, que permite a todos los usuarios válidos el privilegio concedido ▪ Un rol (se revisará más de esto después) ▪ Otorgar un privilegio sobre una vista no implica otorgar ningún privilegio sobre las relaciones subyacentes. ▪ El otorgante del privilegio ya debe tener el privilegio sobre el elemento especificado (o ser el administrador de la base de datos).
  • 97. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 97 02/03/2022 Autorización Formas de autorización sobre partes de la base de datos: ▪ Read - permite la lectura, pero no la modificación de los datos. ▪ Insert - permite la inserción de nuevos datos, pero no la modificación de los datos existentes. ▪ Update - permite la modificación, pero no la eliminación de datos. ▪ Delete - permite la eliminación de datos. Formas de autorización para modificar el esquema de la base de datos: ▪ Index - permite la creación y eliminación de índices. ▪ Resources - permite la creación de nuevas relaciones. ▪ Alteration - permite agregar o eliminar atributos en una relación. ▪ Drop - permite borrar relaciones.
  • 98. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 98 02/03/2022 Privilegios en SQL ▪ select: permite el acceso de lectura a la relación, o la capacidad de consultar usando la vista ▪ Ejemplo: conceder a usuarios U1, U2, y U3 la autorización select sobre la relación branch: grant select on branch to U1, U2, U3 ▪ insert: la posibilidad de insertar tuplas(registros) ▪ update: la capacidad de actualizar usando la declaración de actualización de SQL ▪ delete: la posibilidad de eliminar tuplas. ▪ references: capacidad de declarar claves foráneas al crear relaciones. ▪ usage: En SQL-92; autoriza a un usuario a usar un dominio específico ▪ all privileges: utilizado como una forma abreviada para todos los privilegios permitidos
  • 99. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 99 02/03/2022 Privilegio Para otorgar privilegios ▪ with grant option: permite que un usuario, al que se le otorga un privilegio, pase el privilegio a otros usuarios. ▪ Ejemplo: grant select on branch to U1 with grant option otorga a U1 los privilegios de select sobre branch y permite que U1 conceda este privilegio a otros
  • 100. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 100 02/03/2022 Roles ▪ Los roles permiten que los privilegios comunes para una clase de usuarios se puedan especificar solo una vez creando un "rol" correspondiente. ▪ Los privilegios se pueden otorgar o revocar a los roles, de la misma forma que se lo hace con los usuarios ▪ Los roles se pueden asignar a los usuarios, e incluso a otros roles create role teller create role manager grant select on branch to teller grant update (balance) on account to teller grant all privileges on account to manager grant teller to manager grant teller to alice, bob grant manager to avi
  • 101. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 101 02/03/2022 Revocación de autorizaciones en SQL ▪ La sentencia revoke es utilizada para revocar la autorización. revoke<privilege list> on <relation name or view name> from <user list> [restrict|cascade] ▪ Ejemplo: revoke select on branch from U1, U2, U3 cascade ▪ La revocación de un privilegio de un usuario puede causar que otros usuarios también pierdan ese privilegio; denominada cascada de revoke. ▪ Podemos evitar la cascada especificando restrict: revoke select on branch from U1, U2, U3 restrict Con restrict, el comando revoke fallará si se requieren revocaciones en cascada.
  • 102. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 102 02/03/2022 Revocación de autorizaciones en SQL (Cont.) ▪ <privilege-list> puede ser all para revocar todos los privilegios que pueden tener los revocados(revokee). ▪ Si <revokee-list> incluye public, entonces todos los usuarios pierden el privilegio excepto aquellos que se lo otorgan explícitamente. ▪ Si el mismo privilegio fue otorgado dos veces al mismo usuario por diferentes beneficiarios, el usuario puede conservar el privilegio después de la revocación. ▪ Todos los privilegios que dependen del privilegio que se revoca también se revocan.
  • 103. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 103 02/03/2022 Limitaciones de la autorización en SQL ▪ SQL no admite la autorización a nivel de tupla ▪ P.ej. no podemos restringir a los estudiantes para que solo vean (las tuplas que almacenan) sus propias calificaciones ▪ Con el crecimiento del acceso web a las bases de datos, los accesos a las bases de datos provienen principalmente de los servidores de aplicaciones. ▪ Los usuarios finales no tienen ID de usuario de base de datos, todos están asignados al mismo ID de usuario de base de datos ▪ Todos los usuarios finales de una aplicación (como una aplicación web) pueden asignarse a un solo usuario de base de datos
  • 104. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 104 02/03/2022 Limitaciones de la autorización en SQL ▪ La tarea de autorización en los casos anteriores recae en el programa de aplicación, sin soporte de SQL ▪ Beneficio: la aplicación puede implementar autorizaciones detalladas, como tuplas individuales. ▪ Inconveniente: la autorización debe realizarse en el código de la aplicación y puede estar dispersa por toda la aplicación ▪ Verificar la ausencia de lagunas de autorización se vuelve muy difícil ya que requiere leer grandes cantidades de código de aplicación ▪ ¿Solución? Programación Orientada a aspectos-> Se revisará en la asignatura de “Diseño y Arquitectura de Software”
  • 105. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 105 02/03/2022 Resumen ▪ Identificación de usuarios ▪ Los usuarios del sistema se pueden agrupar para facilitar el manejo de la seguridad ▪ Privilegios ▪ Los permisos se pueden otorgar en varios niveles y se pueden otorgar directa o indirectamente utilizando vistas y procedimientos almacenados. ▪ La declaración GRANT ▪ Se utiliza para otorgar permisos a las personas sobre los objetos de la base de datos. ▪ La declaración REVOKE ▪ Se utiliza para quitar permisos. ▪ El catálogo del sistema ▪ Toda la información sobre los permisos se almacena dentro del catálogo.
  • 106. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 106 02/03/2022 GRANT/ REVOKE ▪ GRANT privilege ON tablename TO list [ WITH GRANT OPTION] ▪ Ejemplo: GRANT ALL ON dept TO John GRANT SELECT ON dept TO sally WITH GRANT OPTION GRANT SELECT, UPDATE, INSERT ON dept TO Jim, Mike, Howard REVOKE privilege ON tablename FROM list [CASCADE] e.g REVOKE SELECT ON dept FROM Sally CASCADE ▪ Sin embargo, en gran medida se hace en estos días a través de casillas de verificación en cuadrículas en herramientas GUI de administración de la BD
  • 107. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 107 02/03/2022 DCL Lenguaje De Control De Datos: SENTENCIA GRANT GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE NONE | [{SSL| X509}] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count]]
  • 108. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 108 02/03/2022 DCL Lenguaje De Control De Datos: SENTENCIA GRANT Ejemplo: • GRANT SELECT ON sucursal TO u1, u2, u3; • GRANT SELECT, INSERT, UPDATE ON prueba.estudiante TO mzabala IDENTIFIED BY ‘1234‘; • GRANT USAGE ON * TO anonimo@localhost IDENTIFIED BY 'clave'; • GRANT USAGE ON * TO anonimo@10.28.56.15 IDENTIFIED BY 'clave'; REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON {tbl_name | * | *.* | db_name.*} FROM user [, user] ... SENTENCIA REVOKE REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ... Ejemplo: REVOKE SELECT ON prueba.estudiante FROM mzabala; REVOKE SELECT ON prueba.gente FROM anonimo;
  • 109. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 109 02/03/2022 DCL Lenguaje De Control De Datos: DROP USER La sentencia DROP USER elimina la o las cuentas de usuario MySQL. • Para usarla se debe revocar los privilegios asignados al usuario. • La sentencia DROP USER debe poseer el privilegio GRANT OPTION para la base de datos mysql. Cada cuenta se nombra usando el mismo formato que para GRANT o REVOKE; por ejemplo, 'jeffrey'@'localhost'. Las partes del usuario y la máquina del nombre de la cuenta corresponden a los valores de las columnas User y Host del registro de la tabla user para la cuenta. • DROP USER se añadió en MySQL 4.1.1 y originalmente sólo borra cuentas que no tengan privilegios, en MySQL 5.0.2, fue modificada para borrar también cuentas que tengan privilegios. DROP USER user; Ejemplo: DROP USER mzabala;
  • 110. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 110 02/03/2022 DCL Lenguaje De Control De Datos: SHOW GRANTS La sentencia SHOW GRANTS permite visualizar los privilegios que posee un usuario definido en MySQL, para posteriormente poder ser revocados en caso que se desee eliminarlos. Ejemplo: SHOW GRANTS FOR 'root'@'localhost'; SHOW GRANTS FOR user;
  • 111. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 111 02/03/2022 Non-ANSI Privileges ▪ Sample Non ANSI Table Privileges GRANT ALTER ON dept TO Sally GRANT INDEX ON dept TO John ▪ Sample Non ANSI Database Privileges GRANT CONNECT ON database TO John, Ann GRANT RESOURCE TO Alex GRANT DBA TO Simon
  • 112. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 112 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 113. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 113 02/03/2022 Transacciones ▪ Una transacción es una acción, o una serie de acciones, realizadas por un solo usuario o un programa de aplicación, que lee o actualiza el contenido de una base de datos.
  • 114. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 114 02/03/2022 Transacciones ▪ Una transacción es una o más sentencias que se toman como una unidad (todo termina bien o todo se aborta) ▪ Una transacción es una unidad lógica de trabajo ▪ Definida para las reglas del negocio ▪ Típicamente incluye al menos una modificación de datos ▪ Pasa la base de datos de un estado consistente a otro ▪ Una transacción tiene dos posibles salidas: ▪ Committed ▪ Todas las modificaciones quedan en firme ▪ Rolled back ▪ Las modificaciones retornan a su estado inicial
  • 115. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 115 02/03/2022 Rol de las transacciones ▪ Proteger los datos de las fallas del software, hardware, y potencia eléctrica ▪ Permitir el aislamiento de datos de tal forma que varios usuarios pueden acceder simultáneamente a los datos sin interferencia
  • 116. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 116 02/03/2022 Cuándo usar transacciones? ▪ Cuando un conjunto de sentencias se deben comportar como una unidad
  • 117. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 117 02/03/2022 Lenguaje de Control de Transacciones (TCL) ▪ Los comandos del lenguaje de control de transacciones se utilizan para administrar transacciones en la base de datos. ▪ Estos se utilizan para administrar los cambios realizados por las declaraciones DML. ▪ También permite que las declaraciones se agrupen en transacciones lógicas.
  • 118. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 118 02/03/2022 Sentencias para transacciones ▪ COMMIT: se utiliza para guardar permanentemente cualquier transacción en la base de datos. ▪ ROLLBACK: restaura la base de datos al último estado confirmado. También se usa con el comando savepoint para saltar a un punto de guardado en una transacción. ▪ SAVEPOINT: se usa para guardar temporalmente una transacción para que pueda retroceder a ese punto cuando sea necesario.
  • 119. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 119 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 120. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 120 02/03/2022 Transacciones ➢ Una transacción es una "unidad lógica de trabajo" en una base de datos ➢ Cada transacción hace algo en la base de datos ➢ Ninguna parte de él por sí sola logra nada de utilidad o interés ➢ Las transacciones son la unidad de recuperación, consistencia e integridad también. ➢ Propiedades ACID ➢ Atomicidad ➢ Consistencia ➢ Isolation (Aislamiento) ➢ Durabilidad
  • 121. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 121 02/03/2022 Atomicidad y Consistencia ➢ Atomicidad ➢ Transacciones son atómicas – no tienen partes (conceptualmente) ➢ No pueden ser ejecutadas parcialmente; no debe ser detectable que se intercalan con otra transacción. ➢ Consistencia ➢ Las transacciones llevan la base de datos de un estado consistente a otro ➢ En medio de una transacción, la base de datos puede no ser consistente
  • 122. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 122 02/03/2022 Isolation y Durabilidad ➢ Isolation ➢ Los efectos de una transacción no son visibles para otras transacciones hasta que se haya completado ➢ Desde fuera la transacción ha ocurrido o no ➢ Para mí, esto en realidad suena como una consecuencia de la atomicidad... ➢ Durabilidad ➢ Una vez que se ha completado una transacción, sus cambios se hacen permanentes ➢ Incluso si el sistema falla, los efectos de una transacción deben permanecer en su lugar
  • 123. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 123 02/03/2022 Ejemplo de transacción ➢ Transferir $50 desde una cuenta A a una cuenta B Read(A) A = A - 50 Write(A) Read(B) B = B+50 Write(B) Atomicity - no debe tomar dinero de A sin dárselo a B Consistency - el dinero no se pierde ni se gana Isolation - otras consultas no deberían ver cambios en A o B hasta que se completen las operaciones Durability - el dinero no vuelve a A transacción
  • 124. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 124 02/03/2022 El manejador de Transacciones ➢ El administrador de transacciones aplica las propiedades ACID ➢ Programa las operaciones de transacciones ➢ COMMIT y ROLLBACK son utilizados para asegurar la atomicidad ➢ Se utilizan bloqueos(Locks) o marcas de tiempo(timestamps) para garantizar la consistencia y el aislamiento de las transacciones simultáneas ➢ Se mantiene un registro(log) para garantizar la durabilidad en caso de falla del sistema
  • 125. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 125 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Filtros ▪ Agrupación ▪ Ordenación ▪ Filtros de grupo ▪ Subconsultas ▪ Consultas multitablas
  • 126. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 126 02/03/2022 Sentencias para transacciones ▪ Cuatro sentencias definen la estructura de una transacción ▪ start tran ▪ commit tran ▪ rollback tran ▪ savepoint
  • 127. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 127 02/03/2022 start tran y commit tran ▪ start tran ▪ Inicia la transacción ▪ commit tran ▪ Finaliza la transacción ▪ Todas las modificaciones quedan en firme
  • 128. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 128 02/03/2022 start tran y commit tran ▪ Sintaxis: start { tran | transaction } [ transaction_name ] commit [ tran | transaction | work ] [ transaction_name | savepoint_name ] ▪ Ejemplo: -- @amount is a monetary amount to be transferred. -- @from_account is the account to be debited. -- @to_account is the account to be credited. start tran update accounts set balance = balance - @amount where account = @from_account update accounts set balance = balance + @amount where account = @to_account commit tran
  • 129. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 129 02/03/2022 Ejemplo de start tran y commit tran START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;
  • 130. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 130 02/03/2022 COMMIT y ROLLBACK ➢ COMMIT señala el final exitoso de una transacción ➢ Cualquier cambio realizado por la transacción debe guardarse ➢ Estos cambios ahora son visibles para otras transacciones ➢ ROLLBACK señala el final fallido de una transacción ➢ Cualquier cambio realizado por la transacción debe ser deshecho ➢ Ahora es como si la transacción nunca hubiera existido.
  • 131. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 131 02/03/2022 rollback tran ▪ rollback tran termina una transacción ▪ Deshace las modificaciones que se hayan hecho ▪ La ejecución continua con la instrucción siguiente a rollback
  • 132. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 132 02/03/2022 Sintaxis para rollback tran ▪ Sintaxis: rollback [ tran [ transaction_name | savepoint_name ] | transaction [ transaction_name | savepoint_name ] | work [ transaction_name | savepoint_name ] ] ▪ Ejemplo: -- If @from_account is below 0, abort the transfer start tran update accounts set balance = balance - @amount where account = @from_account update accounts set balance = balance + @amount where account = @to_account if (select balance from accounts where account = @from_account) < 0 rollback tran else commit tran
  • 133. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 133 02/03/2022 Ejemplo para rollback tran DROP DATABASE IF EXISTS test; CREATE DATABASE test CHARACTER SET utf8mb4; USE test; CREATE TABLE cliente ( id INT UNSIGNED PRIMARY KEY, nombre CHAR (20) ); START TRANSACTION; INSERT INTO cliente VALUES (1, 'Pepe’); COMMIT; -- 1. ¿Qué devolverá esta consulta? SELECT * FROM cliente; SET AUTOCOMMIT=0; INSERT INTO cliente VALUES (2, 'Maria’); INSERT INTO cliente VALUES (20, 'Juan’); DELETE FROM cliente WHERE nombre = 'Pepe’; -- 2. ¿Qué devolverá esta consulta? SELECT * FROM cliente; ROLLBACK; -- 3. ¿Qué devolverá esta consulta? SELECT * FROM cliente;
  • 134. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 134 02/03/2022 Ejemplo con begin tran, commit tran, rollback tran ▪ Crear una tabla: select * into mytitles from pubs2..titles ▪ Iniciar una transacción: start tran ▪ Borrar todas las filas de la tabla: delete from mytitles select * from mytitles ▪ Deshacer el borrado: rollback tran select * from mytitles ▪ Iniciar una transacción: start tran
  • 135. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 135 02/03/2022 • Borrar todas las filas de la tabla: delete from mytitles select * from mytitles • Dejar en firme el borrado: commit tran select * from mytitles • Borrar los objetos de base de datos creados: drop table mytitles
  • 136. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 136 02/03/2022 savepoint ▪ savepoint crea un nombre de un punto de grabación ▪ Es una extensión SQL que permite rollbacks parciales
  • 137. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 137 02/03/2022 Sintaxis para savepoint ▪ Sintaxis: savepoint { transaction | tran } savepoint_name ▪ Ejemplo: -- The rollback rolls back to point1. This undoes -- the delete of business books, but not the -- delete of mod_cook books. Execution resumes -- with the statement after the rollback, which -- deletes popular_comp books. start tran delete from titles where type = "mod_cook" savepoint tran point1 delete from titles where type = "business" rollback tran point1 delete from titles where type = "popular_comp" commit tran
  • 138. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 138 02/03/2022 Ejemplo con savepoints ▪ Crear una tabla: select * into mytitles from pubs2..titles ▪ Iniciar una transacción: start tran ▪ Borrar datos de una tabla: delete from mytitles where type = "psychology" select * from mytitles ▪ Establecer un savepoint: savepoint tran title_sav ▪ Borrar los restantes datos de la tabla: delete from mytitles select * from mytitles
  • 139. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 139 02/03/2022 • Restaurar hasta el savepoint: rollback tran title_sav select * from mytitles • Dejar en firme la transacción: commit tran • Borrar los objetos de base de datos creados: drop table mytitles
  • 140. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 140 02/03/2022 Ejemplo con savepoints DROP DATABASE IF EXISTS test; CREATE DATABASE test CHARACTER SET utf8mb4; USE test; CREATE TABLE producto ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100) NOT NULL, precio DOUBLE ); INSERT INTO producto (id, nombre) VALUES (1, 'Primero’); INSERT INTO producto (id, nombre) VALUES (2, 'Segundo’); INSERT INTO producto (id, nombre) VALUES (3, 'Tercero’); -- 1. Comprobamos las filas que existen en la tabla SELECT * FROM producto; -- 2. Ejecutamos una transacción que incluye un SAVEPOINT START TRANSACTION; INSERT INTO producto (id, nombre) VALUES (4, 'Cuarto’); SAVEPOINT sp1; INSERT INTO producto (id, nombre) VALUES (5, 'Cinco’); INSERT INTO producto (id, nombre) VALUES (6, 'Seis’); ROLLBACK TO sp1; -- 3. ¿Qué devolverá esta consulta? SELECT * FROM producto;
  • 141. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 141 02/03/2022 Transacciones anidadas ▪ Se pueden tener transacciones anidadas: ▪ El start y commit más externos comienzan y finalizan las transacciones ▪ Las sentencias start y commit internos solamente guardan un registro del nivel de anidamiento ▪ Ejemplo: start tran delete from titles where type = "mod_cook" start tran delete from titles where type = "business" start tran delete from titles where type = "trad_cook" commit tran -- No deletes committed yet. commit tran -- No deletes committed yet. commit tran -- All deletes committed here.
  • 142. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 142 02/03/2022 Rollbacks anidados ▪ Cuando se ejecutan rollback anidados sin puntos de grabación: ▪ El rollback deshace todas las transacciones en progreso, sin importar el nivel de anidamiento del rollback ▪ Termina la transacción ▪ La ejecución continúa con la sentencia siguiente al rollback ▪ Ejemplo: start tran delete from titles where type = "mod_cook" start tran delete from titles where type = "business" start tran delete from titles where type = "trad_cook" rollback tran -- Entire transaction rolled back commit tran -- This statement has no effect commit tran -- This statement has no effect
  • 143. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 143 02/03/2022 Transacciones y el registro de transacciones ▪ El registro de transacciones almacena los efectos de cada insert, update y delete ▪ El sistema utiliza el registro de transacciones para rehacer las transacciones que se reversaron ▪ Se registra el comienzo de una transacción, los commits y rollbacks ▪ Si un servidor falla durante una transacción, no hay registro de un rollback o commit ▪ Durante la recuperación (recovery), las modificaciones en transacciones sin un registro de rollback o commit no tendrán efecto. Si las modificaciones fueron grabadas en disco, se revertirán.
  • 144. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 144 02/03/2022 Modo de transacción ▪ Un modo de transacción especifica cómo el servidor debe definir las transacciones ▪ Dos modos de transacción ▪ Unchained ▪ Chained
  • 145. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 145 02/03/2022 Modo unchained ▪ En modo unchained, se requiere explícitamente de una sentencia start tran ▪ También se requiere de commit tran o rollback tran explícitos
  • 146. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 146 02/03/2022 Ejemplo de modo Unchained set chained off start tran delete salesdetail where stor_id = "5023" and ord_num = "AB-123-DEF-425-1Z3" if @@error <> 0 begin rollback tran return end delete sales where stor_id = "5023" and ord_num = "AB-123-DEF-425-1Z3" if @@error <> 0 begin rollback tran return end commit tran
  • 147. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 147 02/03/2022 Modo chained ▪ En modo chained, el servidor ejecuta un start implícito antes de: ▪ Sentencias DML– insert, update, delete, select ▪ Sentencias de Cursor– open, fetch ▪ Se requiere de commit tran o rollback tran explícitos ▪ Este modo es ANSI compliant
  • 148. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 148 02/03/2022 Ejemplo de modo chained set chained on -- The server executes an implicit begin tran before -- the next statement. delete salesdetail where stor_id = "5023" and ord_num = "AB-123-DEF-425-1Z3" if @@error <> 0 begin rollback tran return end delete sales where stor_id = "5023" and ord_num = "AB-123-DEF-425-1Z3" if @@error <> 0 begin rollback tran return end commit tran
  • 149. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 149 02/03/2022 Ejemplo start tran insert sales values ("5023", "AB-123-DEF-425-1Z3", "Oct 31 1985") if @@error <> 0 begin rollback transaction return end insert salesdetail values ("5023", "AB-123-DEF-425-1Z3", "TC4203", 2500, 60.5) if @@error <> 0 begin rollback transaction return end commit transaction
  • 150. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 150 02/03/2022 Ejemplo start tran update publishers set pub_id = "9999" where pub_id = "9988" /* check for system error or no rows affected */ if @@error <> 0 or @@rowcount <> 1 begin rollback tran /* Rollback to begin tran*/ return end
  • 151. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 151 02/03/2022 update titles set pub_id = "9999" -- cascade change to titles where pub_id = "9988" if @@error <> 0 begin rollback tran /* Rollback both updates*/ return end /* You might not check @@rowcount for the ** update to the titles table because a publisher ** may not have any titles associated with it. ** A message sent by a print or raiserror ** statement may be used to advise the user that ** no rows were modified in titles. */ commit tran Ejemplo
  • 152. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 152 02/03/2022 Ejemplo • Batch que contiene transacción: declare @err int, @rows int start tran update publishers set pub_id = "x999" where pub_id = "0736" select @err = @@error, @rows = @@rowcount if @err <> 0 begin rollback tran raiserror 31001, "0736" return end if @rows = 0 begin rollback tran raiserror 35001, "publishers" return end
  • 153. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 153 02/03/2022 Ejemplo update titles -- cascade change to titles set pub_id = "x999" where pub_id = "0736" select @err = @@error if @err <> 0 begin rollback tran raiserror 31002, "0736" return end commit tran
  • 154. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 154 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Ordenación ▪ Filtros ▪ Agrupación ▪ Consultas multitablas ▪ Filtros de grupo ▪ Subconsultas
  • 155. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 155 02/03/2022 Estructura de la sentencia SELECT - Nombres de las tablas / vistas - Condiciones (filtros) de selección de filas - Nombre de las columnas - Condiciones de selección de grupo - Nombres de columnas SELECT A1, …, An FROM T1, …, Tn WHERE P GROUP BY Ai1, …, Ain HAVING Q ORDER BY Aj1, …, Ajn -Describe la salida deseada con: •Nombres de columnas •Expresiones aritméticas •Literales •Funciones escalares •Funciones de columna
  • 156. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 156 02/03/2022 Esquema de ejemplos - DB Employees
  • 157. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 157 02/03/2022 Esquema de ejemplos - DB Employees
  • 158. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 158 02/03/2022 Esquema de ejemplos - DB Employees
  • 159. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 159 02/03/2022 Tablas para Ejemplos - Employee CREATE TABLE EMPLOYEE (EMPNO CHARACTER(6) PRIMARY KEY ,FIRSTNME VARCHAR(12) NOT NULL ,MIDINIT CHARACTER(1) ,LASTNAME VARCHAR(15) NOT NULL ,WORKDEPT CHARACTER(3) ,PHONENO CHARACTER(4) ,HIREDATE DATE ,JOB CHARACTER(8) ,EDLEVEL SMALLINT NOT NULL ,SEX CHARACTER(1) ,BIRTHDATE DATE ,SALARY DECIMAL(9,2) ,BONUS DECIMAL(9,2) ,COMM DECIMAL(9,2))
  • 160. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 160 02/03/2022 Tablas para Ejemplos - Employee
  • 161. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 161 02/03/2022 Tablas para Ejemplos - Department CREATE TABLE DEPARTMENT (DEPTNO CHARACTER(3) PRIMARY KEY ,DEPTNAME VARCHAR(36) NOT NULL ,MGRNO CHARACTER(6) ,ADMRDEPT CHARACTER(3) NOT NULL ,LOCATION CHARACTER(16));
  • 162. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 162 02/03/2022 Tablas para Ejemplos - Project CREATE TABLE `DEPARTMENT` ( `DEPTNO` char(3) NOT NULL, `DEPTNAME` varchar(36) NOT NULL, `MGRNO` char(6) DEFAULT NULL, `ADMRDEPT` char(3) NOT NULL, `LOCATION` char(16) DEFAULT NULL);
  • 163. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 163 02/03/2022 Proyección de algunas columnas DEPTNAME ADMRDEPT DEPTNO SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER DEVELOPMENTCENTER MANUFACTURING SYSTEMS ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT A00 A00 A00 A00 D01 D01 A00 E01 E01 A00 B01 C01 D01 D11 D21 E01 E11 E21 SELECT DEPTNO, DEPTNAME, ADMRDEPT FROM DEPARTMENT
  • 164. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 164 02/03/2022 Eliminación de filas duplicadas ▪ SQL permite duplicados en el resultado ▪ Para eliminar las tuplas repetidas se utiliza la cláusula DISTINCT. ▪ También es posible pedir explícitamente la inclusión de filas repetidas mediante el uso de la cláusula ALL. ADMRDEPT A00 A00 A00 A00 D01 D01 A00 E01 E01 SELECT ADMRDEPT FROM DEPARTMENT ADMRDEPT A00 D01 E01 SELECT DISTINCT ADMRDEPT FROM DEPARTMENT SELECT ALL ADMRDEPT FROM DEPARTMENT
  • 165. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 165 02/03/2022 Eliminación de filas duplicadas ▪ ¿Qué trabajos realiza cada departamento? WORKDEPT A00 A00 A00 B01 C01 C01 D11 D11 D21 D21 E01 E11 E11 E21 E21 JOB CLERK PRES SALESREP MANAGER ANALYST MANAGER DESIGNER MANAGER CLERK MANAGER MANAGER MANAGER OPERATOR FIELDREP MANAGER SELECT DISTINCT WORKDEPT, JOB FROM EMPLOYEE
  • 166. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 166 02/03/2022 Proyección de todos los atributos ▪ Se puede pedir la proyección de todos los atributos de la consulta mediante utilizando el símbolo '*' ▪ La tabla resultante contendrá todos los atributos de las tablas que aparecen en la cláusula FROM. SELECT * FROM DEPARTMENT SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER DEVELOPMENTCENTER MANUFACTURING SYSTEMS ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT DEPTNAME ADMRDEPT LOCATION MGRNO DEPTNO A00 A00 A00 A00 D01 D01 A00 E01 E01 000010 000020 000030 - - - - - - 000060 000070 000050 000090 000100 A00 B01 C01 D01 D11 D21 E01 E11 E21
  • 167. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 167 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Ordenación ▪ Filtros ▪ Consultas multitablas ▪ Agrupación ▪ Filtros de grupo ▪ Subconsultas
  • 168. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 168 02/03/2022 Estructura de la sentencia SELECT - Nombres de las tablas / vistas - Condiciones (filtros) de selección de filas - Nombre de las columnas - Condiciones de selección de grupo - Nombres de columnas SELECT A1, …, An FROM T1, …, Tn WHERE P GROUP BY Ai1, …, Ain HAVING Q ORDER BY Aj1, …, Ajn -Describe la salida deseada con: •Nombres de columnas •Expresiones aritméticas •Literales •Funciones escalares •Funciones de columna
  • 169. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 169 02/03/2022 Salida ordenada ▪ SQL permite controlar el orden en el que se presentan las tuplas de una relación mediante la cláusula ORDER BY. ▪ La cláusula ORDER BY tiene la forma ORDER BY A1 <DIRECCION>, ..., An <DIRECCION> ▪ A1, ..., An son atributos de la relación resultante de la consulta ▪ Ai <DIRECCION> controla si la ordenación es Ascendente 'ASC' o descendente 'DESC' por el campo Ai. Por defecto la ordenación se realiza de manera ascendente. ▪ La ordenación se realiza tras haber ejecutado la consulta sobre las tuplas resultantes. ▪ La ordenación puede convertirse en una operación costosa dependiendo del tamaño de la relación resultante.
  • 170. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 170 02/03/2022 Salida ordenada (cont.) SELECT DEPTNO, DEPTNAME, ADMRDEPT FROM DEPARTMENT ORDER BY ADMRDEPT ASC SPIFFY COMPUTER SERVICE DIV. INFORMATION CENTER PLANNING SUPPORTSERVICES DEVELOPMENTCENTER MANUFACTURING SYSTEMS ADMINISTRATION SYSTEMS SOFTWARE SUPPORT OPERATIONS DEPTNAME ADMRDEPT DEPTNO A00 A00 A00 A00 A00 D01 D01 E01 E01 A00 C01 B01 E01 D01 D11 D21 E21 E11
  • 171. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 171 02/03/2022 Salida ordenada (cont.) SELECT DEPTNO, DEPTNAME, ADMRDEPT FROM DEPARTMENT ORDER BY ADMRDEPT ASC, DEPTNO DESC SUPPORT SERVICES DEVELOPMENT CENTER INFORMATION CENTER PLANNING SPIFFY COMPUTER SERVICE DIV. ADMINISTRATION SYSTEMS MANUFACTURING SYSTEMS SOFTWARE SUPPORT OPERATIONS DEPTNAME DEPTNO ADMRDEPT A00 A00 A00 A00 A00 D01 D01 E01 E01 E01 D01 C01 B01 A00 D21 D11 E21 E11
  • 172. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 172 02/03/2022 Contenido ▪ Lenguaje de Definición de Datos (DDL) ▪ Sentencia Create ▪ Sentencia Alter ▪ Sentencia Drop ▪ Sentencia Truncate. ▪ Sentencia Rename ▪ Lenguaje de Manipulación de Datos (DML) ▪ Sentencia Insert ▪ Sentencia Delete ▪ Sentencia Update ▪ Sentencia Select ▪ Sentencia Merge ▪ Lenguaje de Control de Datos (DCL) ▪ Sentencias Grant y Revoke ▪ Lenguaje de Control de Transacciones (TCL) ▪ Propiedades ACID (Atomicidad, Consistency, Isolation, Durability) ▪ Sentencias Commit, Rollback y Savepoint ▪ Consultas SQL básicas ▪ Ordenación ▪ Filtros ▪ Consultas multitablas ▪ Agrupación ▪ Filtros de grupo ▪ Subconsultas
  • 173. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 173 02/03/2022 Estructura de la sentencia SELECT - Nombres de las tablas / vistas - Condiciones (filtros) de selección de filas - Nombre de las columnas - Condiciones de selección de grupo - Nombres de columnas SELECT A1, …, An FROM T1, …, Tn WHERE P GROUP BY Ai1, …, Ain HAVING Q ORDER BY Aj1, …, Ajn -Describe la salida deseada con: •Nombres de columnas •Expresiones aritméticas •Literales •Funciones escalares •Funciones de columna
  • 174. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 174 02/03/2022 Selección de filas ▪ La cláusula WHERE permite filtrar las filas de la relación resultante. ▪ La condición de filtrado se especifica como un predicado. ▪ El predicado de la cláusula WHERE puede ser simple o complejo ▪ Se utilizan los conectores lógicos AND (conjunción), OR (disyunción) y NOT (negación) ▪ Las expresiones pueden contener ▪ Predicados de comparación ▪ BETWEEN / NOT BETWEEN ▪ IN / NOT IN (con y sin subconsultas) ▪ LIKE / NOT LIKE ▪ IS NULL / IS NOT NULL ▪ ALL, SOME/ANY (subconsultas) ▪ EXISTS (subconsultas)
  • 175. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 175 02/03/2022 Selección de filas (cont.) ▪ Predicados de comparación ▪ Operadores: =, <> (es el ≠), <, <=, >=. > ▪ BETWEEN Op1 AND Op2 ▪ Es el operador de comparación para intervalos de valores o fechas. ▪ IN es el operador que permite comprobar si un valor se encuentra en un conjunto. ▪ Puede especificarse un conjunto de valores (Val1, Val2, …) ▪ Puede utilizarse el resultado de otra consulta SELECT.
  • 176. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 176 02/03/2022 Selección de filas (cont.) ▪ LIKE es el operador de comparación de cadenas de caracteres. ▪ SQL distingue entre mayúsculas y minúsculas ▪ Las cadenas de caracteres se incluyen entre comillas simples ▪ SQL permite definir patrones a través de los siguientes caracteres: ▪ '%', que es equivalente a "cualquier subcadena de caracteres" ▪ '_', que es equivalente a "cualquier carácter" ▪ IS NULL es el operador de comparación de valores nulos.
  • 177. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 177 02/03/2022 Ejemplo de selección de filas ▪ ¿Qué departamentos informan al A00? SELECT DEPTNO, ADMRDEPT FROM DEPARTMENT WHERE ADMRDEPT='A00' DEPTNO ADMRDEPT A00 B01 C01 D01 E01 A00 A00 A00 A00 A00
  • 178. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 178 02/03/2022 Ejemplo de selección de filas ▪ Necesito el apellido y el nivel de formación de los empleados cuyo nivel de formación es mayor o igual a 19 SELECT LASTNAME, EDLEVEL FROM EMPLOYEE WHERE EDLEVEL >= 19 EDLEVEL LASTNAME KWAN LUCCHESSI 20 19
  • 179. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 179 02/03/2022 Ejemplo de selección de filas ▪ Necesito el número de empleado, apellido y fecha de nacimiento de aquellos que hayan nacido después del 1 de enero de 1955 (inclusive). SELECT EMPNO, LASTNAME, BIRTHDATE FROM EMPLOYEE WHERE BIRTHDATE >='1955-01-01' ORDER BY BIRTHDATE BIRTHDATE EMPNO 000160 000100 LASTNAME PIANKA SPENCER 1955-04-12 1956-12-18
  • 180. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 180 02/03/2022 Múltiples condiciones - AND ▪ Necesito el número de empleado, el trabajo y el nivel de formación de los analistas con un nivel de educación 16 SELECT EMPNO, JOB, EDLEVEL FROM EMPLOYEE WHERE JOB='ANALYST' AND EDLEVEL=16 EMPNO JOB EDLEVEL 000130 ANALYST 16
  • 181. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 181 02/03/2022 Múltiples condiciones – AND/OR ▪ Obtener el número de empleado, el trabajo y el nivel de formación de todos los analistas con un nivel 16 y de todos los empleados de nivel 18. La salida se ordena por trabajo y nivel SELECT EMPNO, JOB, EDLEVEL FROM EMPLOYEE WHERE (JOB='ANALYST' AND EDLEVEL=16) OR EDLEVEL=18 ORDER BY JOB, EDLEVEL EMPNO JOB EDLEVEL 000130 000140 000220 000020 000010 ANALYST ANALYST DESIGNER MANAGER PRES 16 18 18 18 18
  • 182. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 182 02/03/2022 SELECT con BETWEEN ▪ Obtener el número de empleado y el nivel de todos los empleados con un nivel entre 12 y 15 SELECT EMPNO, EDLEVEL FROM EMPLOYEE WHERE EDLEVEL BETWEEN 12 AND 15 ORDER BY EDLEVEL 000250 EMPNO EDLEVEL 000310 000290 000300 000330 000100 000230 000120 000270 12 12 14 14 14 14 14 15 15
  • 183. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 183 02/03/2022 SELECT con IN ▪ Listar los apellidos y nivel de formación de todos los empleados de nivel 14, 19 o 20. ▪ El resultado clasificado por nivel y apellido SELECT LASTNAME, EDLEVEL FROM EMPLOYEE WHERE EDLEVEL IN (14, 19, 20) ORDER BY EDLEVEL, LASTNAME LASTNAME EDLEVEL JEFFERSON LEE O'CONNELL SMITH SPENSER LUCCHESI KWAN 14 14 14 14 14 19 20
  • 184. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 184 02/03/2022 Búsqueda parcial - LIKE ▪ Obtener el apellido de todos los empleados cuyo apellido empiece por G SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE 'G%'; LASTNAME GEYER GOUNOT
  • 185. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 185 02/03/2022 Búsqueda parcial – LIKE Ejemplos con % SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '%SON'; THOMPSON HENDERSON ADAMSON JEFFERSON JOHNSON THOMPSON ADAMSON MARINO SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '%M%N%';
  • 186. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 186 02/03/2022 Búsqueda parcial – LIKE Ejemplos con _ ▪ ¿Qué empleados tienen una C como segunda letra de su apellido? SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '_C%'; LASTNAME SCOUTTEN SCHNEIDER
  • 187. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 187 02/03/2022 Búsqueda parcial – NOT LIKE ▪ Necesito todos los departamentos excepto aquellos cuyo número NO empiece por 'D' SELECT DEPTNO, DEPTNAME FROM DEPARTMENT WHERE DEPTNO NOT LIKE 'D%'; DEPTNAME DEPTNO SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT A00 B01 C01 E01 E11 E21
  • 188. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 188 02/03/2022 Expresiones y renombramiento de columnas SELECT EMPNO, SALARY, COMM, SALARY+COMM AS INCOME FROM EMPLOYEE WHERE SALARY < 20000 ORDER BY EMPNO SALARY COMM INCOME EMPNO 18270.00 19180.00 17250.00 15340.00 17750.00 15900.00 19950.00 1462.00 1534.00 1380.00 1227.00 1420.00 1272.00 1596.00 19732.00 20714.00 18630.00 16567.00 19170.00 17172.00 21546.00 000210 000250 000260 000290 000300 000310 000320
  • 189. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 189 02/03/2022 Renombramiento de tablas ▪ Es posible obtener “copias” de una tabla situando etiquetas junto al nombre de las tablas. ▪ Ejemplo: en el siguiente esquema de base de datos, queremos obtener el nombre de los empleados con al menos dos hijos. EMP (DNI, NOM) HIJOS (DNI, NOMH) ▪ Realiza el producto cartesiano de las tres tablas y da como resultado aquellas tuplas con igual DNI en las tres y con distinto nombre en los hijos. ¿Solución a la repetición de nombres de distintos empleados? SELECT NOM FROM EMP, HIJOS H1, HIJOS H2 WHERE EMP.DNI = H1.DNI AND EMP.DNI = H2.DNI AND H1.NOMH <> H2.NOMH;
  • 190. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 190 02/03/2022 Renombramiento de tablas (cont.) ▪ Utilizar clausula DISTINCT (elimina filas repetidas) e incluir la clave de la tabla: ▪ Ejemplo: en el siguiente esquema de base de datos, se piden los apellidos de cada empleado y de su supervisor. ▪ EMP (DNI, NOM, AP, SUELDO, ND, DNISUPERV) ▪ Las etiquetas también sirven para desambiguar. SELECT DISTINCT EMP.NOM, EMP.DNI FROM EMP, HIJOS H1, HIJOS H2 WHERE EMP.DNI = H1.DNI AND EMP.DNI = H2.DNI AND H1.NOMH <> H2.NOMH; SELECT E.AP, S.AP FROM EMP E, EMP S WHERE E.DNISUPERV = S.DNI;
  • 191. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 191 02/03/2022 Tipos SQL y valores literales ▪ La norma SQL define un conjunto de tipos para las columnas de las tablas. ▪ Habitualmente cada SGBD tiene tipos propios o particularidades para los tipos de la norma SQL. ▪ Es necesario consultar el manual del SGBD para obtener información acerca de los tamaños máximos de almacenamiento. ▪ En el caso de cadenas, cual es la longitud máxima de almacenamiento. ▪ En el caso de tipos numéricos, cual es el rango de valores posibles.
  • 192. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 192 02/03/2022 Tipos SQL y valores literales Tipo Ejemplo BIGINT 8589934592 INTEGER 186282 SMALLINT 186 NUMERIC(8,2) 999999.99 (precisión, escala) DECIMAL(8,2) 999999.99 (precisión, escala) REAL 6.02257E23 DOUBLE PRECISION 3.141592653589 FLOAT 6.02257E23 CHARACTER(max) 'GREECE ' (15 caracteres) VARCHAR(n) 'hola' DATE date 'YYYY-MM-DD' TIME time 'hh:mm:ss.ccc' TIMESTAMP timestamp 'YYYY-MM-DD hh:mm:ss.ccc'
  • 193. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 193 02/03/2022 Expresiones ▪ Aunque SQL no es un lenguaje de programación de propósito general, permite definir expresiones calculadas. ▪ Estas expresiones pueden contener ▪ Referencias a columnas ▪ Valores literales ▪ Operadores aritméticos ▪ Llamadas a funciones ▪ Los operadores aritméticos son los habituales: +, -, * y / ▪ Estos operadores sólo funcionan con valores numéricos. ▪ Los operadores '+' y '–' habitualmente funcionan para fechas. ▪ Aunque las normas SQL definen un conjunto mínimo de funciones, los SGBD proporcionan una gran variedad. ▪ Es necesario consultar el manual del SGBD particular.
  • 194. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 194 02/03/2022 Funciones matemáticas comunes Descripción IBM DB2 SQL Server Oracle MySQL Valor absoluto ABSs ABS ABS ABS Menor entero >= valor CEIL CEILING CEIL CEILING Menor entero <= valor FLOOR FLOOR FLOOR FLOOR Potencia POWER POWER POWER POWER Redondeo a un número de cifras decimales ROUND ROUND ROUND ROUND Módulo MOD. % MOD. %
  • 195. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 195 02/03/2022 Funciones de cadena Descripción IBM DB2 SQL Server Oracle MySQL Convierte todos los caracteres a minúsculas LOWER LOWER LOWER LOWER Convierte todos los caracteres a mayúsculas UPPER UPPER UPPER UPPER Elimina los blancos del final de la cadena RTRIM RTRIM RTRIM RTRIM Elimina los blancos del comienzo de la cadena LTRIM LTRIM LTRIM LTRIM Devuelve una subcadena SUBSTR SUBSTRING SUBSTR SUBSTRING Concatena dos cadenas CONCAT + CONCAT CONCAT
  • 196. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 196 02/03/2022 Operaciones aritméticas ▪ Necesito obtener el salario, la comisión y los ingresos totales de todos los empleados que tengan un salario menor de 20000€ , clasificado por número de empleado SELECT EMPNO, SALARY, COMM, SALARY + COMM FROM EMPLOYEE WHERE SALARY < 20000 ORDER BY EMPNO 18270.00 19180.00 17250.00 15340.00 17750.00 15900.00 19950.00 1462.00 1534.00 1380.00 1227.00 1420.00 1272.00 1596.00 19732.00 20714.00 18630.00 16567.00 19170.00 17172.00 21546.00 SALARY COMM EMPNO 000210 000250 000260 000290 000300 000310 000320
  • 197. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 197 02/03/2022 Operaciones aritméticas (cont.) SELECT EMPNO, SALARY, SALARY*1.0375 FROM EMPLOYEE WHERE SALARY < 20000 ORDER BY EMPNO SALARY EMPNO 18270.00 19180.00 17250.00 15340.00 17750.00 15900.00 19950.00 18955.125000 19899.250000 17896.875000 15915.250000 18415.625000 16496.250000 20698.125000 000210 000250 000260 000290 000300 000310 000320
  • 198. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 198 02/03/2022 Expresiones en predicados SELECT EMPNO, SALARY, (COMM/SALARY)*100 FROM EMPLOYEE WHERE (COMM/SALARY) * 100 > 8 ORDER BY EMPNO SALARY EMPNO 2274.00 1462.00 2301.00 2030.00 28420.00 18270.00 28760.00 25370.00 000140 000210 000240 000330 COMM 8.001400 8.002100 8.000600 8.001500
  • 199. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 199 02/03/2022 Uso de funciones SELECT EMPNO, SALARY, TRUNCATE(SALARY*1.0375, 2) FROM EMPLOYEE WHERE SALARY < 20000 ORDER BY EMPNO SALARY EMPNO 18270.00 19180.00 17250.00 15340.00 17750.00 15900.00 19950.00 18955.12 19899.25 17896.87 15915.25 18415.62 16496.25 20698.12 000210 000250 000260 000290 000300 000310 000320
  • 200. Bases de Datos Ph.D. Franklin Parrales Carrera de Software 200 02/03/2022 Uso de funciones (cont.) SELECT CONCAT(LASTNAME,' , ',FIRSTNAME ) AS NAME FROM EMPLOYEE WHERE WORKDEPT = 'A00' ORDER BY NAME NAME HAAS, CHRISTA LUCCHESI, VINCENZO O'CONNELL, SEAN