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

Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

Edited

with

em

acs

+LA

T EX

+pro

sper

Bases de Datos (I)

Computación Web (Curso 2015/2016)

Jesus Arias Fisteus // [email protected]

Bases de Datos (I)– p. 1

Page 2: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 3: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 4: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 5: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 6: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

Edited

with

em

acs

+LA

T EX

+pro

sper

El lenguaje SQL

Bases de Datos (I)– p. 6

Page 7: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 8: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 9: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 10: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 11: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 12: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 13: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 14: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 15: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 16: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 17: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 18: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 19: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 20: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 21: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 22: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 23: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 24: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 25: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 26: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 27: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 28: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 29: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 30: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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

Page 31: Bases de Datos (I) Computación Web (Curso 2015/2016) · Bases de Datos (I) Computación Web (Curso 2015/2016) ... Las tablas constan de filas y columnas. Las tablas pueden estar

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