Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Transparencias SQL, Apuntes de Ingeniería Infórmatica

Asignatura: Estructura de Datos de la Información I, Profesor: , Carrera: Ingeniería Informática, Universidad: UAM

Tipo: Apuntes

2013/2014

Subido el 07/05/2014

jesus101077
jesus101077 🇪🇸

1 documento

1 / 35

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Temario
Introducción y fundamentos
Introducción a SQL
Modelo Entidad / Relación
Modelo relacional
Diseño relacional: formas normales
Consultas
Cálculo relacional
Álgebra relacional
Implementación de bases de datos
Estructura física: campos y registros
Indexación
Índices simples
Árboles B
Hashing
Compresión
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Vista previa parcial del texto

¡Descarga Transparencias SQL y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

Temario

 Introducción y fundamentos  Introducción a SQL  Modelo Entidad / Relación  Modelo relacional  Diseño relacional: formas normales  Consultas

  • Cálculo relacional
  • Álgebra relacional  Implementación de bases de datos
  • Estructura física: campos y registros
  • Indexación
  • Índices simples
  • Árboles B
  • Hashing
  • Compresión

Structured Query Language – SQL

 Lenguaje de “programación” para SGBDs

  • Data definition language: creación del modelo de datos (diseño de tablas)
  • Data manipulation language: inserción, modificación, eliminación de datos
  • Data query language: consultas  Se ejecuta sobre un SGBD  El estándar más utilizado
  • Creado en 1974 (D. D. Chamberlin & R. F. Boyce, IBM)
  • ANSI en 1986, ISO en 1987
  • Core (todos los SGBD) + packages (módulos opcionales)  Versiones
  • SQL1 – SQL 86
  • SQL2 – SQL 92, SQL 99
  • SQL3 – no plenamente soportado por la industria  Limitaciones
  • No es puramente relacional (p.e. las vistas son multiconjuntos de tuplas)
  • Importantes divergencias entre implementaciones (no es directamente portable en general, incompletitudes, extensiones) – uno termina aprendiendo variantes de SQL

Estructura léxica del lenguaje

Operaciones SQL  DDL – Creación, diseño, eliminación de tablas  DML – Inserción, modificación, eliminación de registros  DQL – Consulta Estructura léxica de SQL  Case-insensitive, insignificant whitespace  Sentencias, expresiones, valores, tipos de datos  Referencias

  • Elmasri cap. 8
  • PostgreSQL SQL ref: http://www.postgresql.org/docs/9.1/static/sql.html

Motivación

Base de datos de músicos, canciones, usuarios, escuchas, red social Ejemplos de consultas Canciones de los años 60 (mostrar título y género) Conjunto de nacionalidades de los artistas cubiertas en la BD Canciones de artistas del Reino Unido Título de las canciones escuchadas por un usuario Todos los contactos de un usuario dado Usuarios que se llaman igual Usuarios a distancia 2 de un usuario dado en la red social Contactos comunes a dos usuarios Cuántas veces ha sido escuchada una canción Artistas por orden de más a menos escuchados Usuarios con más de dos contactos Usuarios ordenados por nº de contactos Usuario con más contactos

Data definition

CREATE TABLE nombre ( campo1 tipo1 [ restricciones1 ], campo2 tipo2 [ restricciones2 ], …, [ restricciones ] );

ALTER TABLE nombre ADD COLUMN campo tipo [ restricciones ]; ALTER TABLE nombre ADD restricción ; ALTER TABLE nombre DROP COLUMN campo ;

DROP TABLE nombre ; DROP CONSTRAINT nombre-restricción ;

Ejemplo

CREATE TABLE Artista ( id int PRIMARY KEY, nombre text NOT NULL, nacionalidad text ); CREATE TABLE Cancion ( id int PRIMARY KEY, titulo text NOT NULL, genero text, duracion int, fecha date, autor int NOT NULL REFERENCES Artista (id) );

CREATE TABLE Escucha ( usuario varchar(30), cancion int REFERENCES Cancion (id), instante timestamp, PRIMARY KEY (usuario,cancion,instante) );

ALTER TABLE Escucha DROP COLUMN instante; ALTER TABLE Escucha ADD instante timestamp; /* NULL’s */

ALTER TABLE Escucha ADD FOREIGN KEY (usuario) REFERENCES Usuario (nick);

ALTER TABLE Usuario ADD PRIMARY KEY (nick);

Tipos y expresiones

Tipos SQL character ( n )  char( n ), varchar( n ), text integer  int, smallint float, real, double precision numeric( precisión , escala ) decimal( precisión , escala ) date, time, timestamp Valores literales Cadenas de caracteres entre '...' Valores numéricos similar p.e. a C date ‘YYYY-MM-DD’, time ‘HH:MM:SS’ Expresiones Se pueden utilizar en WHERE, SELECT, SET, DEFAULT, CHECK… Operadores Comentarios

  • – * / % ^ – – AND OR NOT /* … */ = < > <= >= LIKE ISNULL operaciones con strings: contatenación, like, expresiones regulares (‘%’ ‘_’)

dígitos decimales (por defecto 0)

Claves primarias

 Designan un identificador único de las filas de una tabla

 Sólo puede haber una clave primaria por tabla, aunque puede incluir varios campos

 Es muy aconsejable que toda tabla tenga su clave primaria

 Técnicamente equivalen a UNIQUE más NOT NULL

 Pero juegan un papel diferente en indexación (lo veremos más adelante)

 Opción de diseño: selección de clave primaria entre varias posibles

  • Clave primaria natural (email, dominio web, DNI, ISBN, etc.)
  • Clave primaria artificial: p.e. un ID entero (típicamente autoincremental), una cadena de caracteres (códigos), etc.

Claves externas

 Conceptualmente son comparables a punteros

 Referencian campos únicos de otra tabla

 Normalmente el campo referenciado es una clave primaria

 Técnicamente no es imprescindible usarlas

 Pero ayuda a asegurar la consistencia en las referencias!

 Y permiten establecer qué se debe hacer cuando desaparece una clave referenciada

Ejemplo

INSERT INTO Artista VALUES (1, 'The Beatles', 'UK'); INSERT INTO Artista VALUES (2, 'The Rolling Stones', 'UK'); INSERT INTO Artista (id, nombre) VALUES (3, 'David Bowie');

INSERT INTO Cancion VALUES (1, 'Norwegian wood', 'Pop', '125', '1965-03-12', 1), (2, 'Here, there and everywhere', 'Pop', '145', '1966-08-05', 1), (3, 'Jumping jack flash', 'Pop', '225', '1968-04-20', 2);

INSERT INTO Usuario VALUES ('lola', 'Dolores', '[email protected]'), ('pepe', 'José', '[email protected]'), ('chema', 'José María', '[email protected]'), ('charo', 'Rosario', '[email protected]');

INSERT INTO Contacto VALUES ('pepe', 'lola'), ('charo', 'pepe'), ('chema', 'charo');

INSERT INTO Escucha VALUES ('charo', 2, '2011-09-09 16:57:54'), ('pepe', 3, '2011-09-12 21:15:30');

UPDATE Artista SET nacionalidad = 'UK' WHERE nombre = 'David Bowie';

UPDATE Album SET precio = precio * 1.2;

DELETE FROM Escucha WHERE instante < '2000-01-01 00:00:00';

Data query

SELECT [DISTINCT] campos FROM tablas [WHERE condición ];

Ejemplos:

SELECT titulo, genero FROM Cancion WHERE fecha > '1959-12-31' AND fecha < '1970-01-01'; SELECT DISTINCT nacionalidad FROM Artista; /* Varias tablas / SELECT * FROM Cancion, Artista WHERE Cancion.autor = Artista.id AND Artista.nacionalidad = 'UK'; / Expresiones */ SELECT dni, teoria * 0.6 + practicas * 0.4 FROM Notas;

Motivación

Base de datos de músicos, canciones, usuarios, escuchas, red social Ejemplos de consultas Canciones de los años 60 (mostrar título y género) Conjunto de nacionalidades de los artistas cubiertas en la BD Canciones de artistas del Reino Unido Título de las canciones escuchadas por un usuario Todos los contactos de un usuario dado el nombre de éste Usuarios que se llaman igual Usuarios a distancia 2 de un usuario dado en la red social Contactos comunes a dos usuarios Cuántas veces ha sido escuchada una canción Artistas por orden de más a menos escuchados Usuarios con más de dos contactos Usuarios ordenados por nº de contactos Usuario con más contactos