!
!! #
! 1 2 3 ( 1 2 3. /! 3 ) +, 1& 3 0))) % &! ( ) +,. / & 0)))
4 2 5! 4 /! 4 # 2 / # %!
# ( # %! #!! # %! #! )! &
,,, #./ 0 +
. 4 # 4. 0! 2! ) 3! 1
,! 2 % % 7 0! 2 % &! ) 3! 56
%&! #! 55
( ) 58
( ) + ; : 2..,. 59
2 : < : + ; ( % + ; = 5
2 <,.,. # / # 6.4,, 4, 2 ( 5
2 <.... 2 5
# 0 # # 1 4 % %! 4 2./ # 2 (!! 5&
# 0 # # ( 5! : 4 0! ; # 5! 2 0! ; < 2 51
Α % 4 )./!, % 3 4 5 6 + ( 3 6 86
% + ),+.!! Β4 Α ; ) 2 85
( 7 / 5 # 6 6.51 8 #! 2 9 # 8 & 2 5 8 &! 2 2 8 : 8 # 2 5 & 5 & / 5 8 / 5 &! # #1 2 8 ; 5! 8 ; 88
/ ),..!. 7 4 7 89
) 8 8
< 0! ) %! ( 4 %! %! 8
;? %! 9: ; < ϕ ; = 8
7 / 5 # 6 6.51 8 #! 2 9 # 8 & 2 5 8 &! 2 2 8 : 8 # 2 5 & 5 & / 5 8 / 5 &! # #1 2 8 ; 5! 8 ; 8&
Χ 7 = 7 7 Ε2Ε? Φ Χ 7 = 7 7 Φ Χ 7 = 7 Γ 7 Φ 8+
% & #! # %! )% <# 2 5 & 5 & / 5 8 / 5 &! = % & % % ( ) & +, # % &. 81
% & ) / 0 12 1 3 : % /. 4 & / 0( 5 (65 % 5 7 5 8 3 % / > % ( / > & +, /:/? 1? #??? = % &6 / > 96
% & ; )% 7> 7/ 7> 7> 1 7/ # Α 7> / 95
% & ) 0 1 2! : % < <20! 2 <2 Γ!. <2 Β 98
% & ) 0 1 ;. 7.. 99
% & ) 0 1 ( ) 7> 7> 1 7/ # Α 7> / 7/ 7> 9
% & 7 / 5 # 6 6.51 8 #! 2 9 # 8 & 2 5 8 &! 2 2 8 : 8 # 2 5 & 5 & / 5 8 / 5 &! # #1 2 8 ; 5! 8 ; 9
7> 7> 1 7/ # Α 7> / 7 7> 7 7/ 7> 7 > 7> 7 3 7> 6 9
2! #?! / % # 3 444 = # 5 3 54445! / 5 = #444 5 ϕ # 5 3 54445! 1 9&
; 2! 0 : 0 : 2 9 9 9+
2! 7 7> >? + > 91 7? /? % Α! Β + /? + % Α! Β #7 #7> 0 9 > 5 # 5 < 5 =? 91
2! % 4! ) 2 5! %! 6
2! %? / Β 5 50 50 5 0 0! ; 0, 0 5
2! Β, Η2 :Ι Η2 : Ι 8
2! % 7 / Η2 :Ι Η2 : Ι 9 Α : Α Α 9
2! % 6 :,. # # % Γ Γ %!
2! % 7 / Η2 :Ι Η2 : Ι 9 Α : : 0 :!
2! # 7 Χ #!
2! % 7 / Η2 :Ι Η2 : Ι 9 Α : : 0 : &
2! # # Γ! +
2! % 7 / Η2 :Ι Η2 : Ι 9 Α : : 0 0 : 1
2! # #! 6
2! % 7 / 8. = Γ! ; : 2 : : 2! : : 2! : 2 :! 5
2! 7 / 5 # 6 6.51 8 #! 2 9 # 8 & 2 5 8 &! 2 2 8 : 8 # 2 5 & 5 & / 5 8 / 5 &! # #1 2 8 ; 5! 8 ; 8
7/ # Α 7> / 6 9 7> 7> 1 7 7> 7 7/ 7> 9! ; & 7 > 7> 7 Ηϑ 4 Ι 9
2!. Κ 2 8 & 5 ; 5! 8 2 Β & ; Β 1 5 2 Β 9!
6 7 6 7 8 6 7 0 %
8 9 : 6 7 ΛΛΛΛΛ! 6 ; < == &
8 9 : 6 7 6! 2 2! Ε Ε ; Α!!! Ε! Ε! ΛΛΛΛΛ! 2 Ε! 5 9 +.. ( Α 5. + <Β= 6 ; < == <> + &? +
8 9 : # & % % % 6 7 # & ( )) # % % + & # %! # %&& & & (! (! ) &+,!! (!!. &/, ( 0 1 &+ (! 0 23 4 # # ( &+ 1
8 9 : 6 7 # % #, # & ( %, %!.,! 6
8 9 : 6 7 # 0 0 ( 1. 2 / % 1 % (. 2 0 7 5 ( 3456 # / 2 5, 2 & 0&! # & / % (, ( ( /. / ; 4 5
8 9 : 6 7 # 7 ) 8 %, < 7 & ), #, % 9 8
# : %, # + ) 6 7, %. = > % # 5 % 3 5 :5 %? ( % % = # 0 ),. 9
6 7 & 7 % 7 %.
7 4 6 7 % % # %3 4 44 % 5 ; 6 < Ψ 76, =?. % 5 ; 3 2 > 2 2 =
6 7 ( ) Α & Α% Α 0 7 ;, 5 Α 7 ;0 ;,5 Α > Α & Α% 5 Α 05 Α 9 Α? Α 9 Α 5 8 69 6 : 7 ; <(#,5. Χ Α%!Β. Χ Α!Β Α / Α!Β Α 1 % & 1 4 6 1 & 4
# 7 6 7 #. ( 3 3! 3! 3!! &
#)# # & 7 6 7 7 0 # 7 & Β ; 2 3 2 2 = Χ 7 & Β ; 2 3 2 2 = + = > %Α0 5 Α0 5 1 # 5 : 5 1 Β? 6 1 4 +
#)# ( ) 6 7 7# 7 = ; 2 = % Β ; Α 7 2 Α % = Α 7> 0 7> Ε % Φ % % 7 = > Α 7 Α% 7 5 %Α 7Α% 7? 1
#)# # & 7 6 7 7 # 7 0 Χ 7 & Β ; 2 3 2 2 2 Α0 5 1 # 5 : 5 1 Β = & Β ; 2 3 2 2 = 6 % + #)# &6
#)# ( ) 6 7 7 7> Χ & Χ 7 2! # < = ; 2 Α % 2 Α 7 Α 5 Α 9 = 7 7> 7 Β ; 2 Α % 2 = &5
#)# # & 7 6 7 7 # 7 0 Χ 7 & Β ; 2 3 2 2 = 6 + #)# & Β ; 2 3 2 2 2 %Α0 5 1 # 5 : 5 1 Β = &8
#)# ( ) 6 7 7> 7 & 0 7 = ; 2 Α % = : 5 Β7 Β7/ Β ; 2 2 0Α 7 Α 7 = &9
)# # & 7 6 7 7 # 7 0 Χ 7 & Β ; 2 3 2 2 2 Α0 5 1 # 5 : 5 1 Β = & Β ; 2 3 2 2 = &
)# ( ) 6 7 7 > 7> # / /7 Χ = ; Α 2 Α % 2 %Α 7 ΑΧ & ( 5 ΧΑ 7 = 7 7> < Β ; 2 Α % = &
#) # & 7 6 7 7 # 7 0 Χ 7 & Β ; 2 3 2 2 2 = & Β ; 2 3 2 2 2 %Α0 5 1 # 5 : 5 1 Β = &
#) ( ) 6 7 7 7> # Β ; 2 Α % = 7 7> 7 Ε = ; 2 Α % 2 Ε 2 Α 7 Α = &&
) # & 7 6 7 7 # 7 0 Χ 7 & Β ; 2 3 2 2 2 = & Β ; 2 3 2 2 = + = > %Α0 5 Α0 5 1 # 5 : 5 1 Β? &+
) ( ) 6 7 7> 0 7> Α % = ; Α 7 2 Α % = 7. #7 #7> Β ; 2 Α % = = > %Α 7Α 5 Α & Α 5 Α? &1
7 + 3 # & 7 = 6 7 # 7 + % = ; 2 3 2 2 = + Β ; 2 3 2 2 = + Β ; 2 3 2 2 = + = > %Α0 5 Α0 5 Α0 5 1 # 5 : 5 1 Β? 6 +6
7 + 3 ( ) 6 7 # 7 7 > = ; 2 Α = Β ; 2 Ε = 7 7 Ε /7 /7> Χ Β ; 2 Α% = 0 = > Α Α0 5 Α Α0 5 ΧΑ Α0 5? +5
6 7 ( ) 7> 7/ 7> 7> 1 7/ # Α 7> / 6 9 ; 7 7> 7! 7 > 7> 7 +8
2! 6 7 % #! 8 8 2 Φ 8 2 &! 5 8 & & 5 & : & 9 7 2 5 / 5 2 8 2 2 8 8 2 8! 5 7 #!! 8 & 8 :!!! 5 8 8 8 5! 2 +9
Introducción al Diseño de Bases de Datos Cuarta Parte SQL: Structured Query Language
Repaso Modelado Conceptual Docentes EsResponsable (1:n) Coordina (1:n) Cursos Realizó (n:m) Alumnos Dicta (n:m) Inscribió (n:m) Modelado Lógico Docentes = { D-tipoDNI, D-NroDNI, D-Leg,D-Titulo} Cursos = { C-Cod, C-Nbre, C-Duración, D-Leg-Coord, D-Leg-Resp } Dicta = { D-Leg, C-Cod} Alumnos = { A-DNI, A-Nbre, A-Email} Realizó = {A-DNI, C-Cod } Norma Herrera Carina Ruano Inscribió = { A-DNI, C-Cod, Fecha} 2
Sistemas de Gestión de Base de Datos Los DBMS (Data Base Management System) son un tipo de software que permite crear y administrar la base de datos. Norma Herrera Carina Ruano 3
Sistemas de Gestión de Base de Datos Algunas responsabilidades de los DBMS Abstracción de la información: ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Seguridad: deben garantizar la seguridad de la información, permitiendo otorgar distintas categorías de permisos a los usuarios. Tiempo de respuesta: minimizar el tiempo de respuesta del SGB. Los DBMS nos permite comunicarnos con la base de datos mediante SQL. SQL DBMS Norma Herrera Carina Ruano 4
Lenguaje SQL SQL (sus siglas en ingles de Structure Query Languaje) es un lenguaje de consulta estructurado para bases de datos relacionales. Originalmente SEQUEL (Structured English QUEry Language) diseñado e implementado por IBM como interfaz para SystemR (sistema experimental de base de datos relacionales). Por su eficiencia y sencillez es el lenguaje utilizado en todas las bases de datos relacionales. Norma Herrera Carina Ruano 5
SQL Lenguaje SQL Definición de Datos (DDL) Manipulación de Datos (DML) CREATE: para crear relaciones/tablas ALTER: para modificar objetos de BD DROP: para borrar objetos de BD INSERT: para insertar datos SELECT: para consultar datos DELETE: para borrar datos UPDATE: para modificar datos En este curso aprenderemos a escribir instrucciones sencillas en SQL que nos permitan crear tablas y consultar datos de la Base de Datos. Norma Herrera Carina Ruano 6
Sentencia CREATE TABLE Lenguaje SQL Se utiliza para crear una nueva relación (tabla). Para cada relación permite definir: 1. Nombre de la relación (tabla) 2. Nombre de cada atributos (columna) 3. Dominio (tipo de datos) de cada atributo 4. Opcionalmente restricciones sobre los atributos ALUMNOS A-DNI A-Nbre A-Email 27987654 Juan Martinez jm@gmail.com 23456788 Lucia Perez l@hotmail.com 26789876 Lorena Sosa ma@gmail.com Nombre Relación Nombre Atributo Norma Herrera Carina Ruano Dominio 7
Sintaxis simplificada: Lenguaje SQL CREATE TABLE Nombre_Tabla ( ], NombreAtributo_1 Tipo_de_Dato [ Restricciones NombreAtributo_2 Tipo_de_Dato [ Restricciones ],... NombreAtributo_n Tipo_de_Dato [ Restricciones ] ); Norma Herrera Carina Ruano 8
Tipos de Datos Lenguaje SQL Numérico enteros: INT, SMALLINT Numéricos reales: FLOAT, REAL,DOUBLE PRECISION Secuencias de caracteres: CHAR(n) o VARCHAR(n) Fecha : DATE Hora: TIME Norma Herrera Carina Ruano 9
Ejemplo: Lenguaje SQL Esquema Alumnos = { A-DNI, A-Nbre, A-Email } CREATE TABLE Nombre_Tabla ( NombreAtributo_1 Tipo_de_Dato, NombreAtributo_2 Tipo_de_Dato,... ); NombreAtributo_n Tipo_de_Dato Norma Herrera Carina Ruano 10
Ejemplo: Lenguaje SQL Esquema Alumnos = { A-DNI, A-Nbre, A-Email } CREATE TABLE Alumnos ( A-DNI INT, ) ; A-Nbre VARCHAR(50), A-Email VARCHAR(20), Norma Herrera Carina Ruano 11
Lenguaje SQL Restricciones sobre los atributos NOT NULL: Restringe el ingreso de valores nulos. PRIMARY KEY: Restringe el ingreso de valores repetidos UNIQUE: Restringe el ingreso de valores repetidos. FOREIGN KEY: Restringe el ingreso de valores a un atributo si no han sido previamente insertados en otro. Norma Herrera Carina Ruano 12
Ejemplo NOT NULL: Lenguaje SQL Esquema Alumnos = { A-DNI, A-Nbre, A-Email } CREATE TABLE Alumnos ( A-DNI INT NOT NULL, ) ; A-Nbre VARCHAR(50) NOT NULL, A-Email VARCHAR(20), Norma Herrera Carina Ruano 13
Ejemplo PRIMARY KEY: Lenguaje SQL Esquema Alumnos = { A-DNI, A-Nbre, A-Email } CREATE TABLE Alumnos ( A-DNI INT NOT NULL PRIMARY KEY, ) ; A-Nbre VARCHAR(50) NOT NULL, A-Email VARCHAR(20), Norma Herrera Carina Ruano 14
Ejemplo PRIMARY KEY: Lenguaje SQL Alumnos={ A-TipoDoc, A-NroDoc, A-Nbre, A-Email } CREATE TABLE Alumnos ( A-TipoDoc A-NroDoc A-Nbre INT NOT NULL PRIMARY KEY, INT NOT NULL PRIMARY KEY, VARCHAR(50) NOT NULL, A-Email VARCHAR(20), ) ; Dos claves simples Norma Herrera Carina Ruano CREATE TABLE Alumnos ( A-TipoDoc INT NOT NULL, A-NroDoc INT NOT NULL, A-Nbre VARCHAR(50) NOT NULL, A-Email VARCHAR(20), PRIMARY KEY (A-TipoDoc, A-NroDoc) ) ; Una clave compuesta 15
Ejemplo UNIQUE: Lenguaje SQL Alumnos={ A-TipoDoc, A-NroDoc, A-NroReg, A-Nbre, A-Email } CREATE TABLE Alumnos ( A-TipoDoc INT NOT NULL, A-NroDoc INT NOT NULL, A-NroDoc INT NOT NULL UNIQUE, A-Nbre VARCHAR(50) NOT NULL, A-Email VARCHAR(20), PRIMARY KEY (A-TipoDoc, A-NroDoc) ) ; En una tabla puede existir varias declaraciones UNIQUE pero sólo una declaración PRIMARY KEY. Norma Herrera Carina Ruano 16
SQL Lenguaje SQL Definición de Datos (DDL) Manipulación de Datos (DML) CREATE: para crear relaciones/tablas ALTER: para modificar objetos de BD DROP: para borrar objetos de BD INSERT: para insertar datos SELECT: para consultar datos DELETE: para borrar datos UPDATE: para modificar datos En este curso aprenderemos a escribir instrucciones sencillas en SQL que nos permitan crear tablas y consultar datos de la Base de Datos. Norma Herrera Carina Ruano 17
Permite insertar nuevas nuplas en una relación (tabla). INSERT INTO NombreTabla VALUES ( lista de valores) Lenguaje SQL En este proceso de inserción se deben tener en cuenta las restricciones especificadas durante la creación de la tabla (claves y restricciones de integridad). Sintaxis: Sentencia INSERT INSERT INTO NombreTabla (NombreAtributo,, NombreAtributo) VALUES ( lista de valores) Norma Herrera Carina Ruano 18
Ejemplo INSERT: Lenguaje SQL Instancia ALUMNOS A-DNI A-Nbre A-Email 27.000.000 Juan Rosales jr@gmail.com 23.000.000 María Perez mp@hotmail.com Sintaxis: INSERT INTO NombreTabla (NombreAtributo,, NombreAtributo) VALUES ( lista de valores) INSERT INTO NombreTabla VALUES ( lista de valores) Norma Herrera Carina Ruano 19
Ejemplo INSERT: Lenguaje SQL Instancia ALUMNOS A-DNI A-Nbre A-Email 27.000.000 Juan Rosales jr@gmail.com 23.000.000 María Perez mp@hotmail.com INSERT INTO ALUMNOS (A-DNI, A-Nbre, A-Email) VALUES ( 27.000.000, 'Juan Rosales', 'jr@gmail.com') INSERT INTO ALUMNOS VALUES ( 27.000.000, 'Juan Rosales', 'jr@gmail.com') Norma Herrera Carina Ruano 20
SQL Lenguaje SQL Definición de Datos (DDL) Manipulación de Datos (DML) CREATE: para crear relaciones/tablas ALTER: para modificar objetos de BD DROP: para borrar objetos de BD INSERT: para insertar datos SELECT: para consultar datos DELETE: para borrar datos UPDATE: para modificar datos En este curso aprenderemos a escribir instrucciones sencillas en SQL que nos permitan crear tablas y consultar datos de la Base de Datos. Norma Herrera Carina Ruano 21
Sentencia SELECT Lenguaje SQL Nos permite recuperar información de la base de datos SELECT <lista de atributos a seleccionar> FROM < lista de tablas > [WHERE < condición> ] [GROUP BY < atributo de agrupación> ] [HAVING < condición de agrupacíon> ] [ORDER BY < lista de atributos> ] Norma Herrera Carina Ruano 22
Ejemplo SELECT: Lenguaje SQL Instancia ALUMNOS A-DNI A-Nbre A-Email 27.000.000 Juan Rosales jr@gmail.com 23.000.000 María Perez mp@hotmail.com Consulta Recuperar el DNI de todos los alumnos SELECT A-DNI FROM ALUMNOS Norma Herrera Carina Ruano 23
Operadores Lenguaje SQL Lógicos: AND OR NOT De Comparación: < BETWEEN > LIKE <> IN = Norma Herrera Carina Ruano 24
Ejemplo SELECT: Lenguaje SQL Instancia ALUMNOS A-DNI A-Nbre A-Email 27.000.000 Juan Rosales jr@gmail.com 23.000.000 María Perez mp@hotmail.com Consulta Recuperar el nombre del alumno con DNI 27.000.00 SELECT A-Nbre FROM ALUMNOS WHERE A-DNI=27.000.000 Norma Herrera Carina Ruano 25
Consulta Recuperar el nombre del alumno con DNI 27.000.00 SELECT A-Nbre FROM ALUMNOS WHERE A-DNI=27.000.000 Qué se quiere recuperar? Desde qué relaciones? Bajo qué condición? Norma Herrera Carina Ruano 26
Ejemplo SELECT: Lenguaje SQL Instancia CURSOS C-Cod C-Nbre C-Duración 10 Bases de Datos 3 20 Matemática Básica 4 30 Lógica 3 Consulta Recuperar el nombre los cursos que tengan duración de 3 días o tengan un código mayor o igual a 20. SELECT C-Nbre FROM CURSOS WHERE C-Duracion= 3 OR C-Cod >= 20 Norma Herrera Carina Ruano 27
Consulta Lenguaje SQL Recuperar el nombre de los cursos dictados por el docente con código 1111 Instancia Norma Herrera Carina Ruano CURSOS C-Cod C-Nbre C-Duración 10 Bases de Datos 3 20 Matemática Básica 4 DICTAN D-Leg-Dicta C-Cod-Dicta 1111 10 2222 20 1111 20 28
Lenguaje SQL Consulta Recuperar el nombre de los cursos dictados por el docente con código 1111 SELECT C-Nbre FROM CURSOS, DICTAN WHERE C-Cod-Dictan = C-Cod AND C-Cod-Dictan = 1111 Norma Herrera Carina Ruano 29
Lenguaje SQL Ejercicio: Crear las tablas correspondientes al modelo lógico obtenido en la clase anterior. Modelado Lógico Docentes = { D-tipoDNI, D-NroDNI, D-Leg, D-Nbre, D-Titulo} Cursos = { C-Cod, C-Nbre, C-Duración, D-Leg-Coord, D-Leg-Resp } Dicta = { D-Leg, C-Cod} Realizó = {A-DNI, C-Cod } Alumnos = { A-DNI, A-Nbre, A-Email} Inscribió = { A-DNI, C-Cod, Fecha} Norma Herrera Carina Ruano 30
Ejercicio: Lenguaje SQL Escribir las sentencias de inserción para obtener la siguiente instancia. CURSOS C-Cod C-Nbre C-Duración 10 Bases de Datos 3 20 Matemática Básica 4 DICTAN D-Leg-Dicta C-Cod-Dicta 1111 10 2222 20 1111 20 DOCENTES D-TipoDoc D-NroDoc D-Leg D-Nbre D-Titulo DNI 21.000.000 1111 Maria Perez Magister DNI 23.000.000 2222 Juan Gomez Doctor Norma Herrera Carina Ruano 31
Lenguaje SQL Ejercicio: 1) Obtener el nombre de los alumnos inscriptos en el curso con código 2345. 2) Obtener el nombre de los docentes que dictan el curso con nombre Bases de Datos 2) Obtener nombre de los docentes que han dictado algún curso al alumno con DNI 23.456.789 haya asistido Norma Herrera Carina Ruano 32
Bibliografía: Database and Knowledge Base Systems,Volumen I; J. Ullman Fundamentos de Sistemas de Bases de Datos; R. Elmasri, S. Navathe Diseño de Base de Datos Relacionales; A. de Miguel, M. Piattini, E. Marcos. Norma Herrera Carina Ruano
Muchas gracias por su atención!! Información de contacto: Norma Herrera nherrera@unsl.edu.ar Carina Ruano cmruano@unsl.edu.ar http://www.dirinfo.unsl.edu.ar/~bdtw/index-bdtw.html Norma Herrera Carina Ruano 34