6_-consultas-simples-y-sqlplus

9
 ESCRIBIENDO CONSULTAS SIMPLES Y SQL*PLUS Una consulta (query) es una solicitud de información de las tablas de la base de datos. Las consultas simples son aquellas que obtienen información de una única tabla. La base de la consulta es la cláusula 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 símbolo *. Si los alias contie nen espacios en blanco, deben estar entre comilla s dobles (“”). También estará entre comillas dobles si no queremos que se especifiq ue en mayúsculas. La palabra clave DISTINCT asegura que la consulta no devolverá fi las duplicadas. El DISTINCT se aplica a t oda la fila, y no a la primera columna. SELECT DISTINCT deptno, salary FROM emp; Tabla dual La tabla dual está disponible para todos l os 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 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 es LIKE. El sí mbolo _ es substituido por un carácter, mientras que % es substituido por cualquier cadena de caracteres. Si queremos busc ar por el símbolo _, utilizaremos la cláusula ESCAPE. SELECT * FROM emp WHERE ename LIKE 'A\_%' ESCAPE ‘/’;

Transcript of 6_-consultas-simples-y-sqlplus

Page 1: 6_-consultas-simples-y-sqlplus

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 ‘/’;

Page 2: 6_-consultas-simples-y-sqlplus

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

Page 3: 6_-consultas-simples-y-sqlplus

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.

Page 4: 6_-consultas-simples-y-sqlplus

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.

Page 5: 6_-consultas-simples-y-sqlplus

5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com

http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 5/9

 

 

Page 6: 6_-consultas-simples-y-sqlplus

5/11/2018 6_-consultas-simples-y-sqlplus - slidepdf.com

http://slidepdf.com/reader/full/6-consultas-simples-y-sqlplus 6/9

 

 

Page 7: 6_-consultas-simples-y-sqlplus

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

Page 8: 6_-consultas-simples-y-sqlplus

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;

Page 9: 6_-consultas-simples-y-sqlplus

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: "