DB2 - Exemplos simples - SELECT



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - SELECT

The SELECT statement queries data from one or more tables in a database.
It is one of the most complex SQL statements in Db2.

A instrução SELECT consulta dados de uma ou mais tabelas em um banco de dados.
É uma das instruções SQL mais complexas no Db2.

The basic format and syntax of the SELECT statement consists of several required and optional clauses.
You can write SQL statements on one line or on many lines.
For SQL statements in precompiled programs, the rules for the continuation of lines are the same as those of the host language (the language the program is written in).
A SELECT statement can also be used by a cursor in a program. Finally, a SELECT statement can be prepared in a dynamic application.

O formato básico e a sintaxe da instrução SELECT consistem em várias cláusulas obrigatórias e opcionais.
Você pode escrever instruções SQL em uma linha ou em várias linhas.
Para instruções SQL em programas pré-compilados, as regras para a continuação de linhas são as mesmas da linguagem hospedeira (a linguagem em que o programa foi escrito).
Uma instrução SELECT também pode ser usada por um cursor em um programa. Finalmente, uma instrução SELECT pode ser preparada em um aplicativo dinâmico.

Notes:

  • The SQL statements described in this section can be run on SQL tables and views, and database physical and logical files.
  • Character strings specified in an SQL statement (such as those used with WHERE or VALUES clauses) are case-sensitive; that is, uppercase characters must be entered in uppercase and lowercase characters must be entered in lowercase.
       WHERE ADMRDEPT='a00'     (does not return a result)
       WHERE ADMRDEPT='A00'     (returns a valid department number)
    Comparisons might not be case sensitive if a shared-weight sort sequence is used where uppercase and lowercase characters are treated as the same characters.

Notas:

  • As instruções SQL descritas nesta seção podem ser executadas em tabelas e visualizações SQL e arquivos físicos e lógicos de banco de dados.
  • As cadeias de caracteres especificadas em uma instrução SQL (como as usadas com as cláusulas WHERE ou VALUES) diferenciam maiúsculas de minúsculas; ou seja, os caracteres maiúsculos devem ser inseridos em maiúsculas e os caracteres minúsculos devem ser inseridos em minúsculas.
       WHERE ADMRDEPT='a00'     (does not return a result)
       WHERE ADMRDEPT='A00'     (returns a valid department number)
    As comparações podem não fazer distinção entre maiúsculas e minúsculas se uma sequência de classificação de peso compartilhado for usada onde caracteres maiúsculos e minúsculos são tratados como os mesmos caracteres.

A SELECT statement can include the following:

  1. The name of each column you want to include in the result.
  2. The name of the table or view that contains the data.
  3. A search condition to identify the rows that contain the information you want.
  4. The name of each column used to group your data.
  5. A search condition that uniquely identifies a group that contains the information you want.
  6. The order of the results.
  7. An offset into the result set to enable skipping a number of rows.
  8. The number of rows to return.

Uma instrução SELECT pode incluir o seguinte:

  1. O nome de cada coluna que você deseja incluir no resultado.
  2. O nome da tabela ou visualização que contém os dados.
  3. Uma condição de pesquisa para identificar as linhas que contêm as informações que você deseja.
  4. O nome de cada coluna usada para agrupar seus dados.
  5. Uma condição de pesquisa que identifica exclusivamente um grupo que contém as informações que você deseja.
  6. A ordem dos resultados.
  7. Um deslocamento no conjunto de resultados para permitir o salto de várias linhas.
  8. O número de linhas a serem retornadas.

A SELECT statement looks like this:
Uma instrução SELECT se parece com isto:

    SELECT column names
      FROM table or view name
     WHERE search condition
     GROUP BY column names
    HAVING search condition
     ORDER BY column-name
    OFFSET number of rows
     FETCH FIRST n ROWS ONLY

The SELECT and FROM clauses must be specified.
The other clauses are optional.
With the SELECT clause, you specify the name of each column you want to retrieve.
For example:

As cláusulas SELECT e FROM devem ser especificadas.
As outras cláusulas são opcionais.
Com a cláusula SELECT, você especifica o nome de cada coluna que deseja recuperar.
Por exemplo:

    SELECT EMPNO, LASTNAME, WORKDEPT

You can specify that only one column be retrieved, or as many as 8000 columns.
The value of each column you name is retrieved in the order specified in the SELECT clause.
If you want to retrieve all columns (in the same order as they appear in the table's definition), use an asterisk (*) instead of naming the columns:

Você pode especificar que apenas uma coluna seja recuperada ou até 8.000 colunas.
O valor de cada coluna nomeada é recuperado na ordem especificada na cláusula SELECT.
Se você deseja recuperar todas as colunas (na mesma ordem em que aparecem na definição da tabela), use um asterisco (*) em vez de nomear as colunas:

    SELECT *

The FROM clause specifies the table that you want to select data from.
You can select columns from more than one table.
When issuing a SELECT, you must specify a FROM clause.
Issue the following statement:

A cláusula FROM especifica a tabela que você deseja selecionar dados a partir.
Você pode selecionar colunas de mais de uma tabela.
Ao emitir um SELECT, você deve especificar uma cláusula FROM.
Emita a seguinte declaração:

    SELECT *
      FROM EMPLOYEE

The result is all of the columns and rows from the table EMPLOYEE.
The SELECT list can also contain expressions, including constants, special registers, and scalar fullselects.
An AS clause can be used to give the resulting column a name.
For example, issue the following statement:

O resultado são todas as colunas e linhas da tabela EMPLOYEE.
A lista SELECT também pode conter expressões, incluindo constantes, registros especiais e seleções completas escalares.
Uma cláusula AS pode ser usada para dar um nome à coluna resultante.
Por exemplo, emita a seguinte declaração:

    SELECT LASTNAME, SALARY * .05 AS RAISE
      FROM EMPLOYEE
     WHERE EMPNO = '200140'

The result of this statement follows.
O resultado desta declaração segue.

    Table 1. Results for query

    LASTNAME                          RAISE
    NATZ                              1421

Select all the rows from DSN8B10.EMP, arranging the result table in chronological order by date of hiring.
Selecione todas as linhas de DSN8B10 .EMP, organizando a tabela de resultados em ordem cronológica por data de contratação.

    SELECT * 
      FROM DSN8B10.EMP
     ORDER BY HIREDATE;

Select the department number (WORKDEPT) and average departmental salary (SALARY) for all departments in the table DSN8B10.EMP.
Arrange the result table in ascending order by average departmental salary.
Selecione o número do departamento (WORKDEPT) e o salário médio do departamento (SALÁRIO) para todos os departamentos na tabela DSN8B10 .EMP.
Organize a tabela de resultados em ordem crescente por salário médio do departamento.

    SELECT WORKDEPT, AVG(SALARY)
      FROM DSN8B10.EMP
     GROUP BY WORKDEPT
     ORDER BY 2;

Change various salaries, bonuses, and commissions in the table DSN8B10.EMP.
Confine the changes to employees in departments D11 and D21. Use positioned updates to do this with a cursor named UP_CUR.
Use a FOR UPDATE clause in the cursor declaration to indicate that all updatable columns are updated.
Below is the declaration for a PL/I program.
Altere vários salários, bônus e comissões na tabela DSN8B10 .EMP.
Limite as mudanças aos funcionários nos departamentos D11 e D21. Use as atualizações posicionadas para fazer isso com um cursor denominado UP_CUR.
Use uma cláusula FOR UPDATE na declaração do cursor para indicar que todas as colunas atualizáveis são atualizadas.
Abaixo está a declaração de um programa PL/I.

    EXEC SQL 
         DECLARE UP_CUR CURSOR FOR
            SELECT WORKDEPT, EMPNO, SALARY, BONUS, COMM
              FROM DSN8B10.EMP
             WHERE WORKDEPT IN ('D11','D21')
               FOR UPDATE;

Beginning where the cursor is declared, all updatable columns would be updated.
If only specific columns needed to be updated, such as only the salary column, the FOR UPDATE clause could be used to specify the salary column (FOR UPDATE OF SALARY).
Começando onde o cursor é declarado, todas as colunas atualizáveis seriam atualizadas.
Se apenas colunas específicas precisassem ser atualizadas, como apenas a coluna de salário, a cláusula FOR UPDATE poderia ser usada para especificar a coluna de salário (FOR UPDATE OF SALARY).

Find the maximum, minimum, and average bonus in the table DSN8B10.EMP.
Execute the statement with uncommitted read isolation, regardless of the value of ISOLATION with which the plan or package containing the statement is bound.
Assign 13 as the query number for the SELECT statement.
Encontre o bônus máximo, mínimo e médio na tabela DSN8B10 .EMP.
Execute a instrução com isolamento de leitura não confirmado, independentemente do valor de ISOLATION com o qual o plano ou pacote que contém a instrução está vinculado.
Atribua 13 como o número da consulta para a instrução SELECT.

    EXEC SQL
         SELECT MAX(BONUS), MIN(BONUS), AVG(BONUS)
           INTO :MAX, :MIN, :AVG
           FROM DSN8B10.EMP
           WITH UR
        QUERYNO 13;

If bind option EXPLAIN(YES) is specified, rows are inserted into the plan table.
The value used for the QUERYNO column for these rows is 13.
Se a opção de ligação EXPLAIN (YES) for especificada, as linhas serão inseridas na tabela de plano.
O valor usado para a coluna QUERYNO para essas linhas é 13.

Assume that table DSN8B10.EMP has 1000 rows and you want to see the first five EMP_ROWID values that were inserted into DSN8B10.EMP_PHOTO_RESUME.
Suponha que a tabela DSN8B10 .EMP tenha 1000 linhas e você deseja ver os primeiros cinco valores EMP_ROWID que foram inseridos em DSN8B10 .EMP_PHOTO_RESUME.

    EXEC SQL 
         DECLARE CS1 CURSOR FOR
            SELECT EMP_ROWID
              FROM FINAL TABLE (INSERT INTO DSN8B10.EMP_PHOTO_RESUME (EMPNO)
                                SELECT EMPNO FROM DSN8B10.EMP)
                                FETCH FIRST 5 ROWS ONLY;

All 1000 rows are inserted into DSN8B10.EMP_PHOTO_RESUME, but only the first five are returned.
Todas as 1000 linhas são inseridas em DSN8B10 .EMP_PHOTO_RESUME, mas apenas as cinco primeiras são retornadas.