Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs +...

44
Edited with emacs + LAT E X+ prosper Bases de Datos (II) Computación Web (Curso 2013/2014) Jes ´ us Arias Fisteus // [email protected] Bases de Datos (II)– p. 1

Transcript of Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs +...

Page 1: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Bases de Datos (II)

Computación Web (Curso 2013/2014)

Jesus Arias Fisteus // [email protected]

Bases de Datos (II)– p. 1

Page 2: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Consultas OUTER JOIN

Una limitación de las consultas INNER JOIN esque requieren que haya coincidencia de datosentre las dos tablas. Si una fila de una tabla nocoincide con ninguna de la otra, esa fila no saleentre los resultados.

Las consultas OUTER JOIN permiten recuperarfilas aunque no tengan coincidencia con otras. Serecuperan todas las filas de la tabla primariaincluso si no coinciden con ninguna fila de la tablasecundaria.

Bases de Datos (II)– p. 2

Page 3: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Consultas OUTER JOIN

Tres tipos de consultas OUTER JOIN:LEFT JOIN: la tabla mecionada antes de LEFTJOIN es la tabla primaria.RIGHT JOIN: la tabla mecionada después deRIGHT JOIN es la tabla primaria.FULL JOIN: ambas tablas son primarias. Serecuperan todas las filas de ambas tablas,aunque no tengan correspondencia en la otra.

Bases de Datos (II)– p. 3

Page 4: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

CustomerID FirstName LastName

1 William Smith

2 Natalie Lopez

3 Brenda Harper

4 Adam Petrie

OrderID CustomerID OrderDate OrderAmount

1 1 2009-09-01 10.00

2 2 2009-09-02 12.50

3 2 2009-10-03 18.00

4 3 2009-09-15 20.00

RefundID OrderID RefundDate RefundAmount

1 1 2009-09-02 5.00

2 3 2009-10-12 18.00

Bases de Datos (II)– p. 4

Page 5: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

SELECT

Customers.FirstName AS ’First Name’,

Customers.LastName AS ’Last Name’,

Orders.OrderDate AS ’Order Date’,

Orders.OrderAmount AS ’Order Amt’,

FROM Customers

LEFT JOIN Orders

ON Customers.CustomerID = Orders.CustomerID

ORDER BY Customers.CustomerID, Orders.OrderID

Bases de Datos (II)– p. 5

Page 6: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

First Last Order Order

Name Name Date Amt

William Smith 2009-09-01 10.00

Natalie Lopez 2009-09-02 12.50

Natalie Lopez 2009-10-03 18.00

Brenda Harper 2009-09-15 20.00

Adam Petrie NULL NULL

Bases de Datos (II)– p. 6

Page 7: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

SELECT

Customers.FirstName AS ’First Name’,

Customers.LastName AS ’Last Name’,

Orders.OrderDate AS ’Order Date’,

Orders.OrderAmount AS ’Order Amt’,

Refunds.RefundDate AS ’Refund Date’,

Refunds.RefundAmount AS ’Refund Amt’

FROM Customers

LEFT JOIN Orders

ON Customers.CustomerID = Orders.CustomerID

LEFT JOIN Refunds

ON Orders.OrderID = Refunds.OrderID

ORDER BY Customers.CustomerID, Orders.OrderID, RefundID

Bases de Datos (II)– p. 7

Page 8: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

First Last Order Order Refund Refund

Name Name Date Amt Date Amt

William Smith 2009-09-01 10.00 2009-09-02 5.00

Natalie Lopez 2009-09-02 12.50 NULL NULL

Natalie Lopez 2009-10-03 18.00 2009-10-12 18.00

Brenda Harper 2009-09-15 20.00 NULL NULL

Adam Petrie NULL NULL NULL NULL

Bases de Datos (II)– p. 8

Page 9: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Consultas self join

Combinan datos de una tabla con otra vista de lamisma tabla.

Pueden utilizar tanto INNER JOIN como cualquiertipo de OUTER JOIN.

Bases de Datos (II)– p. 9

Page 10: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

EmployeeID EmployeeName ManagerID

1 William Smith 2

2 Natalie Lopez NULL

3 Brenda Harper 1

4 Adam Petrie 2

SELECT

Employees.EmployeeName AS ’Employee Name’,

Managers.EmployeeName AS ’Manager Name’

FROM Personnel AS Employees

INNER JOIN Personnel AS Managers

ON Employees.ManagerID = Managers.EmployeeID

ORDER BY Employees.EmployeeID

Bases de Datos (II)– p. 10

Page 11: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

Employee Name Manager Name

William Smith Natalie Lopez

Brenda Harper William Smith

Adam Petrie Natalie Lopez

Bases de Datos (II)– p. 11

Page 12: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Inserción de datos

El comando INSERT INTO permite insertar datosen tablas.

INSERT INTO <table>

(<columnlist>)

VALUES

(<RowValues1>),

(<RowValues2>);

Bases de Datos (II)– p. 12

Page 13: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplos

Customer First Last State

Id Name Name

1 William Smith IL

2 Natalie Lopez WI

3 Brenda Harper NV

INSERT INTO Customers

(FirstName, LastName, State)

VALUES

(’Virginia’, ’Jones’, ’OH’),

(’Clark’, ’Woodland’, ’CA’);

Bases de Datos (II)– p. 13

Page 14: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Inserción de datos

La lista de columnas:No es obligatoria cuando los datos seproporcionan para todas las columnas y en elmismo orden.Sin embargo, es recomendable usar lista decolumnas a pesar de ello para evitar errorespotenciales.

Bases de Datos (II)– p. 14

Page 15: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Inserción de datos

Columnas autoincremento:Son columnas cuyo valor se estableceautomáticamente mediante un contador. Sonútiles para asignar identificadores numéricos.En la inserción no se les asigna valor, para queel sistema lo haga automáticamente.

Otras columnas no especificadas: reciben su valorpor defecto o valor NULL.

Bases de Datos (II)– p. 15

Page 16: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Inserción de datos

Es posible insertar en una tabla los resultados deuna consulta.

INSERT INTO Customers

(FirstName, LastName, State)

SELECT

Name1,

Name2,

State

FROM CustomerTransactions

WHERE State = ’RI’;

Bases de Datos (II)– p. 16

Page 17: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Inserción de datos

También se puede hacer para una columnaconcreta.

INSERT INTO Paises

(nombre, capital)

VALUES

(’Suiza’,

(SELECT id

FROM Ciudades

WHERE nombre=’Berna’)

);

Bases de Datos (II)– p. 17

Page 18: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Eliminación de datos

DELETE FROM permite borrar filas en tablas.

DELETE

FROM <table>

WHERE <condition>;

Bases de Datos (II)– p. 18

Page 19: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplos

DELETE

FROM Customers

WHERE State = ’RI’;

Bases de Datos (II)– p. 19

Page 20: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Actualización de datos

UPDATE permite modificar datos en filas que yaexistan en una tabla.

Se indica qué columnas se van a cambiar, y elnuevo valor. El resto permanecerán sinmodificaciones.

UPDATE <table>

SET <Column1> = <Expression1>,

<Column2> = <Expression2>

...repeat any number of times...

WHERE <condition>;

Bases de Datos (II)– p. 20

Page 21: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplos

Customer First Last State

Id Name Name

1 William Smith IL

UPDATE Customers

SET FirstName = ’Will’

WHERE CustomerID = 1;

Customer First Last State

Id Name Name

1 Will Smith IL

Bases de Datos (II)– p. 21

Page 22: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Actualización de datos

Es posible establecer valores en base a losresultados devueltos por una consulta SELECT.

UPDATE Customers

SET Customers.State =

(SELECT CustomerTransactions.State

FROM CustomerTransactions

WHERE CustomerTransactions.CustomerID = Customers.CustomerID),

Customers.Zip =

(SELECT CustomerTransactions.Zip

FROM CustomerTransactions

WHERE CustomerTransactions.CustomerID = Customers.CustomerID)

WHERE EXISTS

(SELECT *FROM CustomerTransactions

WHERE CustomerTransactions.CustomerID = Customers.CustomerID)

Bases de Datos (II)– p. 22

Page 23: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Creación de tablas

Se puede crear tablas con CREATE TABLE.

Al crear una tabla, se especifican aspectos como:Nombre de la tabla.Para cada columna:

Nombre y tipo de datosValor por defectoSi puede tomar valor NULLSi es un campo de auto-incremento.

Claves primarias y foráneas.

Índices.

Bases de Datos (II)– p. 23

Page 24: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

CREATE TABLE Ciudades (

id INT NOT NULL auto_increment,

nombre VARCHAR(255) NOT NULL,

PRIMARY KEY (id)

);

CREATE TABLE Paises (

id INT NOT NULL auto_increment,

nombre VARCHAR(64) NOT NULL,

capital INT NOT NULL,

PRIMARY KEY (id),

CONSTRAINT FOREIGN KEY (capital)

REFERENCES Ciudades (id)

);

Bases de Datos (II)– p. 24

Page 25: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Consistencia en actualizaciones de da-tos

Cuando se modifica o borra una fila, hay riesgo deintroducir inconsistencias en claves foráneas.

Por ejemplo, cuando se borra una fila a la cualse hace referencia desde otras filas de otrastablas.

Bases de Datos (II)– p. 25

Page 26: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Consistencia en actualizaciones de da-tos

Es posible especificar qué debe hacer la base dedatos ante modificaciones o borrados que afectena la consistencia:

No realizar las modificaciones/borrados(RESTRICT o NO ACTION).Poner a NULL (SET NULL).Propagar (CASCADE).Establecer el valor por defecto (SET DEFAULT).

La acción por defecto en InnoDB (MySQL) esRESTRICT.

Bases de Datos (II)– p. 26

Page 27: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Tipos de tablas en MySQL

En MySQL hay varios tipos de tablas que difierenen cómo se almacena la información y quéfuncionalidad ofrecen:

MyISAM: no transaccional, sin integridadreferencial.BerkeleyDB: transaccional, sin integridadreferencial.InnoDB: transaccional, con integridadreferencial.Otros: http://dev.mysql.com/doc/refman/5.0/en/

storage-engines.html

Bases de Datos (II)– p. 27

Page 28: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

CREATE TABLE Ciudades (

id INT NOT NULL auto_increment,

nombre VARCHAR(255) NOT NULL,

PRIMARY KEY (id)

) ENGINE=INNODB;

CREATE TABLE Paises (

id INT NOT NULL auto_increment,

nombre VARCHAR(64) NOT NULL,

capital INT NOT NULL,

PRIMARY KEY (id),

CONSTRAINT FOREIGN KEY (capital)

REFERENCES Ciudades (id)

ON UPDATE CASCADE

) ENGINE=INNODB;

Bases de Datos (II)– p. 28

Page 29: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

CREATE TABLE Ciudades (

id INT NOT NULL auto_increment,

nombre VARCHAR(255) NOT NULL,

PRIMARY KEY (id)

) ENGINE=INNODB;

CREATE TABLE Paises (

id INT NOT NULL auto_increment,

nombre VARCHAR(64) NOT NULL,

capital INT NOT NULL,

PRIMARY KEY (id),

CONSTRAINT FOREIGN KEY (capital)

REFERENCES Ciudades (id)

ON UPDATE CASCADE

ON DELETE CASCADE

) ENGINE=INNODB;

Bases de Datos (II)– p. 29

Page 30: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Índices

Los índices son estructuras de datos construidaspara permitir una consulta más rápida de los datosde una tabla.

Se construyen sobre una columna, o sobre lacombinación de varias columnas.

Puede haber más de un índice por tabla.

Para la clave primaria de una tabla se construyeautomáticamente un índice.

Bases de Datos (II)– p. 30

Page 31: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Índices

Ventajas:Localización más rápida de datos en la tabla enacceso aleatorio.Acceso a datos en orden de forma más rápida.

Desventajas:Coste adicional en el tiempo necesario parainsertar datos.Necesidad de más espacio de almacenamiento.

Bases de Datos (II)– p. 31

Page 32: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Ejemplo

CREATE [UNIQUE] INDEX <index_name>

ON <table_name> (<col_1>, <col_2>,...);

CREATE TABLE <table_name> (

(...)

INDEX [<index_name>] (<col_1>, <col_2>,...)

);

Bases de Datos (II)– p. 32

Page 33: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Otros comandos de gestión de tablas

Mostrar todas las tablas de una base de datos:SHOW TABLES;

Mostrar la estructura de una tabla: DESCRIBE<table_name>;

Eliminar una tabla: DROP TABLE

<table_name>;

Añadir, modificar o eliminar filas en una tabla:ALTER TABLE ...;

Bases de Datos (II)– p. 33

Page 34: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Transacciones en SQL

Una transacción es una secuencia de sentenciasSQL que deben ser tratadas como una unidad.

Deben cumplirse los principios ACID:Atomicidad.Consistencia.Aislamiento.Durabilidad.

Bases de Datos (II)– p. 34

Page 35: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Transacciones en SQL

Atomicidad:O se ejecutan con éxito todas las sentencias dela transacción, o la base de datos debe volveral estado previo al inicio de la transacción.

Consistencia:Una vez finalizada la transacción, la base dedatos debe estar en un estado consistente (sedeben cumplir todas las restricciones deconsistencia de los datos).

Bases de Datos (II)– p. 35

Page 36: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Transacciones en SQL

Aislamiento:Durante la ejecución de una transacción, suscambios no pueden ser visibles para el resto detransacciones.

Durabilidad:Una vez finaliza una transacción con éxito, sedebe garantizar que los cambios perdurenincluso antes situaciones de fallo en el sistema.

Bases de Datos (II)– p. 36

Page 37: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Transacciones en SQL

Normalmente, cada comando SQL se ejecutacomo una transacción.

Se puede deshabilitar en MySQL mediante SET

AUTOCOMMIT=0;

Se inicia una transacción con START

TRANSACTION;

Para finalizar la transacción:Cancelándola: ROLLBACK;Confirmándola: COMMIT;

Bases de Datos (II)– p. 37

Page 38: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Cerrojos en filas de tablas

Los gestores de bases de datos relacionalessuelen utilizar cerrojos para controlar el accesoconcurrente a tablas.

Principalmente, se usan dos tipos de cerrojos:shared (S) y exclusive (X):

La adquisición de un cerrojo S es compatiblecon otros cerrojos S sobre la misma fila.El intento de adquisición de un cerrojo bloqueala operación hasta que sea posible. Si hayinterbloqueo con otra sesión, la sentencia falla.

Bases de Datos (II)– p. 38

Page 39: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Cerrojos en filas de tablas

En modificaciones y eliminaciones se adquiere Xautomáticamente, hasta el final de la transacción.

Las lecturas se pueden realizar de tres formas:Consistent read : no se adquiere cerrojo.Adquisición de S: SELECT ... LOCK IN

SHARE MODE.Adquisición de X: SELECT ... FOR UPDATE.

Bases de Datos (II)– p. 39

Page 40: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Niveles de aislamiento

En SQL se puede configurar el nivel deaislamiento entre transacciones concurrentes.

Si el nivel de aislamiento no es el adecuado,pueden surgir problemas cuando se ejecutantransacciones concurrentemente:

Dirty reads.Unrepeatable reads.Phantom reads.

Bases de Datos (II)– p. 40

Page 41: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Niveles de aislamiento

Niveles de aislamiento en SQL:READ UNCOMMITTED

READ COMMITTED

REPEATABLE READ

SERIALIZABLE

Niveles mayores implican mayor protección entransacciones concurrentes pero peor rendimiento.

Bases de Datos (II)– p. 41

Page 42: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Niveles de aislamiento

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

Bases de Datos (II)– p. 42

Page 43: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Referencias

The Language of SQL, Larry Rockoff. CourseTechnology PTR (2010).

Accesible en Safari: http://proquest.

safaribooksonline.com/book/databases/sql/9781435457515

Capítulos: 12, 13, 17, 18.Gran parte de los ejemplos de estastransparencias proceden de este libro.

Bases de Datos (II)– p. 43

Page 44: Bases de Datos (II) Computación Web (Curso 2013/2014) · PDF fileEdited with emacs + LAT E X+ prosper Consultas OUTER JOIN Una limitación de las consultas INNER JOIN es que requieren

Edi

ted

with

emac

s+

LAT E

X+

pros

per

Referencias

MySQL Transactional and Locking Statements:http://dev.mysql.com/doc/refman/5.0/en/

sql-syntax-transactions.html

The InnoDB Transaction Model and Locking:http://dev.mysql.com/doc/refman/5.1/en/

innodb-transaction-model.html

Bases de Datos (II)– p. 44