DB2 - Banco de dados - Instruções e Funções Básicas - SELECT


Volta a página anterior

Volta ao Menu Principal


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

SELECT

Com a instrução SELECT, você poderá especificar o nome de cada coluna que deseja recuperar de uma tabela.
Você pode nomear uma ou mais colunas de uma tabela ou exibição ou selecionar todas as colunas.
Cada instrução SELECT pode selecionar informações de diversas tabelas.

Você pode usar a palavra-chave DISTINCT para eliminar informações duplicadas se você estiver selecionando dados a partir de várias tabelas.

QMF exibe dados selecionados de acordo com o código de edição padrão para o tipo de dado.

Não pode ser usada mais de uma instrução SELECT em uma consulta que inclua outras instruções SQL.

Selecionando Todas as Colunas de uma Tabela

Para recuperar todas as colunas de uma tabela, utilize um asterisco (*) em vez de nomear as colunas.
O formato de uma instrução SELECT usada para essa seleção é:

   SELECT * 
   FROM   tablename

Nessa instrução, tablename é o nome da tabela ou a visualização que você está procurando.
Por exemplo, essa intrução retorna todas as colunas em Q.ORG:

   SELECT * 
   FROM   Q.ORG

Essa consulta retorna todas as colunas, mas só exibe as linhas onde o número do departamento é 10:

   SELECT *
   FROM   Q.STAFF
   WHERE DEPT = 10

Selecionando Colunas de uma Tabela

Para selecionar colunas a partir de uma tabela, insira SELECT, seguido pelos nomes exatos das colunas na ordem (da esquerda para a direita) na qual as deseja em seu relatório.
Separe nomes de colunas com uma vírgula.

A instrução a seguir produz um relatório com os nomes do departamento à esquerda e os números do departamento à direita:

    SELECT DEPTNAME
    ,      DEPTNUMB
    FROM   Q.ORG

Você pode alterar a ordem das colunas do relatório, alterando o formulário.
A ordem padrão das colunas no formulário é a mesma ordem na qual elas são nomeadas na consulta.

Você pode selecionar uma coluna mais de uma vez; isso permite que você utilize várias funções de agregação no formulário.

É possível selecionar até 750 nomes de colunas (ou expressões) no DB2 for z/OS e até 255 quando conectado a bancos de dados DB2 for VSE and VM .

Você pode utilizar um nome de coluna em uma cláusula WHERE sem utilizar o nome da coluna na cláusula SELECT.

Exemplos:

  • Para selecionar somente as colunas ID e NAME da tabela Q.STAFF, utilize uma consulta como a seguinte:
       SELECT ID
       ,      NAME
       FROM   Q.STAFF
  • Para selecionar as colunas NAME e ID da tabela Q.STAFF, e listar NAME primeiro, utilize uma consulta como a seguinte:
       SELECT NOME
       ,      ID
       FROM   Q.STAFF

Incluir Colunas Descritivas

Você pode incluir uma coluna de informações descritivas a seu relatório, colocando uma constante entre aspas na lista de colunas de sua instrução SELECT.
O comprimento de uma constante é determinado pelo banco de dados.
As constantes podem conter caracteres alfabéticos, caracteres numéricos ou uma combinação dos dois.
O exemplo a seguir lista os nomes e endereços de pessoas da tabela Q.APPLICANT com 14 anos de escolaridade e identifica cada um como candidato.

Esta consulta:

   SELECT NAME
   ,      ADDRESS
   ,     'APPLICANT'
   FROM   Q.APPLICANT
   WHERE  EDLEVEL = 14
   ORDER  BY NAME

Produz este relatório:

   NAME         ADDRESS            COL1     
   ---------    -----------------  ---------
   CASALS       PALO ALTO,CA       APPLICANT
   REID         ENDICOTT,NY        APPLICANT
   RICHOWSKI    TUCSON,AZ          APPLICANT

O relatório inclui três colunas: uma contendo nomes, uma contendo endereços e uma nova coluna criada contendo a palavra APPLICANT para cada linha selecionada.
O gerenciador do banco de dados adiciona um nome de coluna à coluna recém-criada.
Esse nome varia, dependendo do gerenciador do banco de dados usado em seu site.
Você pode alterar o nome dessa coluna utilizando os painéis de formulário.

Usando as Subconsultas

Subconsultas selecionam dados de uma tabela.
Os dados são então usados para testar uma condição da cláusula WHERE da consulta principal.
Por exemplo, essa consulta possui uma subconsulta (começando com a instrução SELECT DEPTNUMB) que produz uma lista de funcionários que trabalham na divisão Leste:


   SELECT NOME
   ,      ID
   FROM   Q.STAFF
   WHERE  DEPT = SOME
         (SELECT DEPTNUMB            
          FROM   Q.ORG                 
          WHERE  DIVISION='EASTERN')   

Primeiro, a subconsulta encontra os números de departamentos da divisão Eastern.
Em seguida, a consulta principal procura funcionários que trabalham em qualquer um desses departamentos.

Quando existem diversas subconsultas, a última é executada primeiro e a primeira é executada por último.

Exemplos

Cada um dos exemplos a seguir inclui uma subconsulta que é destacada.

   SELECT DEPT
   ,      NAME
   ,      SALARY
   FROM   Q.STAFF CORRVAR
   WHERE  SALARY = 
         (SELECT MAX(SALARY)
          FROM   Q.STAFF
          WHERE  DEPT = CORRVAR.DEPT)
   SELECT ID
   ,      NAME
   FROM   Q.STAFF
   WHERE  DEPT IN
         (SELECT DISTINCT DEPTNUMB
          FROM   Q.ORG
          WHERE  DIVISION = 'MIDWEST')
   ORDER  BY ID
   SELECT DEPT
   ,      AVG(SALARY)
   FROM   Q.STAFF
   GROUP  BY DEPTO
   HAVING AVG(SALARY) >
         (SELECT AVG(SALARY) FROM Q.STAFF)

Acessando dados QMF Data Service (QDS)

Os usuários do QMF podem usar o recurso QMF Data Service para acessar dados não-DB2, como VSAM, IMS, arquivos sequenciais, dados SMF, dados SYSLOG e mais.

Para acessar dados QDS, a variável global DSQEC_DS_SUPPORT do QMF for TSO e CICS deve ser configurada para um valor de '1'; para obter mais informações sobre como configurar a variável global DSQEC_DS_SUPPORT, consulte Variáveis globais que controlam a maneira como os comandos e procedimentos são executados.

As origens de dados QMF Data Service são acessadas por nomes de tabelas com três partes na consulta SQL.
QMF Data Service pode associar uma ou mais origens existentes no servidor. O SQL aceito pelo QMF Data Service é um subconjunto de SQL aceito por DB2 para z/OS.
Consulte o guia QMF Data Service SQL para a sintaxe SQL aceita.



© Copyright IBM Corp.