Post on 10-May-2020
transcript
Edited
with
em
acs
+LA
T EX
+pro
sper
Bases de Datos (I)
Computación Web (Curso 2015/2016)
Jesus Arias Fisteus // jaf@it.uc3m.es
Bases de Datos (I)– p. 1
Edited
with
em
acs
+LA
T EX
+pro
sper
Bases de datos relacionales
Colección de datos almacenados en una o mástablas.
Las tablas constan de filas y columnas.
Las tablas pueden estar relacionadas entre sí.
Bases de Datos (I)– p. 2
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplo
CustomerID FirstName LastName
1 William Smith
2 Natalie Lopez
3 Brenda Harper
OrderID CustomerID OrderAmount
1 1 50.00
2 1 60.00
3 2 33.50
4 3 20.00
Bases de Datos (I)– p. 3
Edited
with
em
acs
+LA
T EX
+pro
sper
Sistema gestor de bases de datos rela-
cionales
Programa que da soporte al uso de bases dedatos relacionales.
Ejemplos: Oracle Database, Microsoft SQL Server,IBM DB2, IBM Informix, MySQL, PostgreSQL,SQLite, Derby, etc.
Bases de Datos (I)– p. 4
Edited
with
em
acs
+LA
T EX
+pro
sper
El lenguaje SQL
SQL es un lenguaje estándar para utilizar ymantener bases de datos relacionales.
Utilizado en los principales gestores de bases dedatos relacionales:
Aunque hay pequeñas variacionesdependiendo del gestor.
Bases de Datos (I)– p. 5
Edited
with
em
acs
+LA
T EX
+pro
sper
El lenguaje SQL
Bases de Datos (I)– p. 6
Edited
with
em
acs
+LA
T EX
+pro
sper
Tipos de datos
Las columnas tienen un tipo de datos asociado.
Principales grupos de tipos de datos:
Numéricos.
Cadenas.
Fechas / horas.
Los tipos de datos concretos varían según elgestor de bases de datos.
Valor especial NULL: ausencia de valor.
Bases de Datos (I)– p. 7
Edited
with
em
acs
+LA
T EX
+pro
sper
Tipos de datos en MySQL
Numéricos: INTEGER, SMALLINT, BIGINT, BIT,DECIMAL, NUMERIC, FLOAT, DOUBLE, etc.
Cadenas: CHAR, VARCHAR, TEXT, BINARY,VARBINARY, BLOB, ENUM, SET.
Fechas / horas: DATE, DATETIME, TIMESTAMP,TIME, YEAR.
Bases de Datos (I)– p. 8
Edited
with
em
acs
+LA
T EX
+pro
sper
Recuperación de datos
Sentencia SELECT.
1 SELECT <columnas>
2 FROM <tabla>
3 WHERE <condición>;
Bases de Datos (I)– p. 9
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT *2 FROM Customers;
3
4 SELECT FirstName, LastName
5 FROM Customers;
Bases de Datos (I)– p. 10
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT FirstName, LastName
2 FROM Customers
3 WHERE LastName = 'Harper ';
4
5 SELECT *6 FROM Orders
7 WHERE CustomerID = 1;
Bases de Datos (I)– p. 11
Edited
with
em
acs
+LA
T EX
+pro
sper
Lógica Booleana
Operadores Booleanos: AND, OR, NOT.
Expresiones de comparación: =, <>, <, >, <=, >=,BETWEEN.
Otros operadores: IN, IS NULL, IS NOT NULL.
Bases de Datos (I)– p. 12
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT *2 FROM Orders
3 WHERE OrderAmount >= 50.0;
4
5 SELECT *6 FROM Orders
7 WHERE OrderAmount >= 50.0 AND CustomerID = 1;
8
9 SELECT *10 FROM Orders
11 WHERE OrderAmount >= 50.0
12 OR (OrderAmount >= 20.0 AND CustomerID = 1);
Bases de Datos (I)– p. 13
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT *2 FROM Orders
3 WHERE OrderAmount BETWEEN 50.00 AND 70.00;
4
5 SELECT *6 FROM Customers
7 WHERE State IN ( 'IL ', 'NY ');
Bases de Datos (I)– p. 14
Edited
with
em
acs
+LA
T EX
+pro
sper
Ordenación y restricción del número
de resultados
Ordenación:
ORDER BY <Columnas>.
Sentido de ordenación: ASC (por defecto),DESC.
Restricción del número de resultados:
Palabra clave LIMIT.
Palabra clave OFFSET para seleccionar elrango.
Bases de Datos (I)– p. 15
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT *2 FROM Orders
3 WHERE OrderAmount > 10.0
4 ORDER BY OrderAmount;
5
6 SELECT *7 FROM Orders
8 WHERE OrderAmount > 10.0
9 ORDER BY OrderAmount DESC;
10
11 SELECT *12 FROM Customers
13 ORDER BY LastName, Name;
Bases de Datos (I)– p. 16
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT *2 FROM Orders
3 WHERE OrderAmount > 10.0
4 ORDER BY OrderAmount DESC
5 LIMIT 10;
6
7 SELECT *8 FROM Customers
9 ORDER BY LastName, Name
10 LIMIT 10 OFFSET 20;
Bases de Datos (I)– p. 17
Edited
with
em
acs
+LA
T EX
+pro
sper
Agregación de datos: datos únicos
DISTINCT permite eliminar resultados duplicados.
1 SELECT
2 DISTINCT
3 Artist
4 FROM SongTitles;
Bases de Datos (I)– p. 18
Edited
with
em
acs
+LA
T EX
+pro
sper
Agregación de datos: sumas, medias,
etc.
Cómputo sobre las filas obtenidas: SUM, AVG,MIN, MAX.
1 SELECT
2 SUM(Fee) AS 'Total Gym Fees '
3 FROM Fees
4 WHERE FeeType = 'Gym ';
Bases de Datos (I)– p. 19
Edited
with
em
acs
+LA
T EX
+pro
sper
Cuenta del número de resultados
COUNT permite contar el número de resultadosde la consulta.
1 SELECT
2 COUNT(*) AS 'Count of Homework Rows '
3 FROM Grades
4 WHERE GradeType = 'Homework ';
5
6 SELECT
7 COUNT(DISTINCT FeeType) AS 'Number of Fee Types '
8 FROM Fees;
Bases de Datos (I)– p. 20
Edited
with
em
acs
+LA
T EX
+pro
sper
Agregación de datos: agrupación
GROUP BY permite hacer cómputos (suma,media, etc.) sobre grupos de resultados.
1 SELECT2 GradeType AS 'Grade Type ',3 AVG(Grade) AS 'Average Grade '
4 FROM Grades5 GROUP BY GradeType;6
7 SELECT8 GradeType AS 'Grade Type ',9 Student AS 'Student ',
10 AVG(Grade) AS 'Average Grade '
11 FROM Grades12 GROUP BY GradeType, Student13 ORDER BY GradeType, Student;
Bases de Datos (I)– p. 21
Edited
with
em
acs
+LA
T EX
+pro
sper
Agregación de datos: filtrado de gru-
pos
HAVING permite seleccionar grupos que cumplanciertos requisitos.
1 SELECT
2 Student AS 'Student ',
3 AVG(Grade) AS 'Average Quiz Grade '
4 FROM Grades
5 WHERE GradeType = 'Quiz '
6 GROUP BY Student
7 HAVING AVG(Grade) >= 70
8 ORDER BY Student;
Bases de Datos (I)– p. 22
Edited
with
em
acs
+LA
T EX
+pro
sper
Claves primarias y foráneas
Claves primarias: identifican unívocamente unafila de una tabla.
Garantizan que sólo una fila de la tabla puedatener una clave primaria dada.
Pueden estar formadas por una o máscolumnas.
Claves foráneas: referencias a la clave primaria defilas de otras tablas.
En combinación con las claves primarias,permiten relacionar datos de distintas tablasentre sí.
Bases de Datos (I)– p. 23
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
CustomerID FirstName LastName
1 William Smith
2 Natalie Lopez
3 Brenda Harper
4 Adam Petrie
OrderID CustomerID Quantity OrderAmount
1 1 4 50.00
2 2 10 60.00
3 2 12 33.50
4 3 5 20.00
Bases de Datos (I)– p. 24
Edited
with
em
acs
+LA
T EX
+pro
sper
Consultas en múltiples tablas (INNER
JOIN)
Con INNER JOIN se puede realizar consultassobre datos de varias tablas.
1 SELECT *2 FROM Customers
3 INNER JOIN Orders
4 ON Customers.CustomerID = Orders.CustomerID;
Bases de Datos (I)– p. 25
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplo
1 SELECT *2 FROM Customers
3 INNER JOIN Orders
4 ON Customers.CustomerID = Orders.CustomerID;
Customer First Last Order Customer Quantity OrderAmount
ID Name Name ID ID
1 William Smith 1 1 4 50.00
2 Natalie Lopez 2 2 10 60.00
2 Natalie Lopez 3 2 12 33.50
3 Brenda Harper 4 3 5 20.00
Bases de Datos (I)– p. 26
Edited
with
em
acs
+LA
T EX
+pro
sper
Consulta equivalente a INNER JOIN
Las siguientes dos consultas son equivalentes:
1 SELECT *2 FROM Customers
3 INNER JOIN Orders
4 ON Customers.CustomerID = Orders.CustomerID;
5
6 SELECT *7 FROM Customers, Orders
8 WHERE Customers.CustomerID = Orders.CustomerID;
Bases de Datos (I)– p. 27
Edited
with
em
acs
+LA
T EX
+pro
sper
Ejemplos
1 SELECT FirstName, LastName, Quantity, PricePerItem
2 FROM Customers
3 INNER JOIN Orders
4 ON Customers.CustomerID = Orders.CustomerID;
First Last Quantity Price
Name Name PerItem
William Smith 4 2.50
Natalie Lopez 10 1.25
Natalie Lopez 12 1.50
Brenda Harper 5 4.00
Bases de Datos (I)– p. 28
Edited
with
em
acs
+LA
T EX
+pro
sper
Alias de nombres
1 SELECT Customers.LastName
2 FROM Customers
3 INNER JOIN Orders
4 ON Customers.CustomerID = Orders.CustomerID;
5
6 SELECT C.LastName AS 'Last Name '
7 FROM Customers AS C
8 INNER JOIN Orders AS O
9 ON C.CustomerID = O.CustomerID;
Bases de Datos (I)– p. 29
Edited
with
em
acs
+LA
T EX
+pro
sper
Columnas calculadas
1 SELECT
2 LastName AS 'Last Name ',
3 PricePerItem * Quantity AS 'Total Price '
4 FROM Customers
5 INNER JOIN Orders
6 ON Orders.CustomerID = Customers.CustomerID;
Last Name Total Price
Smith 10
Lopez 12.5
Lopez 18
Harper 20
Bases de Datos (I)– p. 30
Edited
with
em
acs
+LA
T EX
+pro
sper
Referencias
The Language of SQL, Larry Rockoff. CourseTechnology PTR (2010).
Accesible en Safari: http://proquest.
safaribooksonline.com/book/databases/sql/9781435457515
Capítulos: 1, 2, 5, 7, 8, 10, 11.
Gran parte de los ejemplos de estastransparencias proceden de este libro.
Bases de Datos (I)– p. 31