TUTORIAL: Introducción al entorno SQL*Plus de Oracle

Anuncio
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
Descargar