3º Ingeniero Técnico en Informática de Sistemas Asignatura: Fundamentos de Bases de Datos Curso: 2006/7 PRÁCTICA T1. El entorno SQL*Plus de Oracle Objetivos • Adquirir destreza en el uso de las capacidades ofrecidas por el entorno SQL*Plus de Oracle Modalidad: laboratorio cerrado (tutorial) Contenidos SQL*Plus es la interfaz de usuario interactiva para el SGBD Oracle que se empleará para la escritura, depuración y ejecución de sentencias SQL de definición, consulta y manipulación de datos almacenados en la base de datos (prácticas B1, B2, T2 y B3). Esta práctica consiste en la exposición de las características básicas de SQL*Plus, y la realización por parte de los alumnos de una serie de ejemplos facilitados por la profesora, con el objetivo de ejercitar los conceptos conforme van siendo explicados. Más concretamente, se describe y practica el uso de los comandos y variables del entorno SQL*Plus, cómo conectarse a una determinada cuenta de usuario de la base de datos, cómo escribir, depurar, ejecutar y almacenar sentencias SQL, cómo dar formato a los resultados para su correcta visualización, cómo construir y ejecutar scripts de base de datos, etc. El • • • entorno de prácticas Servidor NT: SGBDR Oracle9i (Release 9.2.0.1.0) Intranet: SQL*Net por encima de TCP/IP Equipos Cliente de Oracle sobre Windows (laboratorios de prácticas) Características • • de SQL*Plus Interfaz de usuario interactiva para el SGBD Oracle Permite: - Escritura de sentencias de manipulación y definición de datos - Depuración de dichas sentencias - Visualización de los resultados en pantalla (o su volcado a un fichero de texto) Es posible dar formato (presentación) al resultado de una consulta Y consultar la ayuda en línea Conexión con la Base de Datos desde SQL*Plus • Autenticación del usuario: usuario (cuenta de BD, login) y contraseña (password) • Identificación de la Base de Datos mediante la cadena de host (cadena de conexión, connect string) que incluye los nombres del equipo servidor, protocolo de comunicación y base de datos - Para la conexión desde los laboratorios, utilizaremos la cadena de conexión ‘orcl92’ - Si se trabaja con una base de datos local (Personal Oracle), no se necesita cadena de host (se deja en blanco) • Formas de conexión a una cuenta de la base de datos: - Al iniciar SQL*Plus (ventana ‘Conectar’), - Desde dentro de SQL*Plus: connect <cuenta>/<contraseña>@<cadena-host> Detección y corrección de errores: omisión de la contraseña o de la cadena de host • Cambio de contraseña de un usuario (información almacenada en el Diccionario de Datos) ALTER USER fbdsXXX IDENTIFIED BY nueva_contraseña ; (sentencia LDD) Utilice esta sentencia para modificar su clave de acceso a la base de datos; cambie fbdsXXX por su nombre de grupo Curso 2005/6. 3º ITI Sistemas. Fundamentos de Bases de Datos. Práctica T1. El entorno SQL*Plus de Oracle- 1/4 Sentencias SQL en SQL*Plus • El prompt tiene la apariencia siguiente: SQL> • Se escribirán en SQL de Oracle (dialecto o implementación del estándar SQL-92) - PL/SQL es una extensión del SQL de Oracle que incluye sentencias de control (IF..THEN..ELSE, iteraciones, etc.) • Una sentencia SQL puede constar de varias líneas para mayor legibilidad (un retorno de carro (ENTER) no acaba la sentencia, sino que inicia una nueva línea en la misma) • Las sentencias SQL terminan con un ‘;’ (si tras él se pulsa ENTER, la sentencia se evaluará) • El sistema almacena la consulta en un búfer, que es un fichero (de texto) que se llama afiedt.buf y se guarda en el directorio actual de trabajo • El búfer siempre contiene la última sentencia SQL ejecutada - Observe que tras la sentencia no aparece el carácter ‘;’ sino ‘/’ (que es un comando del SQL*Plus, explicado más abajo) - Para visualizar el contenido del búfer puede invocarse al editor, mediante el comando EDIT de SQL*Plus (explicado más abajo) Si surge el error ‘no es posible crear el fichero de seguridad afiedt.buf’ (ya sea en la unidad C:\ o en F:\), significa que no tiene permiso de escritura sobre dicho directorio de la unidad Por tanto, debe establecer el directorio de trabajo actual en una unidad sobre la que tenga permiso de escritura, como la unidad D:\ Para ello, en la ventana de SQL*Plus, intentar Abrir (opción de menú) un fichero ubicado ahí (en D:\), pero Cancelar la operación al final; así, dicho directorio queda como activo (o actual) Pruebe las siguientes sentencias. Si el sistema encuentra algún error, trate de corregirlo utilizando el búfer y los comandos propios del SQL*Plus -- Esto es una línea de comentario REM Esto es otra línea de comentario SELECT * FROM CASARURAL; SELECT C.nombre, E.nombre FROM CASARURAL C, EMPLEADO E WHERE C.idcasa = E.idcasa ORDER BY C.nombre, E.nombre; -- Crear una tabla: sustituya XX por su número de grupo: CREATE TABLE GRUPO_FBDSXXX ( integrantes NUMBER(1) CHECK integrantes IN (1, 2), alumno1 VARCHAR(30) NOT NULL, alumno2 VARCHAR(30), prac_actual CHAR(2) NOT NULL CHECK prac IN (‘T1’,‘B1’,‘B2’,‘T2’,‘B3’) ); -- Introduzca una fila con datos reales: INSERT INTO GRUPO_FBDSXXX VALUES (<número personas>, <un nombre>, <otro nombre o null>, <práctica>); • Cancelación de la ejecución de una consulta: pulsando las teclas CONTROL+C • Visualización del contenido de las vistas del Diccionario de Datos (en Oracle se llama así al Catálogo): ALL_TABLES, ALL_USERS, ALL_VIEWS, TAB, TABS(≡USER_TABLES), ... Pruebe a ver el contenido de las vistas anteriores Curso 2005/6. 3º ITI Sistemas. Fundamentos de Bases de Datos. Práctica T1. El entorno SQL*Plus de Oracle- 2/4 Comentario: Preparado para que salga el error de que faltan los paréntesis que deben encerrar el CHECK Comentario: Preparado para que salga el error de que no se usa el nombre de columna correcto prac_actual Comentario: SELECT table_name FROM ALL_TABLES WHERE owner = ‘CASASRURALES’; Comandos propios del entorno SQL*Plus • No son sentencias SQL, por eso no necesitan finalizar con ‘;’ • DESC[RIBE] <nombre_tabla> - DESCRIBE, o abreviado DESC, muestra información sobre las columnas de la tabla denominada <nombre_tabla>, es decir, tipo de datos, longitud, si admite el nulo... Pruebe a ejecutar este comando con las tablas CASARURAL, HABITACION y TIPOCTIVIDAD • EDIT - Invoca el editor de textos (por defecto el Bloc de Notas, Notepad) con el contenido del búfer y permite su modificación - Cuando se invoca EDIT desde SQL*Plus, mientras que no se abandona la edición (se sale del editor grabando o descartando los cambios), la sesión SQL*Plus permanece inactiva o colgada (no es posible ejecutar ninguna sentencia SQL). Por tanto, si se desea trabajar simultáneamente con la sesión SQL*Plus y el editor, es necesario abrir este último desde fuera del entorno SQL*Plus • L[IST] muestra el contenido del búfer • R[UN] - Muestra y ejecuta el contenido del búfer (sentencia SQL). Este comando permite ejecutar repetidamente la sentencia contenida en el búfer • / - Ejecuta el contenido del búfer. También permite ejecutar repetidamente la sentencia contenida en el búfer. A diferencia de RUN, no muestra previamente la sentencia • EDIT <nombre_fichero.extensión> - Abre el editor Notepad con el contenido del fichero indicado - Si no se indica extensión, por defecto se asume ‘.sql’ • SAVE <nombre_fichero.extensión>[REP[LACE]] - Guarda el contenido del búfer en el fichero indicado, dentro del directorio de trabajo actual. Si no se indica extensión, por defecto se toma ‘.sql’ - Si el fichero ya existe y se desea sobrescribirlo es necesario incluir REPLACE (o abreviado REP) • STA[RT] <nombre_fichero.extensión> - Ejecuta el contenido del fichero indicado (que debe ser un fichero script (o guión) de base de datos, es decir, un fichero de texto que contiene sentencias SQL) - Si no se indica extensión, por defecto se asume ‘.sql’ • GET <nombre_fichero.extensión > - Carga en el búfer el contenido del fichero indicado (pero no lo ejecuta) - Si no se indica extensión, por defecto se asume ‘.sql’ • SPO[OL] <nombre_fichero.extensión>... SPOOL OFF - Crea un fichero con el nombre indicado en el que, a partir de ese momento, se irá almacenando todo lo que vaya apareciendo por pantalla (eco): sentencias, resultados, mensajes de error... - Si no se indica extensión para el fichero, por defecto se toma ‘.lst’ - El eco finaliza cuando se escribe SPOOL OFF • EXIT (o QUIT) Finaliza la sesión de trabajo y cierra el entorno SQL*Plus - Cerrar la ventana de SQL*Plus sin haber ejecutado EXIT o QUIT finaliza la sesión de igual forma que si hubiera ocurrido un error Curso 2005/6. 3º ITI Sistemas. Fundamentos de Bases de Datos. Práctica T1. El entorno SQL*Plus de Oracle- 3/4 Comentario: C:/ORANT/BIN Comandos SQL*Plus de formato de visualización de los datos • SHOW ALL muestra por pantalla el valor actual de las variables del entorno SQL*Plus • SET PAGES[IZE] <nº de filas> - Nº de líneas (del resultado de una consulta) mostradas por pantalla antes de volver a imprimir los nombres de las columnas de nuevo. Por defecto suele ser 24 - No tiene efecto si el PAUSE no está activo (ON) • SET PAU[SE] ON y SET PAU[SE] OFF - Para el scroll cuando alcanza el PAGESIZE activo, y espera un ENTER para continuar (para mostrar las siguientes PAGESIZE filas). Por defecto está OFF • SET LIN[ESIZE] <nº> - Establece la máxima longitud de una línea en pantalla. Por defecto suele ser 100 • COLUMN <nombre_columna> FORMAT <formato> - COLUMN <nombre_columna> FORMAT An Visualiza una columna de tipo CHAR o VARCHAR2 con una anchura de n caracteres alfanuméricos - COLUMN <nombre_columna> FORMAT 999,999.999 Visualiza una columna de tipo NUMBER con el formato indicado, donde cada 9 significa ‘cualquier dígito del 0 al 9’. - COLUMN <nombre_columna> DEFAULT Establece el formato por defecto para la columna indicada - COLUMN <nombre_columna> CLEAR Elimina el formato para la columna indicada - COLUMN <nombre_columna> Muestra el formato actual establecido para la columna indicada Comentario: Poner a 10 y hacer SELECT * FROM ACTIVIDAD; Más información en el manual de referencia rápida de SQL*Plus (Quick Reference) Pruebe a dar formato a las columnas del resultado de esta sentencia: SELECT C.nombre, H.idhabitacion, H.numcamas, H.precio FROM CASARURAL C, HABITACION H WHERE C.idcasa = H.idcasa AND C.idcasa IN (‘C01’, ‘C02’); Importante: los formatos establecidos sólo permanecen durante la sesión SQL*Plus Cómo proceder al resolver las consultas de las prácticas • Escribir las sentencias SQL (SELECT, INSERT, DELETE, UPDATE...) en el entorno SQL*Plus • Ejecutarlas con ‘;’, RUN o ‘/’ • Depurarlas hasta que funcionen correctamente, utilizando el editor del búfer y ejecutándolas tantas veces como sea necesario • Una vez que las sentencias sean correctas, guardarlas en un fichero en el directorio de trabajo, denominado por ejemplo pr_nn.sql (donde pr es el identificador de la práctica (b1, b2, b3...) y nn es el número del ejercicio), mediante el comando SAVE pr_nn • A partir de ese momento, las sentencias podrán ser ejecutadas mediante START pr_nn, y editadas con EDIT pr_nn • Para elaborar la documentación, puede utilizarse SPOOL para almacenar en un fichero tanto el enunciado de las sentencias correspondientes a cada ejercicio como los resultados obtenidos con la ejecución de las mismas. El contenido de ese fichero puede luego ser editado (con Word, por ejemplo) con el fin de dotarlo del formato de presentación adecuado para su perfecta lectura y comprensión, hasta completar el informe de la práctica. Curso 2005/6. 3º ITI Sistemas. Fundamentos de Bases de Datos. Práctica T1. El entorno SQL*Plus de Oracle- 4/4 Comentario: nombre Æ A20 ; idhabitacion Æ A2; numcamas Æ 9; precio Æ 99.99