Práctica 1: Contenido

Anuncio
Prácticas de Bases de Datos
María José Aramburu Cabo
Email: [email protected]
Web: http://www3.uji.es/~aramburu
Despacho: TI2123DD
Tutorías: Lunes y Martes de 11:00 a 13:00 h.
Miércoles de 14:00 a 16:00 h.
II18--Universitat Jaume I
1
Práctica 1: Contenido
• Introducción a las Bases de Datos
Relacionales
• Introducción a SQL*Plus
• Introducción al lenguaje SQL
• Ejercicios
• Ejercicios de autoevaluación
II18--Universitat Jaume I
2
1
¿Qué es un Sistema de Bases de Datos?
Usuario
Lenguaje de
Consulta
Punto de vista lógico (usuario):
Los datos y sus relaciones se encuentran en un único
lugar (caja negra). El acceso a éstos se realiza a través
del SGDB.
Sistema de Bases de Datos
SGBD (Sistema Gestor de Bases de Datos)
Punto de vista físico:
Datos almacenados en uno o
mas ficheros, en uno o mas
discos.
Sistema de Bases de Datos Relacional
Punto de vista lógico (usuario):
Los datos y sus relaciones se encuentran en un único lugar
(caja negra). El acceso a éstos se realiza a través del SGBD
Relacional: Todos los datos están organizados en tablas
formadas por filas y columnas.
Usuario
Sistema de Bases de
Datos Relacional
SQL
SGBDR
4
2
Modelo Relacional
Todos los datos están organizados en tablas...
entidad
propiedades
CLIENTES
codcli
nombre dirección
codpostal codpue
290
Luis Gil ... ...
... ..
108
José Riu ...
... ...
II18--Universitat Jaume I
5
Modelo Relacional
... Y las filas de una tabla no están ordenadas
ARTICULOS
codart
descrip precio
stock
stock_min
X54
Bombilla ... ...
... ...
... ...
F78
Cable ... ...
II18--Universitat Jaume I
6
3
Clave Primaria
Columna o conjunto de columnas cuyos valores
identifican de forma única a cada una de las filas de la
tabla.
CLIENTES(codcli, nombre, ...)
FACTURAS(codfac, fecha, ...)
LINEAS_FAC(codfac, linea, cant, ...)
La clave primaria siempre es NO NULA. (integ. entidades)
II18--Universitat Jaume I
7
Relaciones: Claves Ajenas
¿Cómo se sabe de qué cliente es cada factura? ¿y
cómo se sabe qué artículo se pide en cada línea? ...
mediante las claves ajenas.
Una clave ajena (CA) es una o varias columnas que
hacen referencia a la clave primaria (CP) de otra tabla.
CLIENTES(codcli, nombre, ...)
FACTURAS(codfac, fecha, codcli, ...)
II18--Universitat Jaume I
8
4
Claves Ajenas
• FACTURAS.codcli es una CA a CLIENTES.
– El tipo de datos de CA y CP debe ser el mismo.
– Los valores que aparecen en la CA deben coincidir con
alguno de los valores de la CP (integ. referencial).
– Todos los valores de la CP NO deben aparecer en la CA
– En la CP no se pueden repetir valores . En la CA SI se
pueden repetir valores.
– Una CA representa una relación entre entidades.
– La CP es siempre no nula . La CA no necesariamente.
– Se suelen llamar igual la CA y la CP.
II18--Universitat Jaume I
9
Objetos mas complejos...
Codfac: 1437
Fecha: 25/02/2002
IVA: 16%
Dto.: 5%
1. Bombilla X54
2. Tubo neón FG
3. Enchufe SW56
¿todo esto es una tabla?
12 u. 2,10
1 u. 18
20 u. 1,90
Total :
II18--Universitat Jaume I
25,2
18
38
81,2
10
5
...en el Modelo Relacional
... en una tabla no ¡¡ pero en dos sí !!
Líneas de factura
Cabecera de factura
FACTURAS
codfac fecha
1437
LINEAS_FAC
....
codfac linea cant ....
25/2/02 ...
1437
1
12
...
1437
2
1
...
II18--Universitat Jaume I
11
Modelo Relacional: La BD de prácticas
TABLA CLIENTES
TABLA PUEBLOS
CODCLI
NOMBRE
DIRECCION
CODPOSTAL
CODPUE
CODPUE VARCHAR2(5)
NOMBRE VARCHAR2(40)
CODPRO VARCHAR2(2)
NUMBER(5)
VARCHAR2(50)
VARCHAR2(50)
VARCHAR2(5)
VARCHAR2(5)
TABLA LINEAS FAC
CODFAC NUMBER(6)
NUMBER(2)
LINEA
CANT
NUMBER(5)
CODART
VARCHAR2(8)
PRECIO
NUMBER(7,2)
DTO
NUMBER(2)
TABLA PROVINCIAS
CODPRO VARCHAR2(2)
NOMBRE VARCHAR2(30)
TABLA ARTICULOS
CODART
VARCHAR2(8)
DESCRIP
VARCHAR2(40)
PRECIO
NUMBER(7,2)
STOCK
NUMBER(6)
STOCK_MIN NUMBER(6)
TABLA FACTURAS
TABLA VENDEDORES
CODFAC
FECHA
CODCLI
CODVEN
IVA
DTO
CODVEN
NOMBRE
DIRECCION
CODPOSTAL
CODPUE
CODJEFE
NUMBER(6)
DATE
NUMBER(5)
NUMBER(5)
NUMBER(2)
NUMBER(2)
NUMBER(5)
VARCHAR2(50)
VARCHAR2(50)
VARCHAR2(5)
VARCHAR2(5)
NUMBER(5)
12
6
Observaciones
ARTICULOS.precio : precio a día de hoy.
LINEAS_FAC.precio : precio al que se vendió el
artículo en la factura. Era el precio del artículo en la
fecha de la factura .
FACTURAS.dto : descuento sobre el importe total de la
factura.
LINEAS_FAC.dto : descuento sobre el importe del
artículo que se pide en la línea.
II18--Universitat Jaume I
13
Introducción a SQL*Plus
• SQL*Plus es una herramienta del SGBDR Oracle.
• Permite:
– Introducir, editar, almacenar, recuperar y ejecutar
sentencias SQL.
– Dar formato a los resultados de las consultas,
almacenarlos, imprimirlos...
– Visualizar las definiciones de columna de las tablas.
II18--Universitat Jaume I
14
7
Introducción a SQL*Plus
• Para trabajar con Oracle en Anubis:
1- Introducir al final del fichero .bashrc la siguiente línea:
. /mnt/oracle/ora9i.env
2- Abandonar la sesión y volver a entrar.
3- Ejecutar SQL*Plus:
$ sqlplus
usuario: oraii18
password: oraii18
SQL>
II18--Universitat Jaume I
15
Introducción a SQL*Plus
• Ejecutando una sentencia SQL:
SQL> SELECT * FROM provincias;
• Algunas ordenes de SQL*Plus:
– Elegir el editor por defecto:
SQL> DEFINE_EDITOR= joe ó DEFINE_EDITOR= vi
– Editar un fichero del directorio actual: SQL> ed fichero.sql
– Ejecutar una sentencia almacenada en un fichero:
SQL> start fichero
– Visualizar definiciones de columna de una tabla:
SQL> desc tabla
– Salir de SQL*Plus: SQL>quit ó SQL>exit
II18--Universitat Jaume I
16
8
Introducción a SQL
• SQL (Structured Query Language) es un lenguaje
standard para trabajar con bases de datos
relacionales (Oracle, Informix, dBase IV, DB2,
Ingres, Access ...) .
• Permite:
–
–
–
–
Definición de datos
Obtención de datos: consultas (SELECT)
Manipulación de datos
Control de acceso
II18--Universitat Jaume I
17
Consulta de datos
Formato básico de una sentencia SELECT:
SELECT [DISTINCT] { * | col [, col ] }
FROM tabla
[ WHERE condición_búsqueda ] ;
II18--Universitat Jaume I
18
9
Consulta de datos
Algunas consultas sencillas:
TABLA CLIENTES
SELECT *
FROM clientes;
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
RESULTADO
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
II18--Universitat Jaume I
19
Consulta de datos
SELECT nombre, codpostal
TABLA CLIENTES
FROM clientes;
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
RESULTADO
NOMBRE
CODPOSTAL
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘13004’
‘15008’
‘12003’
‘15008’
II18--Universitat Jaume I
20
10
Consulta de datos
SELECT codpostal
FROM clientes;
TABLA CLIENTES
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
RESULTADO
CODPOSTAL
‘13004’
‘15008’
‘12003’
‘15008’
II18--Universitat Jaume I
21
Consulta de datos
SELECT DISTINCT codpostal
TABLA CLIENTES
FROM clientes;
CODCLI NOMBRE
DIRECCION
CODPOSTAL CODPUE
20
13
12
27
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘José Pérez’
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
‘1400’
‘1456’
‘1456’
RESULTADO
CODPOSTAL
‘13004’
‘15008’
‘12003’
II18--Universitat Jaume I
22
11
Consulta de datos
SELECT DISTINCT codpue
TABLA CLIENTES
FROM clientes
CODCLI NOMBRE
WHERE codcli < 25;
20
‘José Pérez’
13
12
27
‘María Gil’
‘Luis Sorlí’
‘Laura Puig’
DIRECCION
CODPOSTAL CODPUE
‘Barcelona 2’
‘Peñas 5’
‘Prim 7’
‘Peñas 24’
‘13004’
‘15008’
‘12003’
‘15008’
‘1400’
‘1456’
‘1456’
RESULTADO
CODPUE
‘1400’
‘1456’
NULL
II18--Universitat Jaume I
23
Libro de la asignatura
• SQL EN LA PRÁCTICA
Gregorio Quintana, Mercedes Marqués, José Aliaga, María José Aramburu
Se encuentra en reprografía y en la página web de la asignatura.
II18--Universitat Jaume I
24
12
Descargar