6_-consultas-simples-y-sqlplus
TRANSCRIPT
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 1/9
ESCRIBIENDO CONSULTAS SIMPLES Y SQL*PLUS
Una consulta (query) es una solicitud de información de las tablas dela base de datos. Las consultas simples son aquellas que obtieneninformación de una única tabla. La base de la consulta es la cláusulaSELECT.
La forma simple de una consulta es:
SELECT <column_name> FROM table_name;
Donde column_name especifica las columnas con los alias o, en elcaso de que sean todas, el símbolo *. Si los alias contienen espaciosen blanco, deben estar entre comillas dobles (“”). También estaráentre comillas dobles si no queremos que se especifique enmayúsculas.
La palabra clave DISTINCT asegura que la consulta no devolverá filasduplicadas. El DISTINCT se aplica a toda la fila, y no a la primeracolumna.
SELECT DISTINCT deptno, salary FROM emp;
Tabla dual
La tabla dual está disponible para todos los usuarios de la base dedatos. Tiene una columna y una fila. La tabla DUAL es usada paraseleccionar variables del sistema o para evaluar una expresión.
SELECT sysdate, user FROM dual;
Limitando las filas
La cláusula WHERE es usada para limitar el número de filas tratadas.
Oracle trata los símbolos _ y % como patrones si la condición esLIKE. El símbolo _ es substituido por un carácter, mientras que % essubstituido por cualquier cadena de caracteres.
Si queremos buscar por el símbolo _, utilizaremos la cláusulaESCAPE.
SELECT * FROM emp WHERE ename LIKE 'A\_%' ESCAPE ‘/’;
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 2/9
Para encontrar los valores a nulo se debe utilizar la condición ISNULL. Los operadores =, !=, <, >, etc. No funcionan cuando serealizan comparaciones con NULL.
SELECT * FROM emp WHERE comm IS NULL;
Ordenar filas
Una consulta puede incluir la cláusula ORDER BY para ordenar lasfilas del resultado basándonos en los datos de las columnas. Sin estacláusula, no existe ninguna garantía de que las filas tengan un ordendeterminado. El orden de las filas será ascendente. Si queremos unorden descendente, debemos especificarlo con la palabra reservadaDESC.
SELECT * FROM emp WHERE deptno = 30 ORDER BY ename;
Nota: Se pueden utilizar alias en el ORDER BY
SELECT ename "Employee", SALARY "Salary"FROM empWHERE deptno = 30ORDER BY salary desc, "Employee";
Si utilizamos la palabra clave DISTINCT en la SELECT, sólo podemosutilizar en el ORDER aquellas columnas listadas en la SELECT. Siexisten operadores en la SELECT, el ORDER BY también debetenerlos.
Fallaría la consulta:
SELECT DISTINCT 'Name: ' || ename "Employee",SALARY "Salary"FROM emp
WHERE deptno = 30ORDER BY deptno DESC, "Employee"
Además de por el nombre de columna o el alias, se puede especificarel orden que ocupa la columna en la consulta. Esto es muy útil si lasexpresiones del SELECT son muy largas. También son útiles sirealizamos operaciones de unión, intersección, etc con la consulta.
SELECT 'Name: ' || ename "Employee", SALARY "Salary"FROM emp
WHERE deptno = 30ORDER BY 2, 1
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 3/9
SQL *Plus
SQL*Plus está disponible en todas las plataforma en las que seejecuta Oracle. Se sirve con el cliente de Oracle. También estápresente en el servidor. Se puede ejecutar cualquier comando debase de datos o bloque PL/SQL en SQL*Plus (siempre que sedisponga de permisos). Conceptos:
1. Command. Una instrucción que se ejecuta en SQL*Plus. Puedeser un comando SQL*Plus o un comando SQL.
2. Block. Unidad lógica de SQL o PLSQL3. Table. Unidad básica de almacenamiento en Oracle4. Query. Sentencia SELECT que recupera información de una o
más tablas o vistas5. Query results. También conocido como conjunto resultado.
Datos que devuelve una consulta6. Report. Resultados formateados de alguna forma más legible
SQL *Plus básico
Cuando se inicia SQL*Plus, se abre una ventana que nos pide elusuario, la contraseña y la cadena de conexión. La cadena de
conexión es el alias de la base de datos. Si omitimos esta cadena,SQL*Plus intenta conectarse a la base de datos local definida en lavariable ORACLE_SID. Una vez entramos en el programa podemoscambiar de conexión ejecutando:
CONNECT USERNAME/PASSWORD@CONNECTSTRING;
Si omitimos la contraseña, nos aparecerá una contraseña donde senos solicitará. Si omitimos la cadena de conexión, se intentaráconectar a una base de datos local. Para salir de SQL*Plus, debemos
utilizar el comando EXIT. En plataformas donde es necesario devolverun código, utilizaremos la instrucción QUIT. EXIT y QUIT sonsinónimos.
Entrar y ejecutar comandos
El prompt por defect será SQL>
Si queremos cambiar el prompt, utilizaremos la instrucción SET
SQLPROMPT.
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 4/9
Un comando puede ser introducido en múltiples líneas, y no sonsensibles a caja. Siempre tendremos en el buffer de Oracle el últimocomando ejecutado. El buffer puede ser editado o guardado en unfichero. Se puede finalizar un comando de diferentes formas:
1. Con un punto y coma (;). El comando está completo y debeejecutarse
2. Barra en una línea vacía (/). Se ejecuta el comando del buffer,También se utiliza para ejecutar un PL/SQL
3. Línea en blanco. El comando es almacenado en el buffer
Nota: Sólo los comandos SQL y PL/SQL son almacenados en elbuffer. Los comandos SQL*Plus no se almacenan
El símbolo de resta es utilizado para indocar que se continúa una
línea:
La instrucción siguiente fallará, ya que entiende el – como unacontinuación y no como una resta
SQL> SELECT 800 -> 400 FROM DUAL;SELECT 800 400 FROM DUAL
En cambio funcionará:
SQL> SELECT 8002 - 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. Elnombre por defecto del fichero será afiedt.buf. Para definir eleditor, por ejemplo poner el notepad, utilizaremos:DEFINE_EDITOR = NOTEPAD
2. Usar los comando de edición SQL. Especificando el número delínea, modificaremos la correspondiente línea del buffer.
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 5/9
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 6/9
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 7/9
Script Files
SQL*Plus provee de instrucciones tanto para guardar el buffer SQL enun 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 paraello. La extensión por defecto será sql
Con EDIT <fichero> editaremos un ficheroCon 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 líneas marcadas con REM no aparecerán cuando se ejecute elcódigo. Las marcadas con /* */ sí
Personalización
Muchos de los parámetros de SQL*Plus se pueden personalizarmediante la instrucción SET. Se puede guardar la personalizaciónactual con la instrucción:
STORE SET <fichero>.
Producir una salida más legible
Con SQL*Plus es posible:- Definir el tamaño de una columna- Visualizar cabeceras con sentido- Formatear números y fechas- “Envolver” la información
Con la instrucción siguiente comprobamos el estado del tamaño depantalla
SQL> show pagesize lines
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 8/9
Con la siguiente, modificamos dichos tamañosSQL> SET PAGESIZE 78 LINESIZE 55
Deshabilitamos la respuesta de la Quero, donde nos dice el númerode filas mostradas
SQL> SET FEEDBACK OFF
Renombramos una columna. La barra vertical hace que el nombre dela columna aparezca en dos filasCOLUMN 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 ejecución
Con el & le indicamos que lo que viene a continuación es unavariable.
Si ejecutamos un fichero con el texto:SELECT empno, ename
FROM empWHERE deptno = &dept;
Nos pedirá el valor de dept:
Enter value for dept: 10
También se puede definir el valor antes:
SQL> DEFINE dept = 10
SQL> l1 SELECT empno, ename2 FROM emp3* WHERE deptno = &dept
SQL> /
Si tenemos un fichero llamado query1 con el texto
SELECT empid, enameFROM emp
WHERE deptno = &1AND empid = &2;
5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com
http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 9/9
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: "