Anda di halaman 1dari 9

ESCRIBIENDO CONSULTAS SIMPLES Y SQL*PLUS

Una consulta (query) es una solicitud de informacin de las tablas de la base de datos. Las consultas simples son aquellas que obtienen informacin de una nica tabla. La base de la consulta es la clusula SELECT. La forma simple de una consulta es: SELECT <column_name> FROM table_name; Donde column_name especifica las columnas con los alias o, en el caso de que sean todas, el smbolo *. Si los alias contienen espacios en blanco, deben estar entre comillas dobles (). Tambin estar entre comillas dobles si no queremos que se especifique en maysculas. La palabra clave DISTINCT asegura que la consulta no devolver filas duplicadas. El DISTINCT se aplica a toda la fila, y no a la primera columna. SELECT DISTINCT deptno, salary FROM emp;

Tabla dual
La tabla dual est disponible para todos los usuarios de la base de datos. Tiene una columna y una fila. La tabla DUAL es usada para seleccionar variables del sistema o para evaluar una expresin. SELECT sysdate, user FROM dual;

Limitando las filas


La clusula WHERE es usada para limitar el nmero de filas tratadas. Oracle trata los smbolos _ y % como patrones si la condicin es LIKE. El smbolo _ es substituido por un carcter, mientras que % es substituido por cualquier cadena de caracteres. Si queremos buscar por el smbolo _, utilizaremos la clusula ESCAPE. SELECT * FROM emp WHERE ename LIKE 'A\_%' ESCAPE /;

Para encontrar los valores a nulo se debe utilizar la condicin IS NULL. Los operadores =, !=, <, >, etc. No funcionan cuando se realizan comparaciones con NULL. SELECT * FROM emp WHERE comm IS NULL;

Ordenar filas
Una consulta puede incluir la clusula ORDER BY para ordenar las filas del resultado basndonos en los datos de las columnas. Sin esta clusula, no existe ninguna garanta de que las filas tengan un orden determinado. El orden de las filas ser ascendente. Si queremos un orden descendente, debemos especificarlo con la palabra reservada DESC. SELECT * FROM emp WHERE deptno = 30 ORDER BY ename; Nota: Se pueden utilizar alias en el ORDER BY SELECT ename "Employee", SALARY "Salary" FROM emp WHERE deptno = 30 ORDER BY salary desc, "Employee"; Si utilizamos la palabra clave DISTINCT en la SELECT, slo podemos utilizar en el ORDER aquellas columnas listadas en la SELECT. Si existen operadores en la SELECT, el ORDER BY tambin debe tenerlos. Fallara la consulta: SELECT DISTINCT 'Name: ' || ename "Employee", SALARY "Salary" FROM emp WHERE deptno = 30 ORDER BY deptno DESC, "Employee" Adems de por el nombre de columna o el alias, se puede especificar el orden que ocupa la columna en la consulta. Esto es muy til si las expresiones del SELECT son muy largas. Tambin son tiles si realizamos operaciones de unin, interseccin, etc con la consulta. SELECT 'Name: ' || ename "Employee", SALARY "Salary" FROM emp WHERE deptno = 30 ORDER BY 2, 1

SQL *Plus
SQL*Plus est disponible en todas las plataforma en las que se ejecuta Oracle. Se sirve con el cliente de Oracle. Tambin est presente en el servidor. Se puede ejecutar cualquier comando de base de datos o bloque PL/SQL en SQL*Plus (siempre que se disponga de permisos). Conceptos: 1. Command. Una instruccin que se ejecuta en SQL*Plus. Puede ser un comando SQL*Plus o un comando SQL. 2. Block. Unidad lgica de SQL o PLSQL 3. Table. Unidad bsica de almacenamiento en Oracle 4. Query. Sentencia SELECT que recupera informacin de una o ms tablas o vistas 5. Query results. Tambin conocido como conjunto resultado. Datos que devuelve una consulta 6. Report. Resultados formateados de alguna forma ms legible

SQL *Plus bsico


Cuando se inicia SQL*Plus, se abre una ventana que nos pide el usuario, la contrasea y la cadena de conexin. La cadena de conexin es el alias de la base de datos. Si omitimos esta cadena, SQL*Plus intenta conectarse a la base de datos local definida en la variable ORACLE_SID. Una vez entramos en el programa podemos cambiar de conexin ejecutando: CONNECT USERNAME/PASSWORD@CONNECTSTRING; Si omitimos la contrasea, nos aparecer una contrasea donde se nos solicitar. Si omitimos la cadena de conexin, se intentar conectar a una base de datos local. Para salir de SQL*Plus, debemos utilizar el comando EXIT. En plataformas donde es necesario devolver un cdigo, utilizaremos la instruccin QUIT. EXIT y QUIT son sinnimos.

Entrar y ejecutar comandos


El prompt por defect ser SQL> Si queremos cambiar el prompt, utilizaremos la instruccin SET SQLPROMPT.

Un comando puede ser introducido en mltiples lneas, y no son sensibles a caja. Siempre tendremos en el buffer de Oracle el ltimo comando ejecutado. El buffer puede ser editado o guardado en un fichero. Se puede finalizar un comando de diferentes formas: 1. Con un punto y coma (;). El comando est completo y debe ejecutarse 2. Barra en una lnea vaca (/). Se ejecuta el comando del buffer, Tambin se utiliza para ejecutar un PL/SQL 3. Lnea en blanco. El comando es almacenado en el buffer Nota: Slo los comandos SQL y PL/SQL son almacenados en el buffer. Los comandos SQL*Plus no se almacenan El smbolo de resta es utilizado para indocar que se contina una lnea: La instruccin siguiente fallar, ya que entiende el como una continuacin y no como una resta SQL> SELECT 800 > 400 FROM DUAL; SELECT 800 400 FROM DUAL En cambio funcionar: SQL> SELECT 800 2 - 400 FROM DUAL; 800-400 ---------400

Editar el buffer SQL*Plus


Hay 2 formas de editar el buffer: 1. Usar el comando EDIT para pasar el buffer a un fichero. El nombre por defecto del fichero ser afiedt.buf. Para definir el editor, por ejemplo poner el notepad, utilizaremos: DEFINE_EDITOR = NOTEPAD 2. Usar los comando de edicin SQL. Especificando el nmero de lnea, modificaremos la correspondiente lnea del buffer.

Script Files
SQL*Plus provee de instrucciones tanto para guardar el buffer SQL en un fichero como para ejecutar instrucciones desde el propio fichero. Los SQL almacenados en un fichero son llamados scrips. Para guardar en el sistema operativo: SAVE <fichero> -- Por defecto no sobrescribe. Utilizar REPLACE para ello. La extensin por defecto ser sql Con EDIT <fichero> editaremos un fichero Con GET <fichero> llevamos el contenido de un fichero al buffer Con START <fichero> (o @ <fichero>) ejecutamos el fichero @@<fichero> dentro de un fichero ejecuta el fichero <fichero> dentro del directorio donde se est ejecutando Hay dos tipos de comentarios que podemos utilizar en el fichero: REMARKS (REM) o /* */ Las lneas marcadas con REM no aparecern cuando se ejecute el cdigo. Las marcadas con /* */ s

Personalizacin
Muchos de los parmetros de SQL*Plus se pueden personalizar mediante la instruccin SET. Se puede guardar la personalizacin actual con la instruccin: STORE SET <fichero>.

Producir una salida ms legible


Con SQL*Plus es posible: - Definir el tamao de una columna - Visualizar cabeceras con sentido - Formatear nmeros y fechas - Envolver la informacin Con la instruccin siguiente comprobamos el estado del tamao de pantalla SQL> show pagesize lines

Con la siguiente, modificamos dichos tamaos SQL> SET PAGESIZE 78 LINESIZE 55 Deshabilitamos la respuesta de la Quero, donde nos dice el nmero de filas mostradas SQL> SET FEEDBACK OFF Renombramos una columna. La barra vertical hace que el nombre de la columna aparezca en dos filas COLUMN ENAME HEADING "Employee|Name" Cambiar la cabecera y el formato: COLUMN sal FORMAT "$9,999" HEADING "Salary" Copiar un formato de otra columna COLUMN COMM LIKE SAL HEADING "Incentive".

Aceptar valores en tiempo de ejecucin


Con el & le indicamos que lo que viene a continuacin es una variable. Si ejecutamos un fichero con el texto: SELECT empno, ename FROM emp WHERE deptno = &dept; Nos pedir el valor de dept: Enter value for dept: 10 Tambin se puede definir el valor antes: SQL> DEFINE dept = 10 SQL> l 1 SELECT empno, ename 2 FROM emp 3* WHERE deptno = &dept SQL> / Si tenemos un fichero llamado query1 con el texto SELECT empid, ename FROM emp WHERE deptno = &1 AND empid = &2;

Podemos ejecutarlo: SQL> START query1 10 732 Con ACCEPT podemos asignar un texto a una solicitud de valor: ACCEPT DEPTNUMB NUMBER PROMPT "Enter Department Number: "