Ejemplos de consultas sentencia-select

Los ejemplos siguientes ilustran la consulta sentencia-select.

  • Ejemplo 1: Seleccione todas las columnas y filas de la tabla EMPLOYEE.
      SELECT * FROM EMPLOYEE
  • Ejemplo 2:  Seleccione el nombre del proyecto (PROJNAME), la fecha de inicio (PRSTDATE) y la fecha de finalización (PRENDATE) de la tabla PROJECT. Ordene la tabla resultante por la fecha de finalización con las fechas más recientes primero.
      SELECT PROJNAME, PRSTDATE, PRENDATE
       FROM PROJECT          
       ORDER BY PRENDATE DESC
  • Ejemplo 3: Seleccione el número de departamento (WORKDEPT) y el salario medio del departamento (SALARY) para todos los departamentos de la tabla EMPLOYEE. Ordene la tabla resultante por orden ascendente por el salario medio del departamento.
      SELECT WORKDEPT, AVG(SALARY)
         FROM EMPLOYEE   
         GROUP BY WORKDEPT 
         ORDER BY 2
  • Ejemplo 4:  Declare un cursor llamado UP_CUR para utilizarlo en un programa C para actualizar las columnas de fecha de inicio (PRSTDATE) y de fecha de finalización (PRENDATE) en la tabla PROJECT. El programa debe recibir los dos valores junto con el valor de número del proyecto (PROJNO) para cada fila.
      EXEC SQL  DECLARE UP_CUR CURSOR FOR
                  SELECT PROJNO, PRSTDATE, PRENDATE
                    FROM PROJECT
                    FOR UPDATE OF PRSTDATE, PRENDATE;
  • Ejemplo 5:  Este ejemplo denomina a la expresión SAL+BONUS+COMM como TOTAL_PAY
       SELECT SALARY+BONUS+COMM AS TOTAL_PAY
         FROM EMPLOYEE
         ORDER BY TOTAL_PAY
  • Ejemplo 6:  Determine el número de empleado y el salario de los representantes de ventas junto con el salario medio y el número total de empleados de sus departamentos. Asimismo, liste el salario medio del departamento con el salario medio más alto.
    La utilización de una expresión de tabla común para este caso ahorra los recursos de proceso que implica la creación de la vista DIFO como una vista normal. Durante la preparación de la sentencia, se evita el acceso al catálogo para la vista y, debido al contexto del resto de la selección completa, la vista sólo considera las filas para el departamento de representantes de ventas.
     WITH
        DINFO (DEPTNO, AVGSALARY, EMPCOUNT) AS
            (SELECT OTHERS.WORKDEPT, AVG(OTHERS.SALARY), COUNT(*)
              FROM EMPLOYEE OTHERS
              GROUP BY OTHERS.WORKDEPT
            ),
        DINFOMAX AS
            (SELECT MAX(AVGSALARY) AS AVGMAX FROM DINFO)
     SELECT THIS_EMP.EMPNO, THIS_EMP.SALARY,
            DINFO.AVGSALARY, DINFO.EMPCOUNT, DINFOMAX.AVGMAX
      FROM EMPLOYEE THIS_EMP, DINFO, DINFOMAX
      WHERE THIS_EMP.JOB = 'SALESREP'
      AND THIS_EMP.WORKDEPT = DINFO.DEPTNO
  • Ejemplo 7: Dadas dos tablas, EMPLOYEE y PROJECT, sustituya employee SALLY por un nuevo empleado GEORGE, asigne todos los proyectos dirigidos por SALLY a GEORGE y devuelva los nombres de los proyectos actualizados.
      WITH
        NEWEMP AS (SELECT EMPNO FROM NEW TABLE
                    (INSERT INTO EMPLOYEE(EMPNO, FIRSTNME)
                        VALUES(NEXT VALUE FOR EMPNO_SEQ, 'GEORGE'))),
        OLDEMP AS (SELECT EMPNO FROM EMPLOYEE WHERE FIRSTNME = 'SALLY'),
        UPPROJ AS (SELECT PROJNAME FROM NEW TABLE
                    (UPDATE PROJECT
                        SET RESPEMP = (SELECT EMPNO FROM NEWEMP)
                        WHERE RESPEMP = (SELECT EMPNO FROM OLDEMP))),
        DELEMP AS (SELECT EMPNO FROM OLD TABLE
                    (DELETE FROM EMPLOYEE
                        WHERE EMPNO = (SELECT EMPNO FROM OLDEMP)))
      SELECT PROJNAME FROM UPPROJ;
  • Ejemplo 8: Recupere los datos de la tabla DEPT. Esos datos se actualizarán posteriormente con una actualización buscada, y estarán bloqueados cuando se ejecute la consulta.
      SELECT DEPTNO, DEPTNAME, MGRNO
        FROM DEPT
        WHERE ADMRDEPT ='A00'
        FOR READ ONLY WITH RS USE AND KEEP EXCLUSIVE LOCKS
  • Ejemplo 9: Seleccione todas las columnas y filas de la tabla EMPLOYEE. Si otra transacción está actualizando, suprimiendo o insertando datos de forma simultánea en la tabla EMPLOYEE, la operación select esperará hasta que se complete la otra transacción para obtener los datos.
      SELECT * FROM EMPLOYEE WAIT FOR OUTCOME