INTRODUCCIÓN A SQL *PLUS - Inicio | KybeleDBD-LADE]IntroduccionSQLPlus.pdf · Edición de comandos...
Transcript of INTRODUCCIÓN A SQL *PLUS - Inicio | KybeleDBD-LADE]IntroduccionSQLPlus.pdf · Edición de comandos...
INTRODUCCIÓN A SQL *PLUS
Diseño de Bases de Datos y
Seguridad en la Información
© 2008 Grupo Kybele2
Gennick, J. “Oracle SQL*Plus: The Definitive Guide” (2ª
edición), O’Reilly, 2004.
SQL*Plus User's Guide and Reference
Release 9.2 (ORACLE.COM)
Abramson, Abbey y Corey, “Oracle Database 10g: A Beginner's
Guide”, McGrawHill, 2006
Bibliografía Complementaria
© 2008 Grupo Kybele3
1. Introducción
a) Conexión / Desconexión
b) Comandos Básicos de SQL*Plus
2. Uso del Buffer
3. Trabajar con ficheros
4. Interacción con el usuario
5. Salida de SQL*Plus
Índice
© 2008 Grupo Kybele44
Entorno de Desarrollo
SQL*Plus es un entorno de desarrollo
Conexión a Bases de Datos
Elaborar y probar sentencias SQL
Soporta su propio lenguaje de comandos
Gestionar Bases de Datos
Escribir scripts
Generar informes básicos
© 2008 Grupo Kybele55
Conexión a SQL*Plus
Arrancar SQL*Plus
Línea de comandos
Accesos Directos a la aplicación GUI
Nombre/Usuario/SID
Escritura de comandos
No distingue mayúsculas de minúsculas
Las sentencias SQL acaban con ‘;’
Los comandos de SQL*Plus no necesitan símbolo de fin.
Utilizar ‘-’ para un comando de varias líneas
© 2008 Grupo Kybele66
Comando CONNECT (SQL*Plus)
CONNECT usuario/password@SID
Cambiar el usuario
Cambiar la BD a la que nos conectamos
SHOW USER
Comprobar el usuario actual
© 2008 Grupo Kybele77
Salir/Desconectarse de SQL*Plus
DISCONNECT
Cierra la conexión, pero mantiene abierta la aplicación
EXIT
Termina la sesión
Todos los cambios pendientes realizados sobre la BD son comprometidos
Todos los cambios realizados sobre la sesión, se pierden◦ ejemplo: DEFINE _editor
© 2008 Grupo Kybele88
Comando DESCRIBE (SQL*Plus)
DESC[RIBE] nombre_tabla
Proporciona una descripción de la tabla (u
objeto)
Permite ver su estructura
© 2008 Grupo Kybele99
Sentencia SELECT (SQL)
Recuperar datos de una tabla
USER_TABLES
Tabla del diccionario de datos
información sobre la propia BD
© 2008 Grupo Kybele1010
DUAL – Tabla para trabajar con ORACLE
DUAL es una tabla con una única fila y una única
columna
Se utiliza para realizar pruebas, obtener resultados
…
© 2008 Grupo Kybele11
1. Introducción
a) Conexión / Desconexión
b) Comandos Básicos de SQL*Plus
2. Uso del Buffer
3. Trabajar con ficheros
4. Interacción con el usuario
5. Salida de SQL*Plus
Índice
© 2008 Grupo Kybele1212
Edición de comandos en SQL*Plus
Opciones
Utilizar el buffer de SQL*Plus
Utilizar cualquier otro editor de texto ASCII
Buffer SQL*Plus
Guarda sólo la última sentencia SQL (PL/SQL)
Editor de Texto
Es la solución recomendada
Se puede cambiar el editor por defecto
© 2008 Grupo Kybele1313
El buffer de SQL*Plus
‘L’ muestra el contenido del buffer
‘/’ ejecuta la sentencia que hay en el buffer
‘*’ señala la línea actual
© 2008 Grupo Kybele1414
Editar el contenido del Buffer
‘N’ cambiar línea actual
C[HANGE]/texto_anterior/texto_nuevo
modificar línea actual
© 2008 Grupo Kybele15
Otros comandos para trabajar con el Buffer
L Muestra el contenido del buffer SQL> L
L n Muestra el texto de la línea ‘n’ SQL> L 3
L * Muestra el texto de la línea actual SQL> L *
L x y Muestra las líneas X a Y SQL> L 10 18
a texto Añade texto al final de la línea actual SQL> a where nombre = ‘BD’
c/texto_ant/texto_nvo Sustituye en la línea actual texto_ant por
texto_nvo
SQL> c/*/nombre
c/texto Elimina texto de la línea actual SQL> c/titulacion,
I[NPUT] Añade una línea al buffer, de forma que se
pueda seguir escribiendo
SQL> I
DEL Borra la líne actual SQL> DEL
© 2008 Grupo Kybele1616
Comando EDIT (SQL*Plus)
ED[IT]
Invoca al editor de texto por
defecto del SO subyacente
Abre el editor, cargando el texto
del buffer
Al salir, el texto modificado queda en el buffer
Cambiar editor por defecto
Añadir esa entrada en
$ORACLE_HOME/sqlplus/admin/glogin.sql
© 2008 Grupo Kybele17
1. Introducción
a) Conexión / Desconexión
b) Comandos Básicos de SQL*Plus
2. Uso del Buffer
3. Trabajar con ficheros
4. Interacción con el usuario
5. Salida de SQL*Plus
Índice
© 2008 Grupo Kybele1818
Comandos de SQL*Plus: trabajar con ficheros
SAV[E] [FILE] fichero[.ext]
Opciones: [CRE[ATE]|REP[LACE]|APP[END]]
Guarda el contenido del buffer en ‘fichero.sql’
EDIT fichero
Abre el fichero ‘fichero.sql’ en el editor por
defecto
GET fichero
Carga en el buffer el contenido de ‘fichero.sql’
[Cambiar working directory]
© 2008 Grupo Kybele1919
Comandos de SQL*Plus: trabajar con ficheros
SPOOL fichero
Arranca el spooling: todo lo que aparece por
pantalla se vuelva en fichero
SPOOL
Muestra el nombre del fichero de salida
SPOOL OFF
Desactiva el spooling
© 2008 Grupo Kybele2020
Usar un editor externo en SQL*Plus
Editor externo
Opción más recomendable
La sesión del SQL*Plus permanece activa y
visible
Escribir el código en un fichero ‘.sql’
Ejecutar el fichero: @fichero.sql
© 2008 Grupo Kybele2121
Ejecutar scripts en SQL*Plus
START fichero
Recupera el fichero y ejecuta los comandos que
contiene
@fichero
Recupera el fichero y ejecuta los comandos que
contiene
Se pueden utilizar parámetros
@drop_table mitabla
© 2008 Grupo Kybele22
1. Introducción
a) Conexión / Desconexión
b) Comandos Básicos de SQL*Plus
2. Uso del Buffer
3. Trabajar con ficheros
4. Interacción con el usuario
5. Salida de SQL*Plus
Índice
© 2008 Grupo Kybele2323
Interacción con el usuario en SQL*Plus
Definir variables de usuario
Dar valores a las variables de usuario
Usar el comando DEFINE para dar valores
Pedir valores por pantalla
© 2008 Grupo Kybele2424
Variables de usuario
DEFINE variable definir una nueva variable
UNDEFINE variable eliminar la variable
DEFINE muestra todas las variables
login.sql creación de variables en cada sesión
© 2008 Grupo Kybele2525
Variables de sustitución
Una variable de sustitución es un nombre de variable
precedido por uno o dos ‘&’
Cuando el sistema encuentra una de estas variables,
ejecuta la sentencia reemplazándola por el valor asignado
a dicha variable.
Si no se le ha asignado un valor a la variable, éste se pide
por pantalla
© 2008 Grupo Kybele2626
Variables de sustitución
Se usa el operador && cuando no queremos que el
sistema pregunte varias veces por el valor para una
misma variable de sustitución
© 2008 Grupo Kybele2727
Pedir valores por pantalla
Con ACCEPT podemos pedir un valor por pantallaACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]
Si queremos mostrar un mensaje
por pantalla y asegurarnos de que
el usuario lo lea antes de continuar,
podemos usar el comando PAUSE
© 2008 Grupo Kybele28
1. Introducción
a) Conexión / Desconexión
b) Comandos Básicos de SQL*Plus
2. Uso del Buffer
3. Trabajar con ficheros
4. Interacción con el usuario
5. Salida de SQL*Plus
Índice
© 2008 Grupo Kybele2929
Salida de SQL*Plus
Justificación por defecto
A la izquierda: fechas y tipos carácter
A la derecha: tipos numéricos
Nombres de columnas
Mayúsculas por defecto
© 2008 Grupo Kybele3030
Salida de SQL*Plus: uso de alias
Cambiar el encabezado de una columna
Útil cuando se realizan cálculos
El alias se pone después del nombre de la columna
Opcionalmente se puede utilizar AS
Utilizar comillas dobles si incluye espacios, caracteres
especiales o se quiere asegurar el comportamiento de
may/min
© 2008 Grupo Kybele3131
Salida de SQL*Plus: concatenar columnas
Concatenar el valor de una o más columnas
Símbolo utilizado: ||
Crea una columna que es el resultado de concatenar
las columnas seleccionadas
© 2008 Grupo Kybele3232
Salida de SQL*Plus: uso de literales
Incluir literales en el resultado de una consulta
Al construir la consulta se incluye una expresión entre
comillas SIMPLES y se utiliza el operador ||
La expresión se incluye en la salida para cada una de
las filas que devuelve la consulta
© 2008 Grupo Kybele3333
Salida de SQL*Plus: comandos SET
SET COLSEP {“ “ | texto} Muestra un título y subtítulo en cada página
SET PAGES[IZE] {24 | n} Nº de líneas (del resultado de una consulta,
incluyendo los nombres de las columnas, las rayas de separación y las filas) mostradas por pantalla antes de volver a imprimir los nombres de las columnas. Por defecto son 24
No tiene efecto si el PAUSE no está activo (ON)
SET PAU[SE] {OFF | ON} Para el scroll cuando alcanza el PAGESIZE
activo, y espera un ENTER para continuar (para mostrar las siguientes PAGESIZE filas).
SET LIN[ESIZE] {80 | n} Establece la máxima longitud de una línea en
pantalla. Por defecto es 100
SET TERMOUT {ON | OFF} Salida por pantalla
SET UNDERLINE {‘texto’} Carácter utilizado para subrayar los
encabezados de columna
SET FEEDBACK {6 | n | OFF | ON} Mostrar número de filas devueltas o afectadas
por una sentencia SQL (definir umbral)
© 2008 Grupo Kybele3434
Salida de SQL*Plus: comandos de formato
COLUMN [opciones]
TITTLE [texto |OFF | ON]
Muestra un título en cada página
BTITTLE [texto | OFF | ON]
Muestra un subtítulo en cada página
© 2008 Grupo Kybele3535
Salida de SQL*Plus: COLUMN
CLE[AR] Elimina las opciones de formato previamente definidas para esta
columna
FOR[MAT] formato Cambia la forma en que se muestra la columna usando otro
modelo de formato
HEAD[ING] texto Define el encabezado para la columna (por defecto se muestra
el nombre de la columna)
Usar ‘|’ para incluir varias líneas
JUST[IFY] {left | center | right} Define el tipo de alineación de la columna
NUL[L] textoMensaje a mostrar en lugar de valores nulos
© 2008 Grupo Kybele3636
Salida de SQL*Plus: COLUMN (opciones de
formato)
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
COLUMN <nombre_columna> CLEAR
Elimina el formato para la columna indicada
COLUMN <nombre_columna>
Muestra el formato actual establecido para la columna
indicada
© 2008 Grupo Kybele3737
Salida de SQL*Plus
COLUMN <nombre_columna> FORMAT <formato>
COLUMN <nombre_columna> FORMAT AnVisualiza una columna de tipo CHAR o VARCHAR2 con una anchura
de n caracteres alfanuméricos
COLUMN <nombre_columna> FORMAT 999,999.999Visualiza una columna de tipo NUMBER con el formato indicado
COLUMN <nombre_columna> DEFAULTEstablece el formato por defecto para la columna indicada
COLUMN <nombre_columna> CLEARElimina el formato para la columna indicada
COLUMN <nombre_columna>Muestra el formato actual establecido para la columna indicada
Importante: los formatos
establecidos sólo permanecen
durante la sesión SQL*Plus
Si queremos que se mantengan · fichero glogin.sql
·directorio $ORACLE_HOME\sqlplus\admin
© 2008 Grupo Kybele3838
Creación de informes con SQL*Plus
1. Definir sentencia SELECT
2. Guardar en un fichero
3. Añadir comandos de formato antes de la
sentencia
4. Incluir carácter de terminación después de la
sentencia
5. [Eliminar opciones de formato después de la
sentencia]
6. Ejecutar el fichero
(START fichero.sql | @fichero.sql)
© 2008 Grupo Kybele3939
Creación de informes con SQL*Plus
SET PAGESIZE 37
SET LINESIZE60
SET FEEDBACK OFF
TTITLE 'Informe de Empleados'
BTITLE 'Confidential'
BREAK ON puesto
COLUMN puesto HEADING 'Puesto|Categoria' FORMAT A15
COLUMN nombre HEADING 'Empleado' FORMAT A15
COLUMN salario HEADING 'Salario' FORMAT 99999
REM ** Sentencia SELECT
SELECT puesto, nombre, salario
FROM empleados
WHERE salario < 3000
ORDER BY puesto, nombre
/
SET FEEDBACK ON
© 2008 Grupo Kybele4040
Utilizar Mensajes por pantalla
Paquete DBMS_OUPTUT
Ofrece algunas facilidades para la salida por pantalla
DBMS_OUTPUT.PUT_LINE (‘Mensaje’ || variable);
Activar con SET SERVEROUTPUT ON
© 2008 Grupo Kybele4141
SQL vs SQL*Plus
SQL
Un lenguaje
Estándar ANSI
Palabras clave no admiten
abreviatura
Las sentencias modifican las
tablas y los datos de la BD
Las sentencias van al buffer
Una o varias líneas van al
buffer cada vez.
Sin carácter de continuación
El carácter ‘;’ indica fin de
sentencia e invoca su
ejecución
SQL*Plus
Un entorno
Propio de ORACLE
Palabras clave admiten
abreviatura
Los comandos no permiten
manipular los datos de la BD
Los comandos NO se
guardan en el buffer
Una línea cada vez
Carácter ‘-’ indica
continuación de línea
No hay fin de sentencia