Bases de Datos - 2006. SQL - Ejemplos



Documentos relacionados
SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

Bases de Datos: Structured Query Language (SQL)

Bases de Datos 2. Teórico

APÉNDICE SQL (Structures Query Language)

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Tema 4. SQL. Juan Ignacio Rodríguez de León

A.1. Definiciones de datos en SQL

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

ÍNDICE PRIMERA PARTE... 17

Temario. Índices simples Árboles B Hashing

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

Crear BD en. Isis Bonet Cruz, PhD

SQL. Orígenes y Evolución

SQL (Structured Query Language)- DML

Base de Datos SQL Server

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

6- Combinación de tablas

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Unidad. Lenguaje SQL. (Structured Query Language)

Base de datos I Facultad de Ingeniería. Escuela de computación.

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

Práctica 3. Consultas SQL

T12 Vistas y tablas temporales

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

8 SQL SERVER 2008 RA-MA

SQL Server FEMEPA SQL Server 2000

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

Bases de Datos Relacionales

Base de datos Lenguaje SQL

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

EXAMEN TEMAS 3, 4 y 5. CREACIÓN Y EXPLOTACIÓN DE UNA BASE DE DATOS

SERVICIO NACIONAL DE APRENDIZAJE SENA

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

SQL: Lenguaje de Interrogación Estructurado

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Tema 4. Lenguajes de consulta comerciales

MANUAL BÁSICO DEL LENGUAJE SQL

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

Ejercicios Resueltos de SQL

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

DML en SQL. Consultas sencillas usando el DML de SQL

S.Q.L. (Lenguaje de Consulta Estructurada)

Sql Basico. Seminar Introduction

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

SQL Los fundamentos del lenguaje

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

Trabajos de Ampliación. Bases de datos NoSQL.

Tema 4. Manipulación de datos con SQL

2.5.- El lenguaje estándar SQL

SQL (Structured Query Language)

Tema 33. El lenguaje SQL

Lenguaje SQL. SQL Structured Query Languaje. Capacidades del Lenguaje. Estructura Básica de una consulta SQL

Restricciones de Integridad

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Acceso a bases de datos MySQL con PHP

BASES DE DATOS I CONSULTA DE DATOS

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

5- Uso de sentencias avanzadas

SQL. Álgebra Relacional Selección y proyección Operaciones sobre conjuntos: unión, intersección, diferencia, producto Reunión natural

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Bases de Datos 1. Teórico: Structured Query Language

TEMA 20: CONCEPTOS BÁSICOS DE SQL

ÍNDICE INTRODUCCIÓN...13

select nombre from profesores where categoria='aso6';

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Lenguaje para descripción de datos

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

Introducción a las bases de datos.

Consultas con combinaciones

DML SQL II. Comparaciones con relaciones

Conceptos Avanzados de Bases de datos

4- Uso de sentencias para el envió y extracción de datos

LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2)

Lenguaje SQL para Novatos

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

2.4 Manipulación de datos

Ficheros y Bases de Datos Curso Ingeniería Técnica de Informática Primer Parcial. 1-Junio Nombre:

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

1. Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos.

S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas. Sistemas de Bases de Datos II - ITS EMT CETP

Curso SQL Nivel Avanzado 1. Miguel Jurado García

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

3ra. Parte. Bases de Datos Relacionales

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

SÍLABO. : Obligatorio : Ingeniería de Sistemas : IS0704. : VII Ciclo : 03 Teoría y 02 Práctica : 04 : Lenguaje de Programación II

Consulta y manipulación de datos. El lenguaje SQL

SENTENCIAS Y CONSULTAS EN SQL SERVER

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 27 28, SQL básico. Carlos Rodrigo Blanco LAEFF INTA

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

Grupo Kybele, Pág. 1

RESTRICCIONES DE DOMINIOS

Procesamiento y Optimización de consultas Material Preliminar en preparación

Repaso de Conceptos Básicos de Bases de Datos

Transcripción:

Bases de Datos - 2006 SQL - Ejemplos Consideramos la siguiente base de datos relacional: persona(dni,primer-nombre,apellido) biblioteca(nombre-biblioteca,calle,número) libro(título,isbn,editorial,edición) libro-autor(autor,isbn) encargo(fecha,librería,num-encargo,nombre-biblioteca) socio(posición,dni) bibliotecario(antigüedad,dni) libro-biblioteca(num-inventario,isbn,nombre-biblioteca) inscripto-en(dni,nombre-biblioteca) trabaja-en(dni,nombre-biblioteca) incluye(num-encargo,nombre-biblioteca,isbn,num-copias) prestado-a(num-inventario,nombre-biblioteca,dni) 1

Data Definition Language create table persona (DNI integer not null, primer-nombre varchar(20), apellido varchar(20), primary key (DNI), check (DNI > 0)) create table biblioteca (nombre-biblioteca varchar(20) not null, calle varchar(20), numero integer, primary key (nombre-biblioteca), check (numero > 0)) create table libro (titulo varchar(100), ISBN integer not null, editorial varchar(20), edicion smallint, primary key (ISBN), check (ISBN > 0 and edicion > 0)) 2

create table libro-autor (autor varchar(40) not null, ISBN integer not null, primary key (autor,isbn), check (ISBN > 0)) create table encargo (fecha date, libreria varchar(30) not null, num-encargo integer not null, nombre-biblioteca varchar(30) not null, primary key (nombre-biblioteca, num-encargo), check (num-encargo > 0)) create table socio (posicion varchar(20) not null, DNI integer not null, primary key (DNI), check (DNI > 0)) 3

create table bibliotecario (antiguedad smallint not null, DNI integer not null, primary key (DNI), check(dni > 0 and antiguedad between 0 and 50)) create table libro-biblioteca (num-inventario integer not null, ISBN integer not null, nombre-biblioteca varchar(30) not null, primary key (num-inventario,nombre-biblioteca), check (ISBN > 0 and num-inventario > 0)) create table inscripto-en (nombre-biblioteca varchar(30) not null, DNI integer not null, primary key (DNI,nombre-biblioteca), check (DNI > 0)) 4

create table trabaja-en (nombre-biblioteca varchar(30) not null, DNI integer not null, primary key (DNI,nombre-biblioteca), check (DNI > 0)) create table incluye (nombre-biblioteca varchar(30) not null, num-encargo integer not null, ISBN integer not null, num-copias smallint, primary key (ISBN,nombre-biblioteca,num-encargo), check (num-encargo > 0 and ISBN > 0 and num-copias > 0)) create table prestado-a (nombre-biblioteca varchar(30) not null, DNI integer not null, num-inventario not null, primary key (DNI,nombre-biblioteca,num-inventario), check (DNI > 0 and num-inventario > 0) 5

Expresiones select-from-where Obtener primer nombre y DNI de las personas cuyo apellido es Durán : select primer-nombre, DNI from persona where apellido = Duran Obtener los libros cuya editorial es Prenticehall y cuya edición no es la primera: select * from libro where editorial = Prentice-hall and edicion > 1 Encontrar el título e ISBN de todos los libros cuyo autor es Avi Silberschatz: select titulo, libro.isbn from libro, libro-autor where autor = Avi Silberschatz and libro.isbn = libro-autor.isbn 6

Renaming and tuple variables Encontrar todas las personas que son socios de la biblioteca de FaMAF. Renombrar el atributo primer nombre con nombre. select primer-nombre as nombre, apellido, persona.dni from persona, inscripto-en where nombre-biblioteca = FaMAF and persona.dni = inscripto-en.dni Encontrar todas las personas que son socios de alguna biblioteca, indicando en qué biblioteca están: select primer-nombre, apellido, P.DNI, I.nombre-biblioteca from persona as P, inscripto-en as I where and P.DNI = I.DNI 7

Encontrar los DNI de los bibliotecarios de mayor antigüedad que el bibliotecario de DNI 12354666: select distinct B.DNI from bibliotecario as B, bibliotecario as L where B.antiguedad >= L.antiguedad and L.DNI = 12354666 Operaciones de Strings y de Conjuntos Encontrar los títulos e ISBN de los libros tal que en el título aparece la palabra databases : select titulo,isbn from libro where titulo like %databases% 8

Encontrar los DNI de todas las personas que son socios o bibliotecarios: (select DNI from inscripto-en) union (select DNI from trabaja-en) Reemplazar union por intersect para obtener los DNI de las personas que son socios y bibliotecarios. Reemplazar union por except para encontrar los DNI de las personas que son socios pero no bibliotecarios. 9

Funciones de Agregación y Ordenación Encontrar el ISBN y título de todos los libros cuyo autor es Avi Silberschatz ordenado en forma descendente por ISBN: select libro.isbn, titulo from libro, libro-autor where autor = Avi Silberschatz and libro.isbn = libro-autor.isbn ordered by libro.isbn desc Obtener el promedio de las antigüedades de los bibliotecarios que trabajan en cada biblioteca: select nombre-biblioteca, avg antiguedad from bibliotecario, trabaja-en where bibliotecario.dni = antiguedad.dni group by nombre-biblioteca 10

Encontrar la cantidad de los libros en biblioteca de FaMAF tal que en el título aparece la palabra databases : select count (libro.isbn) from libro, libro-biblioteca where titulo like %databases% and nombre-biblioteca = FaMAF and libro-biblioteca.isbn = libro.isbn Obtener los nombres de las bibliotecas tal que el promedio de las antigüedades de los bibliotecarios que trabajan en ellas es de al menos 5 años. select nombre-biblioteca, avg antiguedad from bibliotecario, trabaja-en where bibliotecario.dni = antiguedad.dni group by nombre-biblioteca having avg (antiguedad) >= 5 11

Subconsultas Anidadas Encontrar los DNI de las personas que son tanto bibliotecarios como socios. select DNI from socio where DNI in (select DNI from bibliotecario) Encontrar los DNI de las personas que son socios pero no bibliotecarios de la biblioteca de FaMAF. select DNI from inscripto-en where nombre-biblioteca = FaMAF and DNI not in (select DNI from trabaja-en where nombre-biblioteca = FaMAF ) 12

Encontrar los DNI de todos los bibliotecarios que tienen más antigüedad que todos los bibliotecarios de FaMAF : select DNI from bibliotecario where antigüedad > all (select antigüedad from bibliotecario, trabaja-en where nombre-biblioteca = FaMAF and bibliotecario.dni = trabaja-en.dni) Encontrar todos los DNI de socios que son socios a lo sumo de una biblioteca. select T.DNI from socio as T where unique (select R.DNI from inscripto-en, socio as R where R.DNI = T.DNI and R.DNI = inscripto-en.dni) 13

Encontrar los ISBN de los libros que no están en ninguna biblioteca: select T.ISBN from libro as T where not exists (select R.ISBN from libro-biblioteca as R where T.ISBN = R.ISBN) Vistas Una vista consistente de todos los nombres de los socios y las bibliotecas donde están inscriptos: create view nombres-socios as select primer-nombre, apellido, nombre-biblioteca from persona, inscripto-en where persona.dni = inscripto-en.dni 14

Encontrar los nombres de los socios de la biblioteca de FaMAF : select primer-nombre, apellido from nombres-socios where nombre-biblioteca = FaMAF Encontrar la antigüedad promedio de los bibliotecarios de aquellas bibliotecas donde la antigüedad promedio de los bibliotecarios es mayor que 4 años. select nombre-biblioteca, ant-promedio from (select nombre-biblioteca, avg antigüedad from bibliotecario, trabaja-en where bibliotecario.dni = trabaja-en.dni group by nombre-biblioteca) as resultado(nombre-biblioteca, ant-promedio) where ant-promedio > 4 15

Encontrar el nombre de los bibliotecarios de menor antigüedad: with menor-antigüedad(valor) as select min(antigüedad) from bibliotecario select primer-nombre, apellido from bibliotecario, persona where bibliotecario.dni = persona.dni and antigüedad = menor-antigüedad.valor Modificación de la base de datos Ingresar a Luis Pérez de DNI 14565777 como bibliotecario de la biblioteca de FaMAF: insert into persona values (14565777, Luis, Perez ) insert into biblotecario values (0,14565777) 16

insert into trabaja-en values (14565777, FaMAF ) Crear la biblioteca Yapeyú con dirección fijada a null: insert into biblioteca values ( Yapeyu,null,null) Poner a los bibliotecarios de la biblioteca de FaMAF como socios de la biblioteca de FaMAF: insert into socios select egresado, DNI from trabaja-en where nombre-biblioteca = FaMAF insert into inscripto-en select DNI, FaMAF from trabaja-en where nombre-biblioteca = FaMAF 17

Borrar todos los bibliotecarios que tienen 30 años o más de antigüedad. delete from trabaja-en where DNI in (select DNI from bibliotecario where antigüedad >= 30) delete from bibliotecario where antigüedad >= 30 Incrementar la antigüedad de todos los bibliotecarios en 1. update bibliotecario set antigüedad = antigüedad + 1 Cambiar la dirección de la biblioteca de FaMAF a Colón 2500: 18

update biblioteca set calle = Colon, numero = 2500 where nombre-biblioteca = FaMAF Reuniones de relaciones Reunión natural de las relaciones socio e inscripto-en: socio natural inner join inscripto-en Reunión externa a la izquierda de las relaciones socio e inscripto-en: socio natural left outer join inscripto-en Encontrar los DNI de las personas que son bibliotecarios o socios pero no ambos: select DNI from socio natural full outer join bibliotecario where antiguedad = null or posicion = null 19