Prácticas de Bases de Datos María José Aramburu Cabo Email: aramburu@icc.uji.es 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
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 SQL Sistema de Bases de Datos Relacional SGBDR 4
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
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
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% todo esto es una tabla? 1. Bombilla X54 12 u. 2,10 25,2 2. Tubo neón FG 1 u. 18 18 3. Enchufe SW56 20 u. 1,90 38 Total : 81,2 II18--Universitat Jaume I 10
...en el Modelo Relacional... en una tabla no pero en dos sí!! Cabecera de factura Líneas de factura FACTURAS LINEAS_FAC codfac fecha... codfac linea cant... 1437 25/2/02... 1437 1 12... 1437 2 1... II18--Universitat Jaume I 11 Modelo Relacional: La BD de prácticas TABLA CLIENTES CODCLI NUMBER(5) NOMBRE VARCHAR2(50) DIRECCION VARCHAR2(50) CODPOSTAL VARCHAR2(5) CODPUE VARCHAR2(5) TABLA LINEAS FAC CODFAC NUMBER(6) LINEA NUMBER(2) CANT NUMBER(5) CODART VARCHAR2(8) PRECIO NUMBER(7,2) DTO NUMBER(2) TABLA FACTURAS CODFAC NUMBER(6) FECHA DATE CODCLI NUMBER(5) CODVEN NUMBER(5) IVA NUMBER(2) DTO NUMBER(2) TABLA PUEBLOS CODPUE VARCHAR2(5) NOMBRE VARCHAR2(40) CODPRO VARCHAR2(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 VENDEDORES CODVEN NUMBER(5) NOMBRE VARCHAR2(50) DIRECCION VARCHAR2(50) CODPOSTAL VARCHAR2(5) CODPUE VARCHAR2(5) CODJEFE NUMBER(5) 12
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
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
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
Consulta de datos Algunas consultas sencillas: SELECT * FROM clientes; TABLA CLIENTES CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 RESULTADO CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 II18--Universitat Jaume I 19 Consulta de datos SELECT nombre, codpostal FROM clientes; RESULTADO NOMBRE CODPOSTAL José Pérez 13004 María Gil 15008 Luis Sorlí 12003 Laura Puig 15008 TABLA CLIENTES CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 II18--Universitat Jaume I 20
Consulta de datos SELECT codpostal FROM clientes; TABLA CLIENTES CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 RESULTADO CODPOSTAL 13004 15008 12003 15008 II18--Universitat Jaume I 21 Consulta de datos SELECT DISTINCT codpostal FROM clientes; RESULTADO CODPOSTAL 13004 15008 12003 TABLA CLIENTES CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 II18--Universitat Jaume I 22
Consulta de datos SELECT DISTINCT codpue FROM clientes WHERE codcli < 25; RESULTADO CODPUE 1400 1456 NULL TABLA CLIENTES CODCLI NOMBRE DIRECCION CODPOSTAL CODPUE 20 José Pérez Barcelona 2 13004 1400 13 María Gil Peñas 5 15008 1456 12 Luis Sorlí Prim 7 12003 27 Laura Puig Peñas 24 15008 1456 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