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