SlideShare una empresa de Scribd logo
1 de 19
CAPITULO I
 ESCRIBIENDO SENTENCIAS BÁSICAS DE
                SQL
OBJETIVOS
Después de completar esta lección Ud. deberá ser capaz de realizar lo
siguiente:

       Listar las capacidades de la sentencia SELECT de SQL.
       Ejecutar una sentencia básica de SELECT
       Diferenciar entre las sentencias SQL y los comandos de SQL*PLUS

OBJETIVO DE LA LECCIÓN

   Para extraer datos de la base de datos Ud. necesita usar el comando
    SELECT del lenguaje estructurado de consulta (SQL.). Ud. podrìa necesitar
    restringir las columnas que son mostradas. Esta lección describe todos las
    sentencias SQL. que necesita para obtener estas acciones. Ud. podría
    querer crear sentencias SELECT que puedan ser reutilizadas. Esta lección
    también cubre el uso de comandos de SQL*PLUS para ejecutar sentencias
    de SQL.



CAPACIDADES DE LA SENTENCIA SELECT DE SQL




La sentencia SELECT recupera información de la base de datos. Al utilizarla
Ud. puede realizar lo siguiente:

 Selección: Ud. puede utilizar la capacidad de selección para elegir filas en
    una tabla que Ud. desea de respuesta a una consulta. Ud. puede utilizar
    varios criterios para restringir selectivamente las columnas que Ud. ve.
 Proyección: Ud. puede utilizar la capacidad de proyección para elegir
  columnas en una tabla que Ud. desea de respuesta a una consulta. Ud.
  puede elegir unas pocas o muchas columnas de la tabla como requiera.
 Unión: Ud. puede utilizar la capacidad de unión para mostrar juntas la
  información almacenada en diferentes tablas mediante la creación de un
  link entre ellas.
SENTENCIA SELECT BÁSICA



SELECT       [DISTINCT] {*, column [alias], … }
FROM         table;


             •     SELECT identifica que columnas va a desplegar
             •     FROM identifica tabla de la que se va a obtener la información


             En su forma simple, la sentencia SELECT debería incluir lo siguiente:

             ♠     La cláusula SELECT, la cual especifica cha columnas serán desplegadas
             ♠     La cláusula FROM, la cual especifica la tabla que contiene las columnas
                   listad en la cláusula SELECT.

             Sintaxis:

                     SELECT        es una lista de una o mas columnas
                     DISTINCT      elimina los nombres duplicados
                     *             selecciona todas las columnas
                     column        selecciona la columna especifica
                     alias         le da a la columna seleccionada una cabecera diferente
                     FROM table    especifica la tabla que contiene las columnas

             Nota: A lo largo de este curso las palabras : clave, cláusula y sentencia son
             utilizadas:

             ♠     Una clave se refiere a un elemento individual de SQL; por ejemplo:
                   SELECT y FROM son palabras claves.
             ♠     Una cláusula es parte de una sentencia de SQL., por ejemplo: SELECT
                   empno, ename, … es una cláusula.
             ♠     Una sentencia es una combinación de dos o mas cláusulas, por ejemplo:
                   SELECT * FROM emp es una sentencia.




             Volver...


             ESCRIBIENDO SENTENCIAS SQL

         •       Las sentencias de SQL. son no sensitivas,
                  a menos que se lo indique
         •       Las sentencias de SQL. pueden ser ingresadas en
                  una o en varias líneas.
         •       Las palabras claves no pueden ser divididas
                  en líneas o ser abreviadas.
         •       Las cláusulas son usualmente ubicadas en líneas
                 separadas para una mejor lectura y facilidad de edición
         •       Las tabulaciones pueden ser utilizadas para hacer
                  código mas legible .
Usando las siguientes reglas y pautas, Ud. podrá construir sentencias validas
                     que son fáciles para leer y editar:

                     •    Las sentencias de SQL. son no sensitivas, a menos que se lo indique.
                     •    Las sentencias de SQL. pueden ser ingresadas en una o en varias líneas.
                     •    Las palabras claves no pueden ser divididas en líneas o ser abreviadas.
                     •    Las cláusulas son usualmente ubicadas en líneas separadas para una
                          mejor lectura y facilidad de edición
                     •    Las tabulaciones e indentaciones pueden ser utilizadas para hacer código
                          más legible .
                     •    Las palabras claves típicamente son ingresadas en mayúsculas, el resto de
                          las palabras tales como el nombre de las tablas y columnas son ingresadas
                          en minúsculas.
                     •    Dentro de SQL*PLUS, una sentencia de SQL es ingresada en el prompt de
                          SQL, y las líneas subsiguientes son numeradas. Esto es denominado SQL
                          buffer. Solamente una sentencia puede estar actualmente en cualquier
                          momento dentro del buffer.



                     EJECUTANDO SENTENCIAS SQL

                     •    Ponga un punto y coma (;) al final de la ultima cláusula.
                     •    Ponga una diagonal (/) en la ultima línea del buffer.
                     •    Ponga una diagonal (/) en el prompt de SQL
                     •    Digite el comando RUN de SQL*PLUS en el prompt de SQL



                     SELECCIONANDO TODAS LAS COLUMNAS, TODAS LAS FILAS

SQL>                 SELECT            *
FROM                 dept;


 DEPTNO                DNAME                      LOC
-------------   -------------------------   ----------------
     10         ACCOUNTING                  NEW YORK
     20         RESEARCH                    DALLAS
     30         SALES                       CHICAGO
     40         OPERATIONS                  BOSTON



                     Ud. puede desplegar todas las columnas de datos en una tabla digitando la
                     palabra clave SELECT con un asterisco (*). En el ejemplo, la tabla
                     departamento contiene tres columnas: deptno, dname y loc. La tabla contiene
                     cuatro filas, una por cada departamento. Ud. también puede desplegar todas
                     las columnas de la tabla listando todas las columnas después de la palabra
                     SELECT. Por ejemplo, la siguiente sentencia SQL, despliega todas las
                     columnas y filas de la tabla:


SQL>                 SELECT            deptno, dname, loc
FROM                 dept;
SELECCIONANDO COLUMNAS ESPECÍFICAS, TODAS LAS FILAS

                    Ud. puede usar la sentencia SELECT para desplegar columnas especificas de l
                    tabla
                    especificando los nombres de las columnas separadas por comas. En el
                    siguiente ejemplo, se muestran todos los números de departamento y sus
                    localidades de la tabla dept:


SQL>                 SELECT          deptno, loc
FROM                 dept;



 DEPTNO              LOC
-------------   ----------------
     10         NEW YORK
     20         DALLAS
     30         CHICAGO
     40         BOSTON


                    En la cláusula SELECT se especifican las columnas a observar en el orden en
                    el que se desea que estas aparezcan, por ejemplo, para desplegar la localidad
                    antes del número de departamento se usa la siguiente sentencia:


SQL>                 SELECT          loc, deptno
FROM                 dept;


      LOC             DEPTNO
------------------ -------------------
NEW YORK                   10
DALLAS                     20
CHICAGO                    30
BOSTON                     40




                    VALOR POR DEFECTO DE LOS ENCABEZADOS DE COLUMNA

                    Los caracteres del encabezado de columna y sus datos están justificados a la
                    izquierda dentro del ancho de su columna. Los encabezados numéricos y los
                    datos están justificados a la derecha:

SQL>                 SELECT          ename, hiredate, sal
FROM                 emp;


    ENAME           HIREDATE                SAL
------------------- --------------       ------------
     SMITH           17/12/80                800
     ALLEN           20/02/81               1600
     WARD            22/02/81               1250
    JONES            02/04/81               2975
    MARTIN           28/09/81               1250
Los encabezados de datos y carácter pueden ser truncados, pero los
encabezados numéricos no. Los encabezados de columna aparecen en
mayúsculas por defecto. Ud. puede modificar el despliegue del encabezado
usando un alias.




Volver...



EXPRESIONES ARITMÉTICAS


   Operador              Descripción
      +                    Adición
      -                  Substracción
      *                  Multiplicación
       /                   Dividido


Usted puede requerir modificar la manera en la que los datos son desplegados,
mejorar cálculos u observarlos como guiones. Esto es posible usando
expresiones aritméticas. Una expresión aritmética puede contener nombres de
columnas, valores numéricos constantes y operadores aritméticos.



OPERADORES ARITMÉTICOS

Ud. puede usar los operadores aritméticos en cualquier cláusula de una
sentencia SQL exceptuando en la cláusula FROM.
USANDO LOS OPERADORES ARITMÉTICOS

SQL>          SELECT       sal,sal+300
FROM          emp;



 ENAME           SAL       SAL+300
 SMITH           800        1100
 ALLEN           1600       1900
 WARD            1250       1550
 JONES           2975       3275
 MARTIN          1250       1550



              En el siguiente ejemplo Ud. puede calcular un incremento de $300 en el salario
              para todos los empleados y desplegar una columna nueva SAL+300. Note que
              el resultado calculado de la columna SAL+300 no es una nueva columna en la
              tabla emp; sólo es un despliegue. Por defecto el nombre de una nueva columna
              viene del cálculo que, en este caso, es SAL+300.

              Nota: SQL*PLUS ignora los espacios en blanco antes y después del operador
              aritmético.



              PRECEDENCIA DE LOS OPERADORES




          * / + -


          •    Multiplicación y la división tienen mayor prioridad que la
               adición
          •    Los operadores de una misma prioridad son evaluados
               de izquierda a derecha
          •    Los paréntesis que la expresión dentro de ellos sea
               evaluada primera.

              Si una expresión aritmética contiene más de un operador, la multiplicación y
              división son evaluadas primero. Si los operadores dentro de una expresión
              tienen la misma prioridad, la evaluación se realiza de izquierda a derecha. Ud.
              puede usar paréntesis para forzar que la expresión dentro de los paréntesis sea
              evaluada primero.

              En el siguiente ejemplo se despliega el nombre, el salario y la compensación
              anual de los empleados. Esta calcula la compensación anual con 12
              multiplicado por el salario mensual mas un bono de $100. Note que la
              multiplicación es realizada antes de la suma.

              Nota: Use los paréntesis para reforzar el orden estándar de precedencia y
              mejorar la claridad. Por ejemplo, la expresión puede ser escrita como (12*sal)
              +100 sin cambio en el resultado.




SQL>          SELECT       ename, sal, 12*sal+100
FROM          emp;
ENAME               SAL           12*SAL+100
------------------- --------------   -------------------
     SMITH              800                9700
     ALLEN              1600              19300
     WARD               1250              15100
    JONES               2975              35800
    MARTIN              1250              15100


                   USANDO PARÉNTESIS


SQL>                SELECT           ename, sal, 12*(sal+100)
FROM                emp;


    ENAME               SAL          12*(SAL+100)
------------------- --------------   -------------------
     SMITH              800                9700
     ALLEN              1600              19300
     WARD               1250              15100
    JONES               2975              35800
    MARTIN              1250              15100




                   Ud. puede modificar las reglas de precedencia usando paréntesis para
                   especificar el orden en el cual los operadores son ejecutados. El siguiente
                   ejemplo despliega el nombre, salario y compensación anual de los empleados
                   tal como el ejemplo anterior pero debido al paréntesis la adición toma prioridad
                   sobre la multiplicación.



                   DEFINIENDO VALORES NULOS




SQL>               SELECT         ename, job, sal, comm
FROM               emp;
    ENAME               JOB            SAL          COMM
------------------- -------------- -------------- -------------
                                                        -
     SMITH           CLERK             800
     ALLEN          SALESMAN           1600           300
     WARD           SALESMAN           1250
    JONES           MANAGER            2975
    MARTIN          SALESMAN           1250


                   Si en una fila falta el dato para una columna en particular se dice que esta nula
                   o contiene un nulo. Un valor nulo es un valor indefinido, no asignado,
desconocido o inaplicado. Un valor nulo no es lo mismo que un cero o un
                  espacio. Cero es un número y un espacio es un caracter. Las columnas de
                  cualquier tipo de dato pueden contener valores nulos, a menos que la columna
                  sea definida como ‘no nula’ o como llave primaria cuando la columna era
                  creada. En la columna COMM de la tabla emp, Ud. puede notar que sólo un
                  vendedor pudo ganar comisiones. Otros empleados son clasificados que no
                  ganaron comisiones. Un valor nulo representa este hecho. Turner, quien es un
                  vendedor, no ha ganado ninguna comisión. Note que esta comisión es cero y
                  no nulo.



                  VALORES NULOS EN EXPRESIONES ARITMÉTICAS



SQL>  SELECT        ename, 12*sal+comm
FROM  emp
WHERE ename=’KING’;



    ENAME           12*SAL+COMM
-------------------   --------------
      KING
                  Si el valor de alguna columna en una expresión aritmética es nulo, el resultado
                  es nulo. Por ejemplo, si Ud. se empeña en realizar una división por cero, Ud.
                  obtendrá un error. Sin embargo, si Ud. divide un número por un nulo, el
                  resultado es un nulo o un valor desconocido. En el siguiente ejemplo, el
                  empleado KING no es un vendedor y no obtiene ninguna comisión. Debido a
                  que la columna COMM en la expresión aritmética es nulo, el resultado es nulo.




                  Volver...



                  DEFINIENDO UN ALIAS DE COLUMNA

              •    Permite renombrar una columna
              •    Usado para cálculos
              •    Después de nombrar a la columna se puede poner AS
                   para poner el alias.
              •    Requiere de comillas dobles cuando el alias tiene
                   espacios en blanco.

                  Cuando se despliega el resultado de una consulta, SQL*PLUS normalmente
                  usa el nombre de la columna seleccionada como encabezado de esa columna.
                  En muchas ocasiones este encabezado puede no ser descriptivo y por eso es
                  difícil de ser entendido. Ud. puede cambiar el encabezado de una columna
                  usando un alias. Especifique el alias después de la columna en la lista de
                  SELECT usando un espacio como un separador. Por defecto, el encabezado de
                  alias aparece en mayúsculas. Si el alias contiene espacios , caracteres
                  especiales (tales como # o $), o si es sensitivo, adjunte el alias en comillas
                  dobles (“”).
USANDO EL ALIAS DE COLUMNA

                   El siguiente ejemplo despliega el nombre y el salario mensual de todos los
                   empleados. Note que la palabra clave opcional AS ha sido usada antes de la
                   columna con alias. El resultado de la consulta podría ser el mismo aún si la
                   clave AS es usada o nó. Note también que l sentencia SQL tiene un alias d
                   columna nombre y salario en minúsculas, considerando que el resultado de la
                   consulta despliega loa encabezados de columna en mayúsculas asì:



SQL>          SELECT ename AS name, sal salary
FROM          emp
     NAME           SALARY
------------------- ------------
     SMITH              800
     ALLEN             1600
     WARD              1250
    JONES              2975
    MARTIN             1250




SQL>       SELECT      ename “name”, sal*12 “salario anual”
FROM       emp



    NAME           SALARIO ANUAL
----------------      ------------
       --
   SMITH                9600
   ALLEN                19200
   WARD                 15000
   JONES                35700
  MARTIN                15000


                   En este ejemplo se despliega el nombre y el salario anual de todos los
                   empleados. Debido a que el salario anual contiene espacios, este ha sido
                   encerrado entre comillas dobles. Note que el encabezado de columna en la
                   salida es exactamente el mismo que en la columna alias.




                   Volver...



                   OPERADOR DE CONCATENACIÓN

                   •   Concatena columnas o cadenas de caracteres u otras
                       columnas
                   •   Representado por ||
                   •   Crea una columna resultante que es una expresión
Ud. puede unir columnas a otras columnas, expresiones aritméticas o valores
                constantes para crear una expresión caracter usando el operador de
                concatenación ( | | ). Las columnas a cada lado del operador son combinadas
                para crear una salida como una única columna.



                USANDO EL OPERADOR DE CONCATENACIÓN

                En el siguiente ejemplo, las columnas ename y job son concatenados y son
                asignadas el alias empleados. Note que el numero del empleado y el trabajo
                están combinadas para producir por salidauna sola columna. La palabra clave
                AS abtes del nombre del alias hace que la cláusula SELECT sea fácil de leer.

SQL> SELECT              ename || job as “empleados”
FROM Emp

   EMPLEADOS
   -------------------
   SMITHCLERK
ALLENSALESMAN
WARDSALESMAN
 JONESMANAGER
MARTINSALESMAN



                CADENAS LITERALES DE CARACTERES

                Un literal es un carácter, un número, o información incluida en la sentencia
                SELECT lista que no hay un nombre de columna o un alias de columna. Ésta se
                encuentra impresa para cada fila retornada. Las cadenas literales con texto de
                libre formato pueden ser incluìdas in el resultado de la consulta y ser tratadas
                igual que en la lista de la sentencia SELECT. Los datos y caracteres literales
                deberán estar encerrados entre comillas simples mientras que los números no.


                USANDO UNA CADENA LITERAL DE CARACTERES

SQL> SELECT ename || ‘ is a ’ || job as “Detalles de Empleados ”
FROM emp;



  DETALLES DE EMPLEADOS
         -------------------
       SMITH is a CLERK
    ALLEN is a SALESMAN
    WARD is a SALESMAN
     JONES is a MANAGER
    MARTIN is a SALESMAN



                En el siguiente ejemplo se despliegan los nombres y trabajos de todos los
                empleados. La columna ha sido titulado como Detalles de Empleados. Note que
                los espacios entre las comillas simples en la sentencia SELECT. El espacio
                mejora la legibilidad de la salida.
En el siguiente ejemplo, el nombre y el salario de cada empleado está
                      concatenado con un literal para dar a la fila que retorna un mayor significado:


SQL>       SELECT         ename || ‘ : ’ || ‘ 1 ’
 2                        || ‘ Salario Mensual =             ’ || sal
                          monthly
   3       FROM           emp;




                      MONTHLY
----------------------------------------------------------
-----
SMITH          1      Salario Mensual            =800
ALLEN          1      Salario Mensual            =1600
WARD           1      Salario Mensual            =1250
JONES          1      Salario Mensual            =2975
MARTIN 1              Salario Mensual            =1250
BLAKE          1      Salario Mensual            =2850




                      Volver...



                      FILAS DUPLICADAS

SQL> SELECT                 deptno
FROM Emp

   DEPTNO
-------------------
        10
        30
        10
        20
        10




                      A menos que Ud. lo indique en otra parte, SQL*PLUS despliega el resultado de
                      una consulta sin eliminar las filas duplicadas. En el siguiente ejemplo se
                      muestran todos los números de departamento de la tabla emp. Note que los
                      números de departamento son repetidos.
ELIMINANDO LAS FILAS DUPLICADAS.

SQL> SELECT DISTINCT                    deptno
FROM emp




   DEPTNO
-------------------
        10
        20
        30
                      Para eliminar las filas duplicadas en el resultado incluya la palabra clave
                      DISTINCT en la cláusula SELECT inmediatamente después de ella. En el
                      siguiente ejemplo, la tabla emp actualmente contiene 14 filas pero únicamente
                      solo tres números de departamento en la tabla. Ud. puede especificar múltiples
                      columnas después del cualificador DISTINCT, el mismo que afecta a todas las
                      columnas seleccionadas y los resultados representan un combinación distinta
                      de las columnas.

SQL> SELECT DISTINCT                    deptno, job
FROM emp




   DEPTNO                    JOB
-------------------    ------------------
        10                 CLERK
        10              MANAGER
        10             PRESIDENT
        20               ANALYST

                                                       Volver...




                      INTERACCIÓN DE SQL Y SQL*PLUS
Sentencia SQL   Búffer       Sentencia SQL


   SQL*PLUS
                                                    Server


          Comandos                        Query
          SQL*PLUS                        Results
                          Reporte
                          Formatead




Server




               SQL Y SQL*PLUS

               SQL es un lenguaje de comandos para la comunicación con el servidor de
               lenguaje Oracle desde cualquier herramienta o aplicación. Oracle SQL contiene
               muchas extensiones. Cuando Ud. ingresa una sentencia SQL Ésta es
               almacenada en una parte de la memoria llamada buffer de SQL y permanece
               allí hasta que Ud. ingrese una nueva sentencia. SQL*PLUS es una herramienta
               de Oracle que reconoce y somete las sentencias SQL al servidor de Oracle
               para su ejecución y contiene su propio lenguaje.



               CARACTERÌSTICAS DEL SQL

               •   Puede ser utilizado por un rango de usuarios, incluìdos aquellos con un
                   poco o sin ninguna experiencia.
               •   Es un lenguaje no procedimental.
               •   Reduce la cantidad de tiempo requerido para crear y mantener un sistema.
               •   Es un lenguaje similar al Inglés.



               CARACTERISTICAS DEL SQL*PLUS

               •   Acepta entradas de sentencias ad-hoc.
•       Acepta entradas de SQL desde archivo.
                    •       Provee un editor de línea para modificar las sentencias SQL
                    •       Controla la configuración del entorno.
                    •       Formatea los resultados de las consultas dentro de un reporte básico.
                    •       Accede local y remotamente a las bases de datos.



                    SENTENCIAS SQL VERSUS COMANDOS SQL*PLUS

                  SQL                                      SQL*PLUS
* un idioma                                  * un ambiente
* es estándar de ANSI                        * propiedad de Oracle
* palabras claves no pueden abreviarse       * las palabras claves pueden ser
                                                abreviadas.
* .las sentencias manipulan datos y          * los comandos no permiten la
  definiciones de tablas en la base de         manipulación de valores en la base de
  datos                                        datos
     Sentencias                 Búffe                Comandos              Búffer
     SQL                        r SQL                SQL                   SQL*PLUS




                    La siguiente tabla compara a SQL y SQL*PLUS :

                                           SQL                                   SQL*PLUS
                        •    Es un lenguaje para la comunicación •       Reconoce las sentencias SQL y
                             con el servidor Oracle para el              las envìa al servidor.
                             acceso de los datos
                        •    Está basado en el estándar ANSI •           La interfase es propiedad de
                             SQL                                         Oracle para la ejecución de las
                                                                         sentencias SQL
                        •    Manipula los datos y las definiciones •     No permite la manipulación de
                             de las tablas en la base de datos.          valores en la base de datos .
                        •    Es ingresado en el buffer SQL en •          Es ingresado una línea a la vez.
                             una o más líneas                            No se almacena en el buffer
                                                                         SQL
                        •    No tiene     una   continuación    de •     Tiene un guión (-) como n
                             carácter                                    carácter de continuación si el
                                                                         comando es más extenso que
                                                                         una línea.
                        •    No puede estar abreviado           •        Puede estar abreviado
                        •    Utiliza un caracter de terminación •        No requiere de caracteres de
                             para     ejecutar   el    comando           terminación; los comandos son
                             inmediatamente                              ejecutados
                                                                •        inmediatamente.
                        •    Utiliza funciones para realizar •           Utiliza comandos para formatear
                             algunos formatos                            datos.
APRECIACIÓN GLOBAL DE SQL*PLUS

•   Anotaciones en SQL*PLUS
•   Describe la estructura de la tabla
•   Edita sus sentencias de SQL
•   Ejecuta el SQL desde el SQL*PLUS
•   Guarda las sentencias SQL en archivos y añade las sentencias SQL a
    los archivos
•   Ejecuta archivos guardados.
•   Carga los comandos desde el archivo al buffer para su edición.

SQL*PLUS es un entorno en el cual Ud. puede desarrollar lo siguiente:

•   Ejecuta las sentencias SQL para recuperar, modificar, agregar y remover
    datos de la base de datos.
•   Formatea, realiza cálculos, almacena e imprime los resultados de reportes
    en forma de reportes.
•   Crea un archivo de escritura (script) para guardar las sentencias SQL para
    uso repetitivo en el futuro.

Los comandos de SQL*PLUS pueden ser divididos en las siguientes categorìas:

   Categorìa                                Propósito
Entorno            Afecta el comportamiento general de las sentencias de SQL
                   para esa sesión
Formato            Formatea el resultado de las consultas
Manipulación       Guarda, carga y corre archivos de escritura
de archivo
Ejecución          Envìa sentencias SQL hacia el buffer de Oracle 8 Server
Edición            Modifica las sentencias SQL en el buffer.
Interacción        Le permite a Ud. crear y pasar variables a las sentencias
                   SQL, imprimirlas y presentar mensajes en pantalla
Misceláneos        Tiene varios comandos para conectarse a la base de datos,
                   manipular el entorno de SQL*PLUS           y desplegar las
                   definiciones de las columnas.



CONECTÁNDOSE A SQL*PLUS


               •   Para el entorno de Windows
•   Con la línea de Comando


Sqlplus[username[/password[@database]]]
username[/password[@database]]]
                       La manera de invocar SQL*PLUS depende del tipo de sistema operativo o
                       entorno Windows que Ud.esté corriendo. Para conectarse en unambiente
                       Windows:

                       •   Click en start -> programas -> Oracle para WinNT -> SQL*PLUS plus 8.0
                       •   Llenar los campos username, password y database


                       Para conectarse a través de un entorno de líneas de comando (DOS):

                       •   Conéctese a su máquina.
                       •   Ingrese el comando de SQL*PLUS de la siguiente manera:

                           > sqlplus [username [/password[ @database ]]]

                            username:        es el nombre de su base de datos
                            password:        es la clave de su base de datos. (si Ud. ingresa la clave
                             aquì, ésta es visible)
                            @database:       es la cadena para conectarse a la base de datos.

                       Nota: Para asegurar la integridad de su clave, no la ingrese en el prompt del
                       sistema operativo. En su lugar, ingrese únicamente su nombre de usuario.
                       Ingrese el password en el prompt del password. Una vez que Ud. se ha
                       conectado con éxito a SQL*PLUS , Ud. podrá observar el siguiente mensaje:


                           SQL*Plus: Release 8.0.3.0.0 - Production on Vie Dic 28 1:54:30 2001
                           (c) Copyright 1997 Oracle Corporation. All rights reserved.
                           Conectado a:
                           Personal Oracle8 Release 8.0.3.0.0 - Production
                           With the Partitioning option
                           PL/SQL Release 8.0.3.0.0 - Production




                       Volver...



                       DESPLEGANDO LA ESTRUCTURA DE LA TABLA

            DESCRIBE [tablename]



                       En SQL*PLUS Ud. puede desplegar la estructura de la tabla usando el
                       comando describe. El resultado del comando permite ver los nombres de las
                       columnas y sus tipos de datos asì como si una columna debería contener datos.

                       Sintaxis:
tablename:       es el nombre de una tabla existente, vista o sinónimo accesible
                   para el usuario.

SQL> DESCRIBE dept


 DEPTNO             NULL?                 TYPE
--------------- ------------------   ------------------
       --
 DEPTNO           NOT NULL            Number (2)
  DANME                              Varchar2 (14)
    LOC                              Varchar2 (13)

                   En el anterior ejemplo se observa la descripción de la tabla dept:

                        -    null?                Indica si una columna deberá contener datos; not
                             null indica que esa columna deberá contener datos.
                        -    type                 despliega el tipo de dato de una columna


                   Los tipos de datos son descritos en la siguiente tabla:

                   Tipo de dato                                  Descripción
                  NUMBER (p, s)         Valor numérico que tiene un máximo número de dígitos p,
                                        y el numero de dígitos decimales s.
                  VARCHAR2(s)           Valor carácter de longitud variable con un máximo de
                                        tamaño s
                  DATE                  Valor de tiempo y fecha entre Enero1, 4712 AC y
                                        Diciembre 31,9999 DC
                  CHAR (s)              Longitud fija de caracteres con un valor de tamaño s.



                   COMANDOS DE EDICIÓN DE SQL*PLUS

                   Los comandos de edición de SQL*PLUS son ingresados una línea a la vez y no
                   son almacenados en el buffer de SQL

                      Comandos                              Descripción
                  A[PPEND] text   Agrega texto al final de la línea actual
                  C[HANGE] /old / Cambia un texto viejo por uno nuevo en la línea actual.
                  new
                  C[HANGE] /text  Borra el texto de la línea actual
                  C[LEAR]         Borra todas las líneas del buffer SQL
                  BUFF[ER]
                  DEL             Borra la línea actual
                  HI[NPUT]        Inserta un número indefinido de líneas
                  I[NPUT] text    Inserta una línea consistente de texto
                  L[IST]          Lista todas las líneas del buffer de SQL
                  L[IST]n         Lista una línea (especificada por n)
                  L[IST]m n       Lista un rango de líneas (m a n)
                  R[UN]           Despliega y corre la sentencia de SQL que actualmente está
                                  en el buffer
                  N               Especifica la linea para hacerla línea actual
                  n text          Reemplaza la linea n con texto
                  0 text          Inserta una linea antes de la línea 1
PAUTAS:

•   Si Ud. presiona [return] antes de completar un comando, SQL*PLUS le
    avisa a Ud. mediante un número.
•   Ud. termina el buffer SQL por ingresar uno de los caracteres de terminación
    ( ; o / ) o presionando [return] dos veces. Luego Ud. verá el prompt de SQL
•   Ud. puede ingresar solamente un comando SQL*PLUS por cada prompt.
    Los comandos no son almacenados en el buffer. Para continuar con un
    comando SQL*PLUS en la siguiente línea, finalice la línea actual con un
    guión (-).



COMANDOS DE ARCHIVOS DE SQL*PLUS

Las sentencias de SQL se comunican con el servidor de Oracle. Los comandos
de SQL*PLUS controlan el entorno, el formato de las consultas y administran
los archivos. Ud. puede usar los comandos identificados en la siguiente tabla:

       Comandos                             Descripción
S[AVE] filename [.ext] Guarda el contenido actual del buffer SQL en un
[REP[LACE]APP[END]] archivo. Use append para añadir algo en un archivo
                       existente; use replace para sobreescribir un archivo
                       existente. La extensión por defecto es *.sql
GET filename [.ext]    Escribe el contenido de un archivo previamente
                       guardado en el buffer SQL La extensión por defecto
                       es *.sql
STA[RT]filename [.ext] Corre un comando de archivo previamente
                       almacenado
@filename [.ext]       Corre un comando de archivo previamente
                       almacenado (similar a START)
ED[IT]                 Invoca al editor y almacena el contenido del buffer
                       en un archivo llamado afied.buf
ED[IT]filename [.ext]  Invoca al editor para editar el contenido de un
                       archivo almacenado
SPO[OL]filename [.ext] Almacena los resultados de las consultas en un
OFF/OUT                archivo. Off cierra el archivo spool. Out cierra el
                       archivo y envìa el resultado del archivo al sistema de
                       impresión
EXIT                   Abandona SQL*PLUS




Volver...

Más contenido relacionado

La actualidad más candente

Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Sergio Sanchez
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sqlByron Eras
 
SENTENCIAS SQL
SENTENCIAS SQL SENTENCIAS SQL
SENTENCIAS SQL Jair Cruz
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sqlalexmerono
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dmlGerardo
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Sql comamdo
Sql comamdoSql comamdo
Sql comamdodmonges
 
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Sergio Sanchez
 
6. SQL structured query language
6. SQL   structured query language6. SQL   structured query language
6. SQL structured query languageMarcelo Herrera
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query languageYoly QC
 

La actualidad más candente (15)

SQL
SQLSQL
SQL
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
 
Aprenda SQL Server
Aprenda SQL ServerAprenda SQL Server
Aprenda SQL Server
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
SENTENCIAS SQL
SENTENCIAS SQL SENTENCIAS SQL
SENTENCIAS SQL
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Sql comamdo
Sql comamdoSql comamdo
Sql comamdo
 
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
 
SENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVERSENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVER
 
6. SQL structured query language
6. SQL   structured query language6. SQL   structured query language
6. SQL structured query language
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 

Destacado

Apontamentos aulas teóricas al
Apontamentos aulas teóricas alApontamentos aulas teóricas al
Apontamentos aulas teóricas aleSolidar
 
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...Instituto Superior Pedagógico Felix Varela
 
Herramientas windows.
Herramientas windows.Herramientas windows.
Herramientas windows.briant95
 
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...Marcelo Luis Barbosa dos Santos
 
Presentación Corporativa Iberia 2012
Presentación Corporativa Iberia 2012Presentación Corporativa Iberia 2012
Presentación Corporativa Iberia 2012rkcalleja
 
Evolución de la comunicación humana
Evolución de la comunicación humanaEvolución de la comunicación humana
Evolución de la comunicación humanaYosiAlzuarte
 
Teatro Nacional Ruben Dario, Managua, Nicaragua
Teatro Nacional Ruben Dario, Managua, NicaraguaTeatro Nacional Ruben Dario, Managua, Nicaragua
Teatro Nacional Ruben Dario, Managua, NicaraguaDaniela Dangla Roche
 
Life Coaching for GP's report
Life Coaching for GP's reportLife Coaching for GP's report
Life Coaching for GP's reportSian Phillips
 
Proyecto De Aula. Isidro Caballero Delgado.Sede A
Proyecto De Aula. Isidro Caballero Delgado.Sede AProyecto De Aula. Isidro Caballero Delgado.Sede A
Proyecto De Aula. Isidro Caballero Delgado.Sede Apedro arias
 
Seminario nº 10 (2)
Seminario nº 10 (2)Seminario nº 10 (2)
Seminario nº 10 (2)Cota Quintana
 
Circunferencia y sus ángulos
Circunferencia y sus ángulosCircunferencia y sus ángulos
Circunferencia y sus ánguloscardiaz129
 

Destacado (20)

Apontamentos aulas teóricas al
Apontamentos aulas teóricas alApontamentos aulas teóricas al
Apontamentos aulas teóricas al
 
Presentacion
PresentacionPresentacion
Presentacion
 
SE PPM SUITE
SE PPM SUITESE PPM SUITE
SE PPM SUITE
 
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...
Caracterización de las evidencias culturales, restos óseos aborígenes y de fa...
 
Nanotecnologia
NanotecnologiaNanotecnologia
Nanotecnologia
 
Herramientas windows.
Herramientas windows.Herramientas windows.
Herramientas windows.
 
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...
Ciberativismo - Apresentacao III Conferência Nacional da Sociedade Civil de A...
 
19023
1902319023
19023
 
Parkinson
ParkinsonParkinson
Parkinson
 
Mi historia
Mi historiaMi historia
Mi historia
 
Presentación Corporativa Iberia 2012
Presentación Corporativa Iberia 2012Presentación Corporativa Iberia 2012
Presentación Corporativa Iberia 2012
 
Evolución de la comunicación humana
Evolución de la comunicación humanaEvolución de la comunicación humana
Evolución de la comunicación humana
 
Tutorial 3
Tutorial 3Tutorial 3
Tutorial 3
 
Parkinson
ParkinsonParkinson
Parkinson
 
Teatro Nacional Ruben Dario, Managua, Nicaragua
Teatro Nacional Ruben Dario, Managua, NicaraguaTeatro Nacional Ruben Dario, Managua, Nicaragua
Teatro Nacional Ruben Dario, Managua, Nicaragua
 
Life Coaching for GP's report
Life Coaching for GP's reportLife Coaching for GP's report
Life Coaching for GP's report
 
Proyecto De Aula. Isidro Caballero Delgado.Sede A
Proyecto De Aula. Isidro Caballero Delgado.Sede AProyecto De Aula. Isidro Caballero Delgado.Sede A
Proyecto De Aula. Isidro Caballero Delgado.Sede A
 
CVCM_Pres
CVCM_PresCVCM_Pres
CVCM_Pres
 
Seminario nº 10 (2)
Seminario nº 10 (2)Seminario nº 10 (2)
Seminario nº 10 (2)
 
Circunferencia y sus ángulos
Circunferencia y sus ángulosCircunferencia y sus ángulos
Circunferencia y sus ángulos
 

Similar a Escribiendo sentencias SQL básicas y capacidades de SELECT

Similar a Escribiendo sentencias SQL básicas y capacidades de SELECT (20)

Seleccion de datos
Seleccion de datosSeleccion de datos
Seleccion de datos
 
Seleccion de datos
Seleccion de datosSeleccion de datos
Seleccion de datos
 
Resumen sql-oracle
Resumen sql-oracleResumen sql-oracle
Resumen sql-oracle
 
Conceptos basicos de programacion con pl sql
Conceptos basicos de programacion con pl sqlConceptos basicos de programacion con pl sql
Conceptos basicos de programacion con pl sql
 
Pl Sql
Pl SqlPl Sql
Pl Sql
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Presentacións Sql mejorado
Presentacións Sql mejoradoPresentacións Sql mejorado
Presentacións Sql mejorado
 
Expo
ExpoExpo
Expo
 
Lenguaje Sql
Lenguaje SqlLenguaje Sql
Lenguaje Sql
 
Apunte plsql
Apunte plsqlApunte plsql
Apunte plsql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
(2)_sesión_2_construir_base_datos_FINAL(mixta)_v1.2023-1.pdf
(2)_sesión_2_construir_base_datos_FINAL(mixta)_v1.2023-1.pdf(2)_sesión_2_construir_base_datos_FINAL(mixta)_v1.2023-1.pdf
(2)_sesión_2_construir_base_datos_FINAL(mixta)_v1.2023-1.pdf
 
SELECT BASICO _
SELECT BASICO _  SELECT BASICO _
SELECT BASICO _
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Clente servidor consultas sql
Clente servidor consultas sqlClente servidor consultas sql
Clente servidor consultas sql
 
Cliente servidor consultas sql
Cliente servidor consultas sqlCliente servidor consultas sql
Cliente servidor consultas sql
 
Transact sql
Transact sqlTransact sql
Transact sql
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 

Escribiendo sentencias SQL básicas y capacidades de SELECT

  • 1. CAPITULO I ESCRIBIENDO SENTENCIAS BÁSICAS DE SQL OBJETIVOS Después de completar esta lección Ud. deberá ser capaz de realizar lo siguiente:  Listar las capacidades de la sentencia SELECT de SQL.  Ejecutar una sentencia básica de SELECT  Diferenciar entre las sentencias SQL y los comandos de SQL*PLUS OBJETIVO DE LA LECCIÓN  Para extraer datos de la base de datos Ud. necesita usar el comando SELECT del lenguaje estructurado de consulta (SQL.). Ud. podrìa necesitar restringir las columnas que son mostradas. Esta lección describe todos las sentencias SQL. que necesita para obtener estas acciones. Ud. podría querer crear sentencias SELECT que puedan ser reutilizadas. Esta lección también cubre el uso de comandos de SQL*PLUS para ejecutar sentencias de SQL. CAPACIDADES DE LA SENTENCIA SELECT DE SQL La sentencia SELECT recupera información de la base de datos. Al utilizarla Ud. puede realizar lo siguiente:  Selección: Ud. puede utilizar la capacidad de selección para elegir filas en una tabla que Ud. desea de respuesta a una consulta. Ud. puede utilizar varios criterios para restringir selectivamente las columnas que Ud. ve.
  • 2.  Proyección: Ud. puede utilizar la capacidad de proyección para elegir columnas en una tabla que Ud. desea de respuesta a una consulta. Ud. puede elegir unas pocas o muchas columnas de la tabla como requiera.  Unión: Ud. puede utilizar la capacidad de unión para mostrar juntas la información almacenada en diferentes tablas mediante la creación de un link entre ellas.
  • 3. SENTENCIA SELECT BÁSICA SELECT [DISTINCT] {*, column [alias], … } FROM table; • SELECT identifica que columnas va a desplegar • FROM identifica tabla de la que se va a obtener la información En su forma simple, la sentencia SELECT debería incluir lo siguiente: ♠ La cláusula SELECT, la cual especifica cha columnas serán desplegadas ♠ La cláusula FROM, la cual especifica la tabla que contiene las columnas listad en la cláusula SELECT. Sintaxis: SELECT es una lista de una o mas columnas DISTINCT elimina los nombres duplicados * selecciona todas las columnas column selecciona la columna especifica alias le da a la columna seleccionada una cabecera diferente FROM table especifica la tabla que contiene las columnas Nota: A lo largo de este curso las palabras : clave, cláusula y sentencia son utilizadas: ♠ Una clave se refiere a un elemento individual de SQL; por ejemplo: SELECT y FROM son palabras claves. ♠ Una cláusula es parte de una sentencia de SQL., por ejemplo: SELECT empno, ename, … es una cláusula. ♠ Una sentencia es una combinación de dos o mas cláusulas, por ejemplo: SELECT * FROM emp es una sentencia. Volver... ESCRIBIENDO SENTENCIAS SQL • Las sentencias de SQL. son no sensitivas, a menos que se lo indique • Las sentencias de SQL. pueden ser ingresadas en una o en varias líneas. • Las palabras claves no pueden ser divididas en líneas o ser abreviadas. • Las cláusulas son usualmente ubicadas en líneas separadas para una mejor lectura y facilidad de edición • Las tabulaciones pueden ser utilizadas para hacer código mas legible .
  • 4. Usando las siguientes reglas y pautas, Ud. podrá construir sentencias validas que son fáciles para leer y editar: • Las sentencias de SQL. son no sensitivas, a menos que se lo indique. • Las sentencias de SQL. pueden ser ingresadas en una o en varias líneas. • Las palabras claves no pueden ser divididas en líneas o ser abreviadas. • Las cláusulas son usualmente ubicadas en líneas separadas para una mejor lectura y facilidad de edición • Las tabulaciones e indentaciones pueden ser utilizadas para hacer código más legible . • Las palabras claves típicamente son ingresadas en mayúsculas, el resto de las palabras tales como el nombre de las tablas y columnas son ingresadas en minúsculas. • Dentro de SQL*PLUS, una sentencia de SQL es ingresada en el prompt de SQL, y las líneas subsiguientes son numeradas. Esto es denominado SQL buffer. Solamente una sentencia puede estar actualmente en cualquier momento dentro del buffer. EJECUTANDO SENTENCIAS SQL • Ponga un punto y coma (;) al final de la ultima cláusula. • Ponga una diagonal (/) en la ultima línea del buffer. • Ponga una diagonal (/) en el prompt de SQL • Digite el comando RUN de SQL*PLUS en el prompt de SQL SELECCIONANDO TODAS LAS COLUMNAS, TODAS LAS FILAS SQL> SELECT * FROM dept; DEPTNO DNAME LOC ------------- ------------------------- ---------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Ud. puede desplegar todas las columnas de datos en una tabla digitando la palabra clave SELECT con un asterisco (*). En el ejemplo, la tabla departamento contiene tres columnas: deptno, dname y loc. La tabla contiene cuatro filas, una por cada departamento. Ud. también puede desplegar todas las columnas de la tabla listando todas las columnas después de la palabra SELECT. Por ejemplo, la siguiente sentencia SQL, despliega todas las columnas y filas de la tabla: SQL> SELECT deptno, dname, loc FROM dept;
  • 5. SELECCIONANDO COLUMNAS ESPECÍFICAS, TODAS LAS FILAS Ud. puede usar la sentencia SELECT para desplegar columnas especificas de l tabla especificando los nombres de las columnas separadas por comas. En el siguiente ejemplo, se muestran todos los números de departamento y sus localidades de la tabla dept: SQL> SELECT deptno, loc FROM dept; DEPTNO LOC ------------- ---------------- 10 NEW YORK 20 DALLAS 30 CHICAGO 40 BOSTON En la cláusula SELECT se especifican las columnas a observar en el orden en el que se desea que estas aparezcan, por ejemplo, para desplegar la localidad antes del número de departamento se usa la siguiente sentencia: SQL> SELECT loc, deptno FROM dept; LOC DEPTNO ------------------ ------------------- NEW YORK 10 DALLAS 20 CHICAGO 30 BOSTON 40 VALOR POR DEFECTO DE LOS ENCABEZADOS DE COLUMNA Los caracteres del encabezado de columna y sus datos están justificados a la izquierda dentro del ancho de su columna. Los encabezados numéricos y los datos están justificados a la derecha: SQL> SELECT ename, hiredate, sal FROM emp; ENAME HIREDATE SAL ------------------- -------------- ------------ SMITH 17/12/80 800 ALLEN 20/02/81 1600 WARD 22/02/81 1250 JONES 02/04/81 2975 MARTIN 28/09/81 1250
  • 6. Los encabezados de datos y carácter pueden ser truncados, pero los encabezados numéricos no. Los encabezados de columna aparecen en mayúsculas por defecto. Ud. puede modificar el despliegue del encabezado usando un alias. Volver... EXPRESIONES ARITMÉTICAS Operador Descripción + Adición - Substracción * Multiplicación / Dividido Usted puede requerir modificar la manera en la que los datos son desplegados, mejorar cálculos u observarlos como guiones. Esto es posible usando expresiones aritméticas. Una expresión aritmética puede contener nombres de columnas, valores numéricos constantes y operadores aritméticos. OPERADORES ARITMÉTICOS Ud. puede usar los operadores aritméticos en cualquier cláusula de una sentencia SQL exceptuando en la cláusula FROM.
  • 7. USANDO LOS OPERADORES ARITMÉTICOS SQL> SELECT sal,sal+300 FROM emp; ENAME SAL SAL+300 SMITH 800 1100 ALLEN 1600 1900 WARD 1250 1550 JONES 2975 3275 MARTIN 1250 1550 En el siguiente ejemplo Ud. puede calcular un incremento de $300 en el salario para todos los empleados y desplegar una columna nueva SAL+300. Note que el resultado calculado de la columna SAL+300 no es una nueva columna en la tabla emp; sólo es un despliegue. Por defecto el nombre de una nueva columna viene del cálculo que, en este caso, es SAL+300. Nota: SQL*PLUS ignora los espacios en blanco antes y después del operador aritmético. PRECEDENCIA DE LOS OPERADORES * / + - • Multiplicación y la división tienen mayor prioridad que la adición • Los operadores de una misma prioridad son evaluados de izquierda a derecha • Los paréntesis que la expresión dentro de ellos sea evaluada primera. Si una expresión aritmética contiene más de un operador, la multiplicación y división son evaluadas primero. Si los operadores dentro de una expresión tienen la misma prioridad, la evaluación se realiza de izquierda a derecha. Ud. puede usar paréntesis para forzar que la expresión dentro de los paréntesis sea evaluada primero. En el siguiente ejemplo se despliega el nombre, el salario y la compensación anual de los empleados. Esta calcula la compensación anual con 12 multiplicado por el salario mensual mas un bono de $100. Note que la multiplicación es realizada antes de la suma. Nota: Use los paréntesis para reforzar el orden estándar de precedencia y mejorar la claridad. Por ejemplo, la expresión puede ser escrita como (12*sal) +100 sin cambio en el resultado. SQL> SELECT ename, sal, 12*sal+100 FROM emp;
  • 8. ENAME SAL 12*SAL+100 ------------------- -------------- ------------------- SMITH 800 9700 ALLEN 1600 19300 WARD 1250 15100 JONES 2975 35800 MARTIN 1250 15100 USANDO PARÉNTESIS SQL> SELECT ename, sal, 12*(sal+100) FROM emp; ENAME SAL 12*(SAL+100) ------------------- -------------- ------------------- SMITH 800 9700 ALLEN 1600 19300 WARD 1250 15100 JONES 2975 35800 MARTIN 1250 15100 Ud. puede modificar las reglas de precedencia usando paréntesis para especificar el orden en el cual los operadores son ejecutados. El siguiente ejemplo despliega el nombre, salario y compensación anual de los empleados tal como el ejemplo anterior pero debido al paréntesis la adición toma prioridad sobre la multiplicación. DEFINIENDO VALORES NULOS SQL> SELECT ename, job, sal, comm FROM emp; ENAME JOB SAL COMM ------------------- -------------- -------------- ------------- - SMITH CLERK 800 ALLEN SALESMAN 1600 300 WARD SALESMAN 1250 JONES MANAGER 2975 MARTIN SALESMAN 1250 Si en una fila falta el dato para una columna en particular se dice que esta nula o contiene un nulo. Un valor nulo es un valor indefinido, no asignado,
  • 9. desconocido o inaplicado. Un valor nulo no es lo mismo que un cero o un espacio. Cero es un número y un espacio es un caracter. Las columnas de cualquier tipo de dato pueden contener valores nulos, a menos que la columna sea definida como ‘no nula’ o como llave primaria cuando la columna era creada. En la columna COMM de la tabla emp, Ud. puede notar que sólo un vendedor pudo ganar comisiones. Otros empleados son clasificados que no ganaron comisiones. Un valor nulo representa este hecho. Turner, quien es un vendedor, no ha ganado ninguna comisión. Note que esta comisión es cero y no nulo. VALORES NULOS EN EXPRESIONES ARITMÉTICAS SQL> SELECT ename, 12*sal+comm FROM emp WHERE ename=’KING’; ENAME 12*SAL+COMM ------------------- -------------- KING Si el valor de alguna columna en una expresión aritmética es nulo, el resultado es nulo. Por ejemplo, si Ud. se empeña en realizar una división por cero, Ud. obtendrá un error. Sin embargo, si Ud. divide un número por un nulo, el resultado es un nulo o un valor desconocido. En el siguiente ejemplo, el empleado KING no es un vendedor y no obtiene ninguna comisión. Debido a que la columna COMM en la expresión aritmética es nulo, el resultado es nulo. Volver... DEFINIENDO UN ALIAS DE COLUMNA • Permite renombrar una columna • Usado para cálculos • Después de nombrar a la columna se puede poner AS para poner el alias. • Requiere de comillas dobles cuando el alias tiene espacios en blanco. Cuando se despliega el resultado de una consulta, SQL*PLUS normalmente usa el nombre de la columna seleccionada como encabezado de esa columna. En muchas ocasiones este encabezado puede no ser descriptivo y por eso es difícil de ser entendido. Ud. puede cambiar el encabezado de una columna usando un alias. Especifique el alias después de la columna en la lista de SELECT usando un espacio como un separador. Por defecto, el encabezado de alias aparece en mayúsculas. Si el alias contiene espacios , caracteres especiales (tales como # o $), o si es sensitivo, adjunte el alias en comillas dobles (“”).
  • 10. USANDO EL ALIAS DE COLUMNA El siguiente ejemplo despliega el nombre y el salario mensual de todos los empleados. Note que la palabra clave opcional AS ha sido usada antes de la columna con alias. El resultado de la consulta podría ser el mismo aún si la clave AS es usada o nó. Note también que l sentencia SQL tiene un alias d columna nombre y salario en minúsculas, considerando que el resultado de la consulta despliega loa encabezados de columna en mayúsculas asì: SQL> SELECT ename AS name, sal salary FROM emp NAME SALARY ------------------- ------------ SMITH 800 ALLEN 1600 WARD 1250 JONES 2975 MARTIN 1250 SQL> SELECT ename “name”, sal*12 “salario anual” FROM emp NAME SALARIO ANUAL ---------------- ------------ -- SMITH 9600 ALLEN 19200 WARD 15000 JONES 35700 MARTIN 15000 En este ejemplo se despliega el nombre y el salario anual de todos los empleados. Debido a que el salario anual contiene espacios, este ha sido encerrado entre comillas dobles. Note que el encabezado de columna en la salida es exactamente el mismo que en la columna alias. Volver... OPERADOR DE CONCATENACIÓN • Concatena columnas o cadenas de caracteres u otras columnas • Representado por || • Crea una columna resultante que es una expresión
  • 11. Ud. puede unir columnas a otras columnas, expresiones aritméticas o valores constantes para crear una expresión caracter usando el operador de concatenación ( | | ). Las columnas a cada lado del operador son combinadas para crear una salida como una única columna. USANDO EL OPERADOR DE CONCATENACIÓN En el siguiente ejemplo, las columnas ename y job son concatenados y son asignadas el alias empleados. Note que el numero del empleado y el trabajo están combinadas para producir por salidauna sola columna. La palabra clave AS abtes del nombre del alias hace que la cláusula SELECT sea fácil de leer. SQL> SELECT ename || job as “empleados” FROM Emp EMPLEADOS ------------------- SMITHCLERK ALLENSALESMAN WARDSALESMAN JONESMANAGER MARTINSALESMAN CADENAS LITERALES DE CARACTERES Un literal es un carácter, un número, o información incluida en la sentencia SELECT lista que no hay un nombre de columna o un alias de columna. Ésta se encuentra impresa para cada fila retornada. Las cadenas literales con texto de libre formato pueden ser incluìdas in el resultado de la consulta y ser tratadas igual que en la lista de la sentencia SELECT. Los datos y caracteres literales deberán estar encerrados entre comillas simples mientras que los números no. USANDO UNA CADENA LITERAL DE CARACTERES SQL> SELECT ename || ‘ is a ’ || job as “Detalles de Empleados ” FROM emp; DETALLES DE EMPLEADOS ------------------- SMITH is a CLERK ALLEN is a SALESMAN WARD is a SALESMAN JONES is a MANAGER MARTIN is a SALESMAN En el siguiente ejemplo se despliegan los nombres y trabajos de todos los empleados. La columna ha sido titulado como Detalles de Empleados. Note que los espacios entre las comillas simples en la sentencia SELECT. El espacio mejora la legibilidad de la salida.
  • 12. En el siguiente ejemplo, el nombre y el salario de cada empleado está concatenado con un literal para dar a la fila que retorna un mayor significado: SQL> SELECT ename || ‘ : ’ || ‘ 1 ’ 2 || ‘ Salario Mensual = ’ || sal monthly 3 FROM emp; MONTHLY ---------------------------------------------------------- ----- SMITH 1 Salario Mensual =800 ALLEN 1 Salario Mensual =1600 WARD 1 Salario Mensual =1250 JONES 1 Salario Mensual =2975 MARTIN 1 Salario Mensual =1250 BLAKE 1 Salario Mensual =2850 Volver... FILAS DUPLICADAS SQL> SELECT deptno FROM Emp DEPTNO ------------------- 10 30 10 20 10 A menos que Ud. lo indique en otra parte, SQL*PLUS despliega el resultado de una consulta sin eliminar las filas duplicadas. En el siguiente ejemplo se muestran todos los números de departamento de la tabla emp. Note que los números de departamento son repetidos.
  • 13. ELIMINANDO LAS FILAS DUPLICADAS. SQL> SELECT DISTINCT deptno FROM emp DEPTNO ------------------- 10 20 30 Para eliminar las filas duplicadas en el resultado incluya la palabra clave DISTINCT en la cláusula SELECT inmediatamente después de ella. En el siguiente ejemplo, la tabla emp actualmente contiene 14 filas pero únicamente solo tres números de departamento en la tabla. Ud. puede especificar múltiples columnas después del cualificador DISTINCT, el mismo que afecta a todas las columnas seleccionadas y los resultados representan un combinación distinta de las columnas. SQL> SELECT DISTINCT deptno, job FROM emp DEPTNO JOB ------------------- ------------------ 10 CLERK 10 MANAGER 10 PRESIDENT 20 ANALYST Volver... INTERACCIÓN DE SQL Y SQL*PLUS
  • 14. Sentencia SQL Búffer Sentencia SQL SQL*PLUS Server Comandos Query SQL*PLUS Results Reporte Formatead Server SQL Y SQL*PLUS SQL es un lenguaje de comandos para la comunicación con el servidor de lenguaje Oracle desde cualquier herramienta o aplicación. Oracle SQL contiene muchas extensiones. Cuando Ud. ingresa una sentencia SQL Ésta es almacenada en una parte de la memoria llamada buffer de SQL y permanece allí hasta que Ud. ingrese una nueva sentencia. SQL*PLUS es una herramienta de Oracle que reconoce y somete las sentencias SQL al servidor de Oracle para su ejecución y contiene su propio lenguaje. CARACTERÌSTICAS DEL SQL • Puede ser utilizado por un rango de usuarios, incluìdos aquellos con un poco o sin ninguna experiencia. • Es un lenguaje no procedimental. • Reduce la cantidad de tiempo requerido para crear y mantener un sistema. • Es un lenguaje similar al Inglés. CARACTERISTICAS DEL SQL*PLUS • Acepta entradas de sentencias ad-hoc.
  • 15. Acepta entradas de SQL desde archivo. • Provee un editor de línea para modificar las sentencias SQL • Controla la configuración del entorno. • Formatea los resultados de las consultas dentro de un reporte básico. • Accede local y remotamente a las bases de datos. SENTENCIAS SQL VERSUS COMANDOS SQL*PLUS SQL SQL*PLUS * un idioma * un ambiente * es estándar de ANSI * propiedad de Oracle * palabras claves no pueden abreviarse * las palabras claves pueden ser abreviadas. * .las sentencias manipulan datos y * los comandos no permiten la definiciones de tablas en la base de manipulación de valores en la base de datos datos Sentencias Búffe Comandos Búffer SQL r SQL SQL SQL*PLUS La siguiente tabla compara a SQL y SQL*PLUS : SQL SQL*PLUS • Es un lenguaje para la comunicación • Reconoce las sentencias SQL y con el servidor Oracle para el las envìa al servidor. acceso de los datos • Está basado en el estándar ANSI • La interfase es propiedad de SQL Oracle para la ejecución de las sentencias SQL • Manipula los datos y las definiciones • No permite la manipulación de de las tablas en la base de datos. valores en la base de datos . • Es ingresado en el buffer SQL en • Es ingresado una línea a la vez. una o más líneas No se almacena en el buffer SQL • No tiene una continuación de • Tiene un guión (-) como n carácter carácter de continuación si el comando es más extenso que una línea. • No puede estar abreviado • Puede estar abreviado • Utiliza un caracter de terminación • No requiere de caracteres de para ejecutar el comando terminación; los comandos son inmediatamente ejecutados • inmediatamente. • Utiliza funciones para realizar • Utiliza comandos para formatear algunos formatos datos.
  • 16. APRECIACIÓN GLOBAL DE SQL*PLUS • Anotaciones en SQL*PLUS • Describe la estructura de la tabla • Edita sus sentencias de SQL • Ejecuta el SQL desde el SQL*PLUS • Guarda las sentencias SQL en archivos y añade las sentencias SQL a los archivos • Ejecuta archivos guardados. • Carga los comandos desde el archivo al buffer para su edición. SQL*PLUS es un entorno en el cual Ud. puede desarrollar lo siguiente: • Ejecuta las sentencias SQL para recuperar, modificar, agregar y remover datos de la base de datos. • Formatea, realiza cálculos, almacena e imprime los resultados de reportes en forma de reportes. • Crea un archivo de escritura (script) para guardar las sentencias SQL para uso repetitivo en el futuro. Los comandos de SQL*PLUS pueden ser divididos en las siguientes categorìas: Categorìa Propósito Entorno Afecta el comportamiento general de las sentencias de SQL para esa sesión Formato Formatea el resultado de las consultas Manipulación Guarda, carga y corre archivos de escritura de archivo Ejecución Envìa sentencias SQL hacia el buffer de Oracle 8 Server Edición Modifica las sentencias SQL en el buffer. Interacción Le permite a Ud. crear y pasar variables a las sentencias SQL, imprimirlas y presentar mensajes en pantalla Misceláneos Tiene varios comandos para conectarse a la base de datos, manipular el entorno de SQL*PLUS y desplegar las definiciones de las columnas. CONECTÁNDOSE A SQL*PLUS • Para el entorno de Windows
  • 17. Con la línea de Comando Sqlplus[username[/password[@database]]] username[/password[@database]]] La manera de invocar SQL*PLUS depende del tipo de sistema operativo o entorno Windows que Ud.esté corriendo. Para conectarse en unambiente Windows: • Click en start -> programas -> Oracle para WinNT -> SQL*PLUS plus 8.0 • Llenar los campos username, password y database Para conectarse a través de un entorno de líneas de comando (DOS): • Conéctese a su máquina. • Ingrese el comando de SQL*PLUS de la siguiente manera: > sqlplus [username [/password[ @database ]]]  username: es el nombre de su base de datos  password: es la clave de su base de datos. (si Ud. ingresa la clave aquì, ésta es visible)  @database: es la cadena para conectarse a la base de datos. Nota: Para asegurar la integridad de su clave, no la ingrese en el prompt del sistema operativo. En su lugar, ingrese únicamente su nombre de usuario. Ingrese el password en el prompt del password. Una vez que Ud. se ha conectado con éxito a SQL*PLUS , Ud. podrá observar el siguiente mensaje: SQL*Plus: Release 8.0.3.0.0 - Production on Vie Dic 28 1:54:30 2001 (c) Copyright 1997 Oracle Corporation. All rights reserved. Conectado a: Personal Oracle8 Release 8.0.3.0.0 - Production With the Partitioning option PL/SQL Release 8.0.3.0.0 - Production Volver... DESPLEGANDO LA ESTRUCTURA DE LA TABLA DESCRIBE [tablename] En SQL*PLUS Ud. puede desplegar la estructura de la tabla usando el comando describe. El resultado del comando permite ver los nombres de las columnas y sus tipos de datos asì como si una columna debería contener datos. Sintaxis:
  • 18. tablename: es el nombre de una tabla existente, vista o sinónimo accesible para el usuario. SQL> DESCRIBE dept DEPTNO NULL? TYPE --------------- ------------------ ------------------ -- DEPTNO NOT NULL Number (2) DANME Varchar2 (14) LOC Varchar2 (13) En el anterior ejemplo se observa la descripción de la tabla dept: - null? Indica si una columna deberá contener datos; not null indica que esa columna deberá contener datos. - type despliega el tipo de dato de una columna Los tipos de datos son descritos en la siguiente tabla: Tipo de dato Descripción NUMBER (p, s) Valor numérico que tiene un máximo número de dígitos p, y el numero de dígitos decimales s. VARCHAR2(s) Valor carácter de longitud variable con un máximo de tamaño s DATE Valor de tiempo y fecha entre Enero1, 4712 AC y Diciembre 31,9999 DC CHAR (s) Longitud fija de caracteres con un valor de tamaño s. COMANDOS DE EDICIÓN DE SQL*PLUS Los comandos de edición de SQL*PLUS son ingresados una línea a la vez y no son almacenados en el buffer de SQL Comandos Descripción A[PPEND] text Agrega texto al final de la línea actual C[HANGE] /old / Cambia un texto viejo por uno nuevo en la línea actual. new C[HANGE] /text Borra el texto de la línea actual C[LEAR] Borra todas las líneas del buffer SQL BUFF[ER] DEL Borra la línea actual HI[NPUT] Inserta un número indefinido de líneas I[NPUT] text Inserta una línea consistente de texto L[IST] Lista todas las líneas del buffer de SQL L[IST]n Lista una línea (especificada por n) L[IST]m n Lista un rango de líneas (m a n) R[UN] Despliega y corre la sentencia de SQL que actualmente está en el buffer N Especifica la linea para hacerla línea actual n text Reemplaza la linea n con texto 0 text Inserta una linea antes de la línea 1
  • 19. PAUTAS: • Si Ud. presiona [return] antes de completar un comando, SQL*PLUS le avisa a Ud. mediante un número. • Ud. termina el buffer SQL por ingresar uno de los caracteres de terminación ( ; o / ) o presionando [return] dos veces. Luego Ud. verá el prompt de SQL • Ud. puede ingresar solamente un comando SQL*PLUS por cada prompt. Los comandos no son almacenados en el buffer. Para continuar con un comando SQL*PLUS en la siguiente línea, finalice la línea actual con un guión (-). COMANDOS DE ARCHIVOS DE SQL*PLUS Las sentencias de SQL se comunican con el servidor de Oracle. Los comandos de SQL*PLUS controlan el entorno, el formato de las consultas y administran los archivos. Ud. puede usar los comandos identificados en la siguiente tabla: Comandos Descripción S[AVE] filename [.ext] Guarda el contenido actual del buffer SQL en un [REP[LACE]APP[END]] archivo. Use append para añadir algo en un archivo existente; use replace para sobreescribir un archivo existente. La extensión por defecto es *.sql GET filename [.ext] Escribe el contenido de un archivo previamente guardado en el buffer SQL La extensión por defecto es *.sql STA[RT]filename [.ext] Corre un comando de archivo previamente almacenado @filename [.ext] Corre un comando de archivo previamente almacenado (similar a START) ED[IT] Invoca al editor y almacena el contenido del buffer en un archivo llamado afied.buf ED[IT]filename [.ext] Invoca al editor para editar el contenido de un archivo almacenado SPO[OL]filename [.ext] Almacena los resultados de las consultas en un OFF/OUT archivo. Off cierra el archivo spool. Out cierra el archivo y envìa el resultado del archivo al sistema de impresión EXIT Abandona SQL*PLUS Volver...