bases de datos relacionales y sql - it.uc3m.es · pdf filebases de datos relacionales i...
TRANSCRIPT
![Page 1: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/1.jpg)
Bases de datos relacionales y SQL
Jesus Arias Fisteus
Computacion Web (2017/18)
Computacion Web (2017/18) Bases de datos relacionales y SQL 1
![Page 2: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/2.jpg)
Parte I
Introduccion a las bases de datos
relacionales
Computacion Web (2017/18) Bases de datos relacionales y SQL 2
![Page 3: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/3.jpg)
Bases de datos relacionales
I Coleccion de datos almacenados en una o mas tablas.
I Las tablas constan de filas y columnas.
I Las tablas pueden estar relacionadas entre sı.
Computacion Web (2017/18) Bases de datos relacionales y SQL 3
![Page 4: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/4.jpg)
Ejemplo: una unica tabla
Tabla “Paises”nombre continente superficie poblacion capital
Espana Europa 505370 46438422 Madrid
Francia Europa 643801 64590000 Parıs
Canada America 9984670 36155487 Ottawa
Alemania Europa 357022 81770900 Berlın
Australia Oceanıa 7692024 23613193 Canberra
Computacion Web (2017/18) Bases de datos relacionales y SQL 4
![Page 5: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/5.jpg)
Ejemplo: varias tablas relacionadas
Tabla “Paises”id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
Tabla “Continentes”id nombre superficie poblacion
1 Europa 10180000 731000000
2 America 42330000 910000000
3 Oceanıa 9008458 38889988
Computacion Web (2017/18) Bases de datos relacionales y SQL 5
![Page 6: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/6.jpg)
Ejemplo: varias tablas relacionadas
Tabla “Ciudades”id nombre superficie poblacion
1 Madrid 605.77 3141991
2 Barcelona 102.15 1604555
3 Parıs 105.40 2229621
4 Ottawa 2778.64 1083391
5 Nueva York 1214.00 8491079
6 Berlın 891.68 3469849
7 Canberra 814.20 381488
Computacion Web (2017/18) Bases de datos relacionales y SQL 6
![Page 7: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/7.jpg)
Relaciones entre tablas
I Las relaciones entre tablas se explicitan por medio de:I Clave primaria: columna o combinacion de columnas que
identifican unıvocamente a las filas de una tabla.I Clave ajena (tambien conocida como clave externa o foranea):
columna o combinacion de columnas en una tabla que hacenreferencia a la clave primaria de otra tabla.
Computacion Web (2017/18) Bases de datos relacionales y SQL 7
![Page 8: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/8.jpg)
Sistema gestor de bases de datos relacionales
I Programa que da soporte al uso de bases de datos relacionales.I Ejemplos:
I Oracle DatabaseI Microsoft SQL ServerI IBM DB2I SAP Advantage Database ServerI MySQLI PostgreSQLI SQLite
Computacion Web (2017/18) Bases de datos relacionales y SQL 8
![Page 9: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/9.jpg)
El lenguaje SQL
I Lenguaje estandar para utilizar y mantener bases de datosrelacionales.
I Utilizado en los principales gestores de bases de datosrelacionales.
I Aunque hay pequenas variaciones (dialectos) dependiendo delgestor.
Computacion Web (2017/18) Bases de datos relacionales y SQL 9
![Page 10: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/10.jpg)
Parte II
El lenguaje SQL: recuperacion de datos
Computacion Web (2017/18) Bases de datos relacionales y SQL 10
![Page 11: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/11.jpg)
La sentencia SELECT
I La sentencia SELECT se utiliza para recuperar datos de labase de datos.
1 SELECT2 <columna_1 >, <columna_2 >, <columna_3 >3 FROM <tabla >4 WHERE <condici on>
Computacion Web (2017/18) Bases de datos relacionales y SQL 11
![Page 12: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/12.jpg)
La sentencia SELECT: ejemplos
1 SELECT *2 FROM Paises;
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
Computacion Web (2017/18) Bases de datos relacionales y SQL 12
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 13: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/13.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises;
nombre poblacion
Espana 46438422
Francia 64590000
Canada 36155487
Alemania 81770900
Australia 23613193
Computacion Web (2017/18) Bases de datos relacionales y SQL 13
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 14: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/14.jpg)
La sentencia SELECT: ejemplos
1 SELECT superficie , poblacion2 FROM Paises3 WHERE nombre='Espa~na';
superficie poblacion
505370 46438422
Computacion Web (2017/18) Bases de datos relacionales y SQL 14
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 15: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/15.jpg)
La sentencia SELECT: ejemplos
1 SELECT superficie , poblacion2 FROM Paises3 WHERE id=1;
superficie poblacion
505370 46438422
Computacion Web (2017/18) Bases de datos relacionales y SQL 15
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 16: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/16.jpg)
Logica Booleana
I Operadores Booleanos: AND, OR, NOT.
I Expresiones de comparacion: =, <>, <, >, <=, >=,BETWEEN.
I Pertenencia a un conjunto de valores: IN.
I Comparacion con NULL: IS NULL, IS NOT NULL.
Computacion Web (2017/18) Bases de datos relacionales y SQL 16
![Page 17: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/17.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 WHERE poblacion >50000000;
nombre poblacion
Francia 64590000
Alemania 81770900
Computacion Web (2017/18) Bases de datos relacionales y SQL 17
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 18: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/18.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 WHERE poblacion <50000000 AND continente =1;
nombre poblacion
Espana 46438422
Computacion Web (2017/18) Bases de datos relacionales y SQL 18
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 19: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/19.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 WHERE poblacion BETWEEN 50000000 AND 70000000;
nombre poblacion
Francia 64590000
Computacion Web (2017/18) Bases de datos relacionales y SQL 19
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 20: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/20.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre2 FROM Paises3 WHERE continente IN (1, 3);
nombre
Espana
Francia
Alemania
Australia
Computacion Web (2017/18) Bases de datos relacionales y SQL 20
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 21: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/21.jpg)
Ordenacion y restriccion del numero de resultados
I Ordenacion:I ORDER BY especifica la columna (o columnas) sobre la cual se
deben ordenar las filas.I Sentido de ordenacion: ASC (por defecto), DESC.
I Restriccion del numero de resultados:I Palabra clave LIMIT.I Palabra clave OFFSET para seleccionar el rango.
Computacion Web (2017/18) Bases de datos relacionales y SQL 21
![Page 22: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/22.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 ORDER BY poblacion;
nombre poblacion
Australia 23613193
Canada 36155487
Espana 46438422
Francia 64590000
Alemania 81770900
Computacion Web (2017/18) Bases de datos relacionales y SQL 22
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 23: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/23.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 WHERE poblacion <400000004 ORDER BY poblacion;
nombre poblacion
Australia 23613193
Canada 36155487
Computacion Web (2017/18) Bases de datos relacionales y SQL 23
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 24: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/24.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 ORDER BY poblacion DESC4 LIMIT 2;
nombre poblacion
Alemania 81770900
Francia 64590000
Computacion Web (2017/18) Bases de datos relacionales y SQL 24
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 25: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/25.jpg)
La sentencia SELECT: ejemplos
1 SELECT nombre , poblacion2 FROM Paises3 ORDER BY poblacion DESC4 LIMIT 2 OFFSET 2;
nombre poblacion
Espana 46438422
Canada 36155487
Computacion Web (2017/18) Bases de datos relacionales y SQL 25
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 26: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/26.jpg)
Ejercicios practicos
I Practica 3:I Ejercicio 1.1I Ejercicio 1.2
Computacion Web (2017/18) Bases de datos relacionales y SQL 26
![Page 27: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/27.jpg)
Agregacion de datos: resultados unicos
I A veces no se desea obtener resultados duplicados en unaconsulta.
1 SELECT continente2 FROM Paises;
continente
1
1
1
2
3
Computacion Web (2017/18) Bases de datos relacionales y SQL 27
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 28: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/28.jpg)
Agregacion de datos: resultados unicos
I Si en los resultados de una consulta aparecen filas duplicadas,el modificador DISTINCT elimina todas excepto una.
1 SELECT DISTINCT continente2 FROM Paises;
continente
1
2
3
Computacion Web (2017/18) Bases de datos relacionales y SQL 28
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 29: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/29.jpg)
Agregacion de datos: sumas, medias, etc.
I Computo de agregaciones sobre las filas obtenidas: SUM,AVG, MIN, MAX.
1 SELECT SUM(superficie)2 FROM Paises3 WHERE continente =1;
SUM(superficie)
1506193
Computacion Web (2017/18) Bases de datos relacionales y SQL 29
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 30: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/30.jpg)
Cuenta del numero de resultados
I El operador COUNT modifica la consulta de tal forma quedevuelva el numero de filas seleccionadas.
1 SELECT COUNT (*)2 FROM Paises3 WHERE continente =1;
COUNT(*)
3
Computacion Web (2017/18) Bases de datos relacionales y SQL 30
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 31: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/31.jpg)
Cuenta del numero de resultados
I Tambien es posible contar valores sin tener en cuenta susrepeticiones.
1 SELECT COUNT(DISTINCT continente)2 FROM Paises;
COUNT(DISTINCT continente)
3
Computacion Web (2017/18) Bases de datos relacionales y SQL 31
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 32: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/32.jpg)
Agregacion de datos: agrupacion de filas
I GROUP BY permite hacer computos agregados (suma,media, etc.) sobre grupos de filas.
1 SELECT continente , SUM(superficie)2 FROM Paises3 GROUP BY continente;
continente SUM(superficie)
1 1506193
2 9984670
3 7692024
Computacion Web (2017/18) Bases de datos relacionales y SQL 32
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 33: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/33.jpg)
Agregacion de datos: agrupacion de filas
I HAVING filtra los grupos resultantes.
1 SELECT continente , SUM(superficie)2 FROM Paises3 GROUP BY continente4 HAVING SUM(superficie) >5000000;
continente SUM(superficie)
2 9984670
3 7692024
Computacion Web (2017/18) Bases de datos relacionales y SQL 33
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 34: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/34.jpg)
Agregacion de datos: agrupacion de filas
I Notese que con WHERE se seleccionan las filas que seranagrupadas, mientras que con HAVING, los grupos.
1 SELECT continente , SUM(superficie)2 FROM Paises3 WHERE poblacion <700000004 GROUP BY continente5 HAVING SUM(superficie) <9000000;
continente SUM(superficie)
1 1149171
3 7692024
Computacion Web (2017/18) Bases de datos relacionales y SQL 34
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 35: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/35.jpg)
Alias de columnas
I Se puede establecer el nombre que tomaran las columnasresultantes de una consulta.
1 SELECT2 continente ,3 SUM(superficie) AS superficie_agregada4 FROM Paises5 GROUP BY continente;
continente superficie agregada
1 1506193
2 9984670
3 7692024
Computacion Web (2017/18) Bases de datos relacionales y SQL 35
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 36: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/36.jpg)
Columnas calculadas
I Se pueden obtener columnas resultantes de realizar calculossobre los valores de otras columnas.
1 SELECT2 nombre ,3 poblacion/superficie AS densidad4 FROM Paises;
nombre densidad
Espana 91.88994598017294
Francia 100.3260324230624
Canada 3.6210998460640162
Alemania 229.0360257911277
Australia 3.0698283052678983
Computacion Web (2017/18) Bases de datos relacionales y SQL 36
id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
![Page 37: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/37.jpg)
Ejercicios practicos
I Practica 3:I Ejercicio 1.3
Computacion Web (2017/18) Bases de datos relacionales y SQL 37
![Page 38: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/38.jpg)
Parte III
Consultas sobre multiples tablas
Computacion Web (2017/18) Bases de datos relacionales y SQL 38
![Page 39: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/39.jpg)
Consultas sobre multiples tablas
I Es habitual que los datos a consultar esten distribuidos envarias tablas relacionadas entre sı. Por ejemplo:
I Obtener los pares nombre de paıs y nombre de capital.I Obtener la lista de paıses cuya capital tenga mas de 3 millones
de habitantes.
Computacion Web (2017/18) Bases de datos relacionales y SQL 39
![Page 40: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/40.jpg)
Ejemplo
Tabla “Paises”id nombre continente superficie poblacion capital
1 Espana 1 505370 46438422 1
2 Francia 1 643801 64590000 3
3 Canada 2 9984670 36155487 4
4 Alemania 1 357022 81770900 6
5 Australia 3 7692024 23613193 7
Tabla “Ciudades”id nombre superficie poblacion
1 Madrid 605.77 3141991
2 Barcelona 102.15 1604555
3 Parıs 105.40 2229621
4 Ottawa 2778.64 1083391
5 Nueva York 1214.00 8491079
6 Berlın 891.68 3469849
7 Canberra 814.2 381488
Computacion Web (2017/18) Bases de datos relacionales y SQL 40
![Page 41: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/41.jpg)
Consultas INNER JOIN
I El operador INNER JOIN permite unir dos tablas indicandobajo que criterio se deben emparejar las filas de una tabla conlas de la otra:
I Se forman todos los pares posibles de filas que cumplan elcriterio.
Computacion Web (2017/18) Bases de datos relacionales y SQL 41
![Page 42: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/42.jpg)
Ejemplo
1 SELECT *2 FROM Paises3 INNER JOIN Ciudades4 ON capital=Ciudades.id;
id nombre cont. sup. pob. cap. id nombre sup. pob.
1 Espana 1 505370 46438422 1 1 Madrid 605.77 31419912 Francia 1 643801 64590000 3 3 Parıs 105.40 22296213 Canada 2 9984670 36155487 4 4 Ottawa 2778.64 10833914 Alemania 1 357022 81770900 6 6 Berlın 891.68 34698495 Australia 3 7692024 23613193 7 7 Canberra 814.2 381488
Computacion Web (2017/18) Bases de datos relacionales y SQL 42
![Page 43: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/43.jpg)
Ejemplo
1 SELECT2 Paises.nombre , Ciudades.nombre3 FROM Paises4 INNER JOIN Ciudades5 ON capital=Ciudades.id;
nombre nombre
Espana Madrid
Francia Parıs
Canada Ottawa
Alemania Berlın
Australia Canberra
Computacion Web (2017/18) Bases de datos relacionales y SQL 43
![Page 44: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/44.jpg)
Ejemplo
1 SELECT2 Paises.nombre , Ciudades.nombre3 FROM Paises4 INNER JOIN Ciudades5 ON capital=Ciudades.id6 WHERE Ciudades.poblacion >3000000;
nombre nombre
Espana Madrid
Alemania Berlın
Computacion Web (2017/18) Bases de datos relacionales y SQL 44
![Page 45: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/45.jpg)
Alias de nombres de tablas
1 SELECT2 P.nombre , C.nombre3 FROM Paises AS P4 INNER JOIN Ciudades AS C5 ON capital=C.id6 WHERE C.poblacion >3000000;
nombre nombre
Espana Madrid
Alemania Berlın
Computacion Web (2017/18) Bases de datos relacionales y SQL 45
![Page 46: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/46.jpg)
Consultas INNER JOIN
I Las filas de cualquiera de las dos tablas que no cumplan elcriterio para ningun posible par no apareceran entre losresultados.
I Ejemplo: filas de Nueva York y Barcelona.
I Las filas de cualquiera de las dos tablas que cumplan elcriterio para varios pares apareceran varias veces entre losresultados, una por cada par.
Computacion Web (2017/18) Bases de datos relacionales y SQL 46
![Page 47: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/47.jpg)
Ejemplo
Tabla “Ciudades”id nombre superficie poblacion
1 Madrid 605.77 3141991
2 Barcelona 102.15 1604555
3 Parıs 105.40 2229621
4 Ottawa 2778.64 1083391
5 Nueva York 1214.00 8491079
6 Berlın 891.68 3469849
7 Canberra 814.2 381488
Tabla “Atracciones”id nombre ciudad
1 Estatua de la Libertad 5
2 Torre Eiffel 3
3 Empire State Building 5
4 Coliseo de Roma NULLComputacion Web (2017/18) Bases de datos relacionales y SQL 47
![Page 48: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/48.jpg)
Ejemplo
1 SELECT2 Atracciones.nombre , Ciudades.nombre3 FROM Atracciones4 INNER JOIN Ciudades5 ON ciudad=Ciudades.id;
nombre nombre
Estatua de la Libertad Nueva York
Torre Eiffel Parıs
Empire State Building Nueva York
Computacion Web (2017/18) Bases de datos relacionales y SQL 48
![Page 49: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/49.jpg)
Ejercicios practicos
I Practica 3:I Ejercicio 1.4
Computacion Web (2017/18) Bases de datos relacionales y SQL 49
![Page 50: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/50.jpg)
Consultas OUTER JOIN
I Se recuperan todas las filas de la tabla primaria aunque nocumplan el criterio con ninguna fila de la otra tabla.
I Tres tipos de OUTER JOIN:I LEFT JOIN: la tabla primaria es la especificada antes del
operador JOIN (a la izquierda).I RIGHT JOIN: la tabla primaria es la especificada tras el
operador JOIN (a la derecha).I FULL JOIN: ambas tablas son primarias (no disponible en
MySQL).
Computacion Web (2017/18) Bases de datos relacionales y SQL 50
![Page 51: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/51.jpg)
Ejemplo
1 SELECT2 Atracciones.nombre , Ciudades.nombre3 FROM Atracciones4 LEFT JOIN Ciudades5 ON ciudad=Ciudades.id;
nombre nombre
Estatua de la Libertad Nueva York
Torre Eiffel Parıs
Empire State Building Nueva York
Coliseo de Roma NULL
Computacion Web (2017/18) Bases de datos relacionales y SQL 51
![Page 52: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/52.jpg)
Ejemplo
1 SELECT2 Atracciones.nombre , Ciudades.nombre3 FROM Atracciones4 RIGHT JOIN Ciudades5 ON ciudad=Ciudades.id;
nombre nombre
NULL Madrid
NULL Barcelona
Torre Eiffel Parıs
NULL Ottawa
Estatua de la Libertad Nueva York
Empire State Building Nueva York
NULL Berlın
NULL Canberra
Computacion Web (2017/18) Bases de datos relacionales y SQL 52
![Page 53: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/53.jpg)
Ejemplo
1 SELECT2 Atracciones.nombre , Ciudades.nombre3 FROM Ciudades4 LEFT JOIN Atracciones5 ON ciudad=Ciudades.id;
nombre nombre
NULL Madrid
NULL Barcelona
Torre Eiffel Parıs
NULL Ottawa
Estatua de la Libertad Nueva York
Empire State Building Nueva York
NULL Berlın
NULL Canberra
Computacion Web (2017/18) Bases de datos relacionales y SQL 53
![Page 54: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/54.jpg)
Ejemplo (no disponible en MySQL)
1 SELECT2 Atracciones.nombre , Ciudades.nombre3 FROM Ciudades4 FULL JOIN Atracciones5 ON ciudad=Ciudades.id;
nombre nombre
Estatua de la Libertad Nueva York
Torre Eiffel Parıs
Empire State Building Nueva York
NULL Madrid
NULL Barcelona
NULL Ottawa
NULL Berlın
NULL Canberra
Coliseo de Roma NULL
Computacion Web (2017/18) Bases de datos relacionales y SQL 54
![Page 55: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/55.jpg)
Consultas self join
I Es posible unir una tabla consigo misma mediante el uso dealias de nombres de tablas:
I Se toman dos “copias” de la misma tabla, cada una con unalias que la diferencia de la otra.
I Es compatible con cualquier tipo de operador JOIN.
I Ejemplo:I Obtener todos los pares de monumentos que esten en la misma
ciudad.
Computacion Web (2017/18) Bases de datos relacionales y SQL 55
![Page 56: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/56.jpg)
Ejemplo
1 SELECT2 A.nombre , B.nombre3 FROM Atracciones AS A4 INNER JOIN Atracciones AS B5 ON A.ciudad=B.ciudad;
nombre nombre
Estatua de la Libertad Estatua de la Libertad
Empire State Building Estatua de la Libertad
Torre Eiffel Torre Eiffel
Estatua de la Libertad Empire State Building
Empire State Building Empire State Building
Computacion Web (2017/18) Bases de datos relacionales y SQL 56
![Page 57: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/57.jpg)
Ejemplo
1 SELECT2 A.nombre , B.nombre3 FROM Atracciones AS A4 INNER JOIN Atracciones AS B5 ON A.ciudad=B.ciudad6 WHERE A.id<B.id;
nombre nombre
Estatua de la Libertad Empire State Building
Computacion Web (2017/18) Bases de datos relacionales y SQL 57
![Page 58: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/58.jpg)
Parte IV
El lenguaje SQL: insercion y
modificacion de datos
Computacion Web (2017/18) Bases de datos relacionales y SQL 58
![Page 59: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/59.jpg)
Creacion de tablas
I Se crean tablas con CREATE TABLE.I Al crear una tabla, se especifican aspectos como:
I Nombre de la tabla.I Para cada columna:
I Nombre y tipo de datosI Valor por defectoI Si puede tomar valor NULL.I Si es un campo de auto-incremento.
I Claves primarias y ajenas.I Indices.
Computacion Web (2017/18) Bases de datos relacionales y SQL 59
![Page 60: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/60.jpg)
Ejemplo
1 CREATE TABLE Continentes (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 superficie DOUBLE NOT NULL ,5 poblacion LONG NOT NULL ,6 PRIMARY KEY(id)7 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 60
![Page 61: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/61.jpg)
Ejemplo
1 CREATE TABLE Ciudades (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 superficie DOUBLE NOT NULL ,5 poblacion LONG NOT NULL ,6 PRIMARY KEY(id)7 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 61
![Page 62: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/62.jpg)
Ejemplo
1 CREATE TABLE Paises (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 continente INT NOT NULL ,5 superficie DOUBLE NOT NULL ,6 poblacion LONG NOT NULL ,7 capital INT NOT NULL ,8 PRIMARY KEY(id),9 CONSTRAINT FOREIGN KEY (continente)
10 REFERENCES Continentes(id),11 CONSTRAINT FOREIGN KEY (capital)12 REFERENCES Ciudades(id)13 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 62
![Page 63: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/63.jpg)
Ejemplo
1 CREATE TABLE AreasGeograficas (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 tipo ENUM('continente ', 'pais',5 'region ', 'ciudad ') NOT NULL ,6 area DOUBLE NOT NULL ,7 habitantes LONG NOT NULL ,8 PRIMARY KEY(id)9 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 63
![Page 64: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/64.jpg)
Tipos de datos
I Las columnas tienen un tipo de datos asociado.I Principales grupos de tipos de datos:
I Numericos.I Cadenas.I Fechas / horas.
I Los tipos de datos concretos varıan segun el gestor de basesde datos.
I Valor especial NULL: ausencia de valor.
Computacion Web (2017/18) Bases de datos relacionales y SQL 64
![Page 65: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/65.jpg)
Tipos de datos numericos en MySQL
I Bits: BIT (p.e. cuatro bits: BIT(4)).I Enteros con signo (opcional UNSIGNED):
I 1 byte: TINYINT / BOOL / BOOLEAN.I 2 bytes: SMALLINT.I 3 bytes: MEDIUMINT.I 4 bytes: INT / INTEGER.I 8 bytes: BIGINT.
I Punto flotante:I 4 bytes (precision aprox. 7 decimales): FLOAT.I 8 bytes (precision aprox. 15 decimales): DOUBLE.
I Punto fijo: DECIMAL / NUMERICI P.e. DECIMAL(6, 2) representa 6 dıgitos, de los cuales 2 son
decimales.
Computacion Web (2017/18) Bases de datos relacionales y SQL 65
![Page 66: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/66.jpg)
Tipos de datos de cadenas
I Cadenas de caracteres:I Tamano fijo: CHAR (p.e. CHAR(8)).I Tamano variable: VARCHAR (p.e. VARCHAR(255)).I Tamano grande: TEXT.
I Cadenas de bytes:I Tamano fijo: BINARY (p.e. BINARY(8)).I Tamano variable: VARBINARY (p.e. VARBINARY(255)).I Tamano grande: BLOB.
I Enumerados: ENUMI P.e.: ENUM('profesor', 'alumno', 'administrativo').
I Conjuntos: SETI P.e.: SET('rojo', 'verde', 'azul').
Computacion Web (2017/18) Bases de datos relacionales y SQL 66
![Page 67: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/67.jpg)
Tipos de datos de fechas y horas en MySQL
I Fecha: DATE.
I Fecha y hora (con minutos y segundos, sin zona horaria):DATETIME.
I Hora: TIME.
I Ano: YEAR (para ano con dos dıgitos, YEAR(2)).I Sello temporal (numero de segundos desde 1-1-1970:
TIMESTAMP.I Por defecto, la primera columna de tipo TIMESTAMP se
actualiza automaticamente con INSERT y UPDATE, salvo que sele asigne un valor o se especifique lo contrario.
Computacion Web (2017/18) Bases de datos relacionales y SQL 67
![Page 68: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/68.jpg)
Otras acciones de gestion de tablas
I Mostrar todas las tablas de una base de datos: SHOW TABLES
I Mostrar la estructura de una tabla: DESCRIBE<nombre de tabla>
I Eliminar una tabla: DROP TABLE <nombre de tabla>;
I Anadir, modificar o eliminar columnas en una tabla: ALTERTABLE ...
Computacion Web (2017/18) Bases de datos relacionales y SQL 68
![Page 69: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/69.jpg)
Insercion de filas en tablas
I Se insertan filas nuevas en tablas mediante INSERT INTO:I Se puede insertar una o mas filas en una unica sentencia.I Se puede especificar que columnas se proporcionan y en que
orden (por defecto, se deben proporcionar todas y en el mismoorden en que se definieron al crear la tabla).
1 INSERT INTO <tabla >2 (<columna_1 >, <columna_2 >, <columna_3 >)3 VALUES4 (<valores_fila_1 >),5 (<valores_fila_2 >)
Computacion Web (2017/18) Bases de datos relacionales y SQL 69
![Page 70: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/70.jpg)
Ejemplo
1 INSERT INTO Continentes2 VALUES3 (4, 'Asia', 44579000.0 , 4164252000);
Computacion Web (2017/18) Bases de datos relacionales y SQL 70
![Page 71: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/71.jpg)
Columnas para las que no se proporciona valor
I Se puede omitir el valor de algunas columnas:I Columnas autoincrementales:
I Reciben automaticamente un valor numerico unico que seincrementa a medida que se insertan filas en la tabla.
I Se suelen utilizar como clave primaria.
I Otros tipos de columnas:I Reciben el valor por defecto definido para dicha columna, o
NULL si no se ha definido dicho valor.
Computacion Web (2017/18) Bases de datos relacionales y SQL 71
![Page 72: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/72.jpg)
Ejemplo
1 INSERT INTO Continentes2 (nombre , superficie , poblacion)3 VALUES4 ('Africa ', 30370000 , 1100000000) ,5 ('Ant a rtida', 14000000 , 135);
Computacion Web (2017/18) Bases de datos relacionales y SQL 72
![Page 73: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/73.jpg)
Insercion de los resultados de una consulta
I Se puede insertar filas resultantes de una consulta SELECT.
1 INSERT INTO Ciudades2 (nombre , superficie , poblacion)3 SELECT4 nombre , area , habitantes5 FROM AreasGeograficas6 WHERE tipo='ciudad ';
Computacion Web (2017/18) Bases de datos relacionales y SQL 73
![Page 74: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/74.jpg)
Insercion de los resultados de una consulta
I Tambien es posible insertar el resultado de una consulta enuna columna concreta.
1 INSERT INTO Paises2 (nombre , capital , continente , superficie ,
poblacion)3 VALUES4 ('Italia ',5 (SELECT id6 FROM Ciudades7 WHERE nombre='Roma'),8 (SELECT id9 FROM Continentes
10 WHERE nombre='Europa '),11 301340.0 ,12 6060000013 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 74
![Page 75: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/75.jpg)
Ejercicios practicos
I Practica 4:I Ejercicio 1.1I Ejercicio 1.2
Computacion Web (2017/18) Bases de datos relacionales y SQL 75
![Page 76: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/76.jpg)
Eliminacion de filas
I Se eliminan filas en una tabla mediante la sentencia DELETE.I Se indica el nombre de la tabla y la condicion que deben
cumplir las filas a eliminar:I Si no se indica condicion, se eliminan todas las filas de la tabla.
1 DELETE2 FROM <tabla >3 WHERE <condici on>
Computacion Web (2017/18) Bases de datos relacionales y SQL 76
![Page 77: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/77.jpg)
Ejemplo
1 DELETE2 FROM Paises3 WHERE poblacion <4000000;
Computacion Web (2017/18) Bases de datos relacionales y SQL 77
![Page 78: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/78.jpg)
Actualizacion de datos
I Se actualizan valores mediante la sentencia UPDATE.
I Se indica que columnas se desea cambiar y su nuevo valor. Elresto de columnas mantendran su valor.
I Con la clausula WHERE se indica que filas se modifican (todassi se omite esta clausula).
1 UPDATE <table >2 SET <Columna_1 > = <Expressi on_1 >,3 <Columna_2 > = <Expressi on_2 >4 WHERE <condici on>
Computacion Web (2017/18) Bases de datos relacionales y SQL 78
![Page 79: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/79.jpg)
Ejemplo
1 UPDATE Paises2 SET3 poblacion =46438500 ,4 superficie =5053715 WHERE id=1;
Computacion Web (2017/18) Bases de datos relacionales y SQL 79
![Page 80: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/80.jpg)
Ejemplo
1 UPDATE Paises2 SET3 poblacion=poblacion -14 WHERE continente =1;
Computacion Web (2017/18) Bases de datos relacionales y SQL 80
![Page 81: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/81.jpg)
Ejemplo
1 UPDATE Paises2 SET3 poblacion=4 (SELECT habitantes5 FROM AreasGeograficas6 WHERE Paises.nombre=AreasGeograficas.nombre)7 WHERE EXISTS8 (SELECT *9 FROM AreasGeograficas
10 WHERE Paises.nombre=AreasGeograficas.nombre);
Computacion Web (2017/18) Bases de datos relacionales y SQL 81
![Page 82: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/82.jpg)
Parte V
Consistencia de datos
Computacion Web (2017/18) Bases de datos relacionales y SQL 82
![Page 83: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/83.jpg)
Consistencia en las claves ajenas
I Una clave ajena debe corresponderse con una clave primariaque exista en la tabla a la que dicha clave ajena hacereferencia.
I Ejemplo: si continente=2 en la fila con id=3 en la tablaPaises, en la tabla Continentes debe existir una fila conid=2.
I De lo contrario, la base de datos esta en un estadoinconsistente.
I La columna de clave ajena puede admitir valor NULL si seestablece ası al crear la tabla. Esto no supondrıa unainconsistencia.
Computacion Web (2017/18) Bases de datos relacionales y SQL 83
![Page 84: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/84.jpg)
Consistencia en las claves ajenas
I Existe el riesgo de introducir inconsistencias en claves ajenascuando:
I Se inserta una nueva fila:I Ejemplo: se inserta una fila en Paises con continente=27,
pero no existe esta fila en Continentes.
I Se elimina una fila:I Ejemplo: se elimina la fila con id=1 en Continentes, pero se
mantienen filas con continente=1 en Paises.
I Se modifica una columna en una fila:I Ejemplo: se establece el valor continente=27 en una fila de
Paises, pero no existe esta fila en Continentes.I Ejemplo: se modifica id de 1 a 7 en una fila de Continentes,
pero se mantienen filas con continente=1 en Paises.
Computacion Web (2017/18) Bases de datos relacionales y SQL 84
![Page 85: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/85.jpg)
Ejemplo
1 DELETE FROM Continentes WHERE id=1;23 INSERT INTO Paises4 (nombre , continente , capital ,5 superficie , poblacion)6 VALUES7 ('Estados Unidos ', 27, 5, 0.0, 0);89 UPDATE Paises SET continente =27 WHERE id=1;
1011 UPDATE Continentes SET id=7 WHERE id=1;
Computacion Web (2017/18) Bases de datos relacionales y SQL 85
![Page 86: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/86.jpg)
Consistencia en las claves ajenas
I El gestor de bases de datos puede detectar sentencias queintroducirıan inconsistencias y evitarlo.
I Para cada clave ajena se puede configurar el comportamientodeseado en estas situaciones:
I No ejecutar la sentencia y notificar el error (RESTRICT o NO
ACTION). Es la opcion por defecto.I Establecer valor NULL en la clave ajena afectada si esta lo
permite (SET NULL).I Propagar el cambio a la clave ajena (CASCADE):
I Ejemplo: si se elimina la fila con id=1 en Continentes, seeliminan automaticamente todas las filas con continente=1en Paises.
I Ejemplo: si se modifica id de 1 a 7 en una fila deContinentes, se cambia continente de 1 a 7 en todas lasfilas afectadas de Paises.
I Establecer el valor por defecto de la clave ajena (SETDEFAULT).
Computacion Web (2017/18) Bases de datos relacionales y SQL 86
![Page 87: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/87.jpg)
Ejemplo
1 CREATE TABLE Paises (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 continente INT NOT NULL ,5 superficie DOUBLE NOT NULL ,6 poblacion LONG NOT NULL ,7 capital INT NOT NULL ,8 PRIMARY KEY(id),9 CONSTRAINT FOREIGN KEY (continente)
10 REFERENCES Continentes(id)11 ON UPDATE CASCADE12 ON DELETE SET NULL ,13 CONSTRAINT FOREIGN KEY (capital)14 REFERENCES Ciudades(id)15 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 87
![Page 88: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/88.jpg)
Tipos de tablas en MySQL
I En MySQL hay varios tipos de tablas que difieren en como sealmacena la informacion y que funcionalidad ofrecen:
I MyISAM: no transaccional, sin integridad referencial.I BerkeleyDB: transaccional, sin integridad referencial.I InnoDB: transaccional, con integridad referencial (por defecto
desde Mysql 5.5).I Otros: http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html
I Se puede establecer el tipo de tabla en el comando que la crea.
Computacion Web (2017/18) Bases de datos relacionales y SQL 88
![Page 89: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/89.jpg)
Ejemplo
1 CREATE TABLE Paises (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 continente INT NOT NULL ,5 superficie DOUBLE NOT NULL ,6 poblacion LONG NOT NULL ,7 capital INT NOT NULL ,8 PRIMARY KEY(id),9 CONSTRAINT FOREIGN KEY (continente)
10 REFERENCES Continentes(id)11 ON UPDATE CASCADE12 ON DELETE SET NULL ,13 CONSTRAINT FOREIGN KEY (capital)14 REFERENCES Ciudades(id)15 ) ENGINE=INNODB;
Computacion Web (2017/18) Bases de datos relacionales y SQL 89
![Page 90: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/90.jpg)
Parte VI
Indices
Computacion Web (2017/18) Bases de datos relacionales y SQL 90
![Page 91: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/91.jpg)
Indices
I Los ındices consisten en estructuras de datos adicionales cuyoobjeto es agilizar la ejecucion de determinadas busquedas dedatos en una tabla.
I Ventajas:I Localizacion mas rapida de datos en la tabla en acceso
aleatorio.I Acceso a datos en orden de forma mas rapida.
I Desventajas:I Coste adicional en la insercion/modificacion de datos.I Necesidad de mas espacio de almacenamiento.
I Para la clave primaria se construye implıcitamente un ındice.
Computacion Web (2017/18) Bases de datos relacionales y SQL 91
![Page 92: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/92.jpg)
Creacion de ındices
1 -- Crear un ı ndice en una tabla existente2 CREATE [UNIQUE] INDEX <nombre_de_ ındice >3 ON <nombre_de_tabla > (<col_1 >, <col_2 >,...);45 -- Crear un ı ndice al mismo tiempo que la tabla:6 CREATE TABLE <nombre_de_tabla > (7 (...)8 [UNIQUE] INDEX [<nombre_de_ ındice >]9 (<col_1 >, <col_2 > ,...)
10 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 92
![Page 93: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/93.jpg)
Ejemplo
1 CREATE INDEX idx_ciudades_nombre2 ON Ciudades (nombre);
Computacion Web (2017/18) Bases de datos relacionales y SQL 93
![Page 94: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/94.jpg)
Ejemplo
1 CREATE TABLE Ciudades (2 id INT NOT NULL auto_increment ,3 nombre VARCHAR (255) NOT NULL ,4 superficie DOUBLE NOT NULL ,5 poblacion LONG NOT NULL ,6 PRIMARY KEY(id),7 INDEX (nombre)8 );
Computacion Web (2017/18) Bases de datos relacionales y SQL 94
![Page 95: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/95.jpg)
Ejercicios practicos
I Practica 4:I Ejercicio 2
Computacion Web (2017/18) Bases de datos relacionales y SQL 95
![Page 96: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/96.jpg)
Parte VII
Transacciones en SQL
Computacion Web (2017/18) Bases de datos relacionales y SQL 96
![Page 97: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/97.jpg)
Transacciones en SQL
I El gestor de bases de datos puede recibir sentencias desdevarias conexiones concurrentes.
I Una transaccion es una secuencia de sentencias SQL quedeben ser tratadas como una unidad.
I Deben cumplirse los principios ACID:I Atomicidad.I Consistencia.I Aislamiento.I Durabilidad.
Computacion Web (2017/18) Bases de datos relacionales y SQL 97
![Page 98: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/98.jpg)
Transacciones en SQL
I Atomicidad:I O se ejecutan con exito todas las sentencias de la transaccion,
o la base de datos debe volver al estado previo al inicio de latransaccion.
I Consistencia:I Una vez finalizada la transaccion, la base de datos debe estar
en un estado consistente (se deben cumplir todas lasrestricciones de consistencia de los datos).
Computacion Web (2017/18) Bases de datos relacionales y SQL 98
![Page 99: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/99.jpg)
Transacciones en SQL
I Aislamiento:I Durante la ejecucion de una transaccion, sus cambios no
pueden ser visibles para el resto de transacciones.
I Durabilidad:I Una vez finaliza una transaccion con exito, se debe garantizar
que los cambios perduren incluso antes situaciones de fallo enel sistema.
Computacion Web (2017/18) Bases de datos relacionales y SQL 99
![Page 100: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/100.jpg)
Transacciones en SQL
I Normalmente, cada sentencia SQL individual se ejecuta comouna transaccion separada.
I Se puede deshabilitar de forma temporal para realizar solo unatransaccion con varias sentencias mediante START
TRANSACTIONI Se puede deshabilitar en la sesion actual mediante SET
AUTOCOMMIT=0
I Para finalizar la transaccion:I Cancelandola: ROLLBACKI Confirmandola: COMMIT
Computacion Web (2017/18) Bases de datos relacionales y SQL 100
![Page 101: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/101.jpg)
Cerrojos en filas de tablas
I Los gestores de bases de datos relacionales suelen utilizarcerrojos para controlar el acceso concurrente a tablas.
I Principalmente, se usan dos tipos de cerrojos:I Cerrojos S (shared)I Cerrojos X (exclusive)
Computacion Web (2017/18) Bases de datos relacionales y SQL 101
![Page 102: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/102.jpg)
Cerrojos en filas de tablas
I La adquisicion de un cerrojo S es compatible con otroscerrojos S sobre la misma fila.
I La adquisicion de un cerrojo X no es compatible con ningunotro cerrojo sobre la misma fila.
I El intento de adquisicion de un cerrojo bloquea la operacionhasta que sea posible. Si hay interbloqueo con otratransaccion, la sentencia falla.
Computacion Web (2017/18) Bases de datos relacionales y SQL 102
![Page 103: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/103.jpg)
Cerrojos en filas de tablas
I En modificaciones y eliminaciones se adquiere Xautomaticamente, hasta el final de la transaccion.
I Las lecturas se pueden realizar de tres formas:I Consistent read: no se adquiere cerrojo (por defecto).I Adquisicion de S: SELECT ... LOCK IN SHARE MODE.I Adquisicion de X: SELECT ... FOR UPDATE.
Computacion Web (2017/18) Bases de datos relacionales y SQL 103
![Page 104: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/104.jpg)
Niveles de aislamiento
I En SQL se puede configurar el nivel de aislamiento entretransacciones concurrentes:
I READ UNCOMMITTEDI READ COMMITTEDI REPEATABLE READ (por defecto)I SERIALIZABLE
I Niveles mayores implican mayor proteccion en transaccionesconcurrentes pero peor rendimiento.
Computacion Web (2017/18) Bases de datos relacionales y SQL 104
![Page 105: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/105.jpg)
Niveles de aislamiento
1 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;2 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;3 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;4 SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE ;
Computacion Web (2017/18) Bases de datos relacionales y SQL 105
![Page 106: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/106.jpg)
Referencias
I The Language of SQL, Second Edition, Larry Rockoff. CourseTechnology PTR (2016).
I Accesible en Safari:http://proquest.safaribooksonline.com/book/databases/sql/9780134658346
Computacion Web (2017/18) Bases de datos relacionales y SQL 106
![Page 107: Bases de datos relacionales y SQL - it.uc3m.es · PDF fileBases de datos relacionales I Colecci on de datos almacenados en una o m as tablas. I Las tablas constan de las y columnas](https://reader031.vdocuments.site/reader031/viewer/2022020204/5a7b87567f8b9a72118bfbba/html5/thumbnails/107.jpg)
Referencias
I MySQL Transactional and Locking Statements:I http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-transactions.html
I The InnoDB Transaction Model and Locking:I http://dev.mysql.com/doc/refman/5.5/en/innodb-transaction-model.html
Computacion Web (2017/18) Bases de datos relacionales y SQL 107