Prácticas de Bases de Datos 1. PRÁCTICA 1. Curso 2010-11 Ingeniería Informática. Escula de Ingeniería (sede Bellaterra). UAB Profesores: Marc Vivet Consultas: Marc Vivet QC-1054 Jueves. 11:30-12:30 Práctica 1: CONSULTAS SQL A UNA BASE DE DATOS DE ORACLE Objetivos: Documentación necessària: Documentación addicional: Guión: 1. Gestión de bases de datos: Hacer una aproximación a la tecnología cliente-servidor utilizando ORACLE. 2. Introducción al cliente SQL*Plus d'oracle. 3. Manipulación de BD: instrucciones SQL utilizando ORACLE. 1. Presentaciones d ORACLE. 2. Lista de Comandos descritas en la práctica. 3. Guía de SQL SQL*Plus User's Guide and Reference. SQL*Plus Quick Reference Directorio raíz on-line Oracle: http://saturn.uab.es/ Oracle Master Index i glossari: http://saturn.uab.es/mix.920/a96625/toc.htm 1. Instrucciones y funciones SQL 2. Familiarización con el entorno SQL*Plus 3. Familiarización con el entorno SQL Developer 4. Edición de consultas SQL en el entorno SQL* Plus y SQL Developer PRÓXIMAS ENTREGAS: Fecha Entrega 4/10/2010 - Fichero consultes.sql Al final del enunciado encontraréis un apartado donde se especifica cómo han de ser los ficheros que debéis entregar. Nota: Mirad los apuntes de SQL de la clase de problemas, disponible en formato.pdf en la página web de la asignatura i en Caront. 1
1. Instrucciones y funciones SQL En esta práctica haréis consultes SQL a la base de datos ESEI, la que utilizáis en la clase de problemas. Son las que nos permiten hacer consultas sobre la base de datos. Ya se han comentado en la clase de problemas. Recordad que el prototipo de consulta para la obtención de tuplas de las tablas es la cláusula SELECT: SELECT [atributos] FROM [tablas] WHERE [condiciones] GROUP BY [atributos] HAVING [condiciones] Como ya sabéis, cada uno de los atributos de una tabla lleva asociado un nombre y un tipo. Los tipos de atributo de Oracle son: Tipus de dato Descripción VARCHAR2(mida) Carácter de longitud variable, con longitud máxima mida. La longitud mínima es 1 i la máxima 4000. CHAR(mida) Carácter de longitud fija, con longitud mida. La longitud mínima es 1 i la máxima 2000. NUMBER(p,s) Valor numérico que tiene una precisión máxima p con un rango de 1 a 38 y una escala máxima de s. DATE Valores de fecha y hora entre el 1 de enero de 4712a.C. y el 31 de diciembre de 9999 d.c. Oracle lo guarda como valor numérico, proporcionando funciones de conversión a formato carácter. LONG Tipo carácter de longitud variable y hasta 2 GBytes. CLOB Tipo carácter single-byte hasta a 4 GBytes RAW Datos binarios con longitud expresada según la medida obligatoriamente especificada, hasta 2000. BLOB Tipo binario de longitud variable, hasta 2 GBytes. BFILE Tipo binario almacenado en un fichero externo, hasta 4 GBytes. Para facilitar la manipulación de los datos, SQL incorpora un conjunto de funciones de tratamiento. Podéis encontrar información completa de cada función a Oracle Master Index. Aquí se presentan algunas de estas funciones con su resultado. Funciones numéricas: Funció Resultat ROUND(45.926,2) 45.93 TRUNC(45.926,2) 45.92 MOD(1600,300) 100 2
Funciones de carácter: Función Resultado LOWER('Curso SQL') curso sql UPPER('Curso SQL') CURSO SQL INITCAP('Curso SQL') Curso Sql CONCAT('Bases','De BasesDe Dades Dades') SUBSTR('String',1,3) Str INSTR('String','r') 3 LPAD(salari,10,'*') ******4500 TRIM('B' FROM 'Bases') ases Funciones de conversión: Función TO_CHAR(valor,format) TO_DATE(valor,format) TO_NUMBER(valor,format) Resultado Número o data -> Caràcter Caràcter -> Data Caràcter -> Número Función de manipulación de valores NULL: Función NVL(expressió, 'cadena') Resultado Si el valor de expressió es NULL, devuelve cadena. Si no, devuelve expressió. 2. Familiarización con el entorno SQL*Plus SQL*Plus es una herramienta que permite la realización de consultas sobre una base de datos Oracle. Par a una información más completa consultad SQL*Plus Quick Reference. En SQL*Plus podemos utilizar diversos grupos de instrucciones. En esta práctica trabajaremos con los siguientes tipos de instrucciones: a) Comandos de edición de SQL *Plus: nos permiten editar la última instrucción SQL ejecutada. La última instrucción SQL ejecutada por el intérprete se almacena en un búffer y existen un conjunto de comandos que se pueden utilizar para editar este búffer. Las que os serán más útiles están resumidas en el siguiente cuadro: Comando SQL*Plus CL[EAR] BUFF[ER] R[UN] ED[IT] Descripción Borra el búffer. Muestra y ejecuta el comando actual del búffer. Edita el búffer con el editor de texto. 3
b) Comandos de ficheros de SQL*Plus: Los utilizaremos para guardar y editar scripts. Es posible guardar scripts con comandos SQL i/o SQL*Plus en ficheros de texto para que sean leídos por SQL*Plus posteriormente. Por esto podemos utilizar los comandos de fichero que se resumen a continuación: Comando SQL*Plus SAV[E] filename.ext GET filename.ext @filename.ext START filename.ext ED[IT] filename.ext SPO[OL][filename.ext ON OFF] EXIT Descripció Guarda el contenido del búffer en el fichero filename.txt. Carga el contenido del script filename.ext al búffer. Ejecuta el script filename.ext. Ejecuta el script filename.ext. Edita el script filename.ext. Envia los resultados en pantalla al fichero filename.ext. Sale de la aplicación. Ejercicio 1: Abrid el SQL*Plus y ejecutad el script de creación de la base de datos ESEI (eseioracle.sq) que encontraréis en caronte.uab.cat. A continuación escribid las siguientes consultas como ejemplo (copiadlas y pegadlas directamente a la pantalla de comandos): 1. SELECT NOM, DNI FROM ALLUMNES; 2. SELECT NOM, DNI FROM PROFESSORS WHERE UPPER(DEPARTAMENT) like INFORMATICA Por otro lado, la tabla DUAL es una tabla pública de ORACLE que se utiliza sólo para hacer comprobaciones de valores. Podéis utilizarla para comprobar el resultado que devuelve alguna de las funciones anteriores, por ejemplo: SELECT UPPER ( CadenA ) FROM DUAL; SELECT ROUND (3.141593,2) FROM DUAL; Ejercicio 2: Ahora utilizareis algunos de los comandos de edición de ficheros de SQL*Plus. Abrid un nuevo documento del bloc de notas y copiad todos estos códigos. Guardad el fichero en el disco duro como prova.sql y ejecutadlo desde la pantalla de comandos. Utilizad también la instrucción spool para guardar en un fichero el resultado que aparece por pantalla. (Recordad de indicar en el nombre del fichero la ruta donde hay que guardar la salida, por ejemplo D:\Base de Dades\prova.txt ). Abrid el fichero que habéis creado desde un editor de texto y mirad qué hay. 4
3. Familiarización con el entorno SQL Developer El entorno SQL Developer os permite hacer lo mismo que habéis hecho con SQL*Plus de una manera más cómoda. En las figuras 1 y 2 teniu dos capturas de pantalla del SQL Developer SQLDeveloper es una herramienta que se puede descargar gratuitament de la página web de Oracle (www.oracle.com) y que os será de ayuda para el resto de sesiones. En los laboratorios tenéis instalado este software, y en las figuras 1 y 2 podéis ver un par de pantallas par ayudaros a empezar a trabajar en este entorno. Figura 1. Pantalla principal Oracle SQL developer y funciones. 5
Figura 2. Pantalla principal Oracle SQL developer y funciones (2). La parte de la izquierda os permite seleccionar la conexión con la que queréis trabajar. Desplegando los menús podéis acceder a las tablas. La parte de la derecha la tenéis dividida en tres sectores. El primer os permite editar consultas SQL que podéis ejecutar haciendo clic al botón del triángulo verde. En la parte de abajo aparecen los resultados. Finalmente, en la parte inferior aparecerán los posibles warnings o errores de interpretación. Ejercicio 3: Abrid el SQL Developer y seleccionad la base de datos ESEI que habéis utilizado antes desde SQL*Plus. Escribid como ejemplo algunas de las consultas del ejercicio 1. Después intentad acceder a las tablas y a sus contenidos. 3. Edición de consultas SQL Utilizando SQL Developer, entorno de Oracle, escribid las siguientes consultas, teniendo en cuenta las consideraciones que se os den. Debéis entregar al final de la sesión los códigos de estas consultas siguiendo las instrucciones que se dan al final de este documento. 1) Nombre y apellidos de los alumnos de la comarca de la Garrotxa. 6
2) Nombre y apellidos de todos los profesores del Departament d Informàtica con el primer apellido que empiece por la letra V, en orden inverso de apellidos. Tened en cuenta que la inicial de los apellidos puede estar en mayúsula o en minúscula. 3) DNI, nombre y apellidos de alumnos que se hayan matriculado en asignaturas con código mayor que 28000. 4) DNI, nombre, código y semestre de las asignaturas de tercer curso, ordenadas por semestre y código. 5) Número de asignaturas obligatorias de cuarto curso. 6) Nota máxima, mínima y promedio de las notas de primera convocatoria de la asignatura Gràfics per Computador 2 durante el curso 2010-11. 7) Número de alumnos matriculados en Bases de Dades 2 el curso 2010-11. 8) Nombre y apellidos de los alumnos que se han matriculado en alguna de las asignaturas que se ha matriculat Pau Vázquez durante el curso 2010-11. Esta consulta la haréis utilitzando una subconsulta, es decir, haciendo una consulta sobre otra consulta. a. Escribid primero el código correspondiente a la siguiente consulta: Asignaturas en que se ha matriculado Pau Vázquez durante el curso 2010-11. b. Haced ahora la consulta utilizando el retorno de (a.). Es decir, buscad los alumnos que se han matriculado en asignaturas que pertenezcan al conjunto de asignaturas retornadas por (a.). 9) Nombre y apellidos de los alumnos que durante el curso 2009-10 se han matriculado en más de 7 asignaturas. Descripción de los ficheros que se han de entregar - Fichero consultes.sql Escribid los códigos SQL de las consultas de la tercera parte de la práctica y entregadlos en un fichero denominado consultes.sql siguiendo el siguiente formato: /* grupo i subgrupo Nombres */ /* Consulta N1 */ SELECT FROM ;.. /* Consulta N5 */ SELECT ; 7
(N1..N5 han d indicar el número correspondiente de la consulta escogida) 8