A instrução SQL SELECT

Recuperando dados usando a instrução SQL Select

SQL é uma linguagem de banco de dados abrangente. SQL, pronuncia-se Sequel ou simplesmente SQL, é uma linguagem de programação de computador usada para consultar bancos de dados relacionais seguindo uma abordagem não processual. Quando você extrai informações de um banco de dados usando SQL, isso é denominado consulta ao banco de dados.

Um banco de dados relacional é implementado por meio do uso de um Relational Database Management System (RDBMS). Um RDBMS executa todas as funções básicas do software DBMS mencionado acima, juntamente com uma infinidade de outras funções que tornam o modelo relacional mais fácil de entender e implementar. Os usuários do RDBMS manipulam dados por meio do uso de uma linguagem especial de manipulação de dados. As estruturas de banco de dados são definidas por meio do uso de uma linguagem de definição de dados. Os comandos que os usuários do sistema executam para armazenar e recuperar dados podem ser inseridos em um terminal com uma interface RDBMS digitando os comandos, ou inseridos através do uso de algum tipo de interface gráfica. O DBMS então processa os comandos.

Capacidades da instrução SELECT

A recuperação de dados da base de dados é feita por meio do uso adequado e eficiente de SQL. Três conceitos da teoria relacional abrangem a capacidade da instrução SELECT: projeção, seleção e junção.

  • Projeção: uma operação de projeto seleciona apenas certas colunas (campos) de uma tabela. A tabela de resultados tem um subconjunto das colunas disponíveis e pode incluir desde uma única coluna até todas as colunas disponíveis.

  • Seleção: uma operação de seleção seleciona um subconjunto de linhas (registros) em uma tabela (relação) que satisfaz uma condição de seleção. A capacidade de selecionar linhas de um conjunto de resultados completo é chamada de Seleção. Envolve filtragem condicional e preparação de dados. O subconjunto pode variar de nenhuma linha, se nenhuma das linhas satisfizer a condição de seleção, a todas as linhas em uma tabela.

  • Junção: uma operação de junção combina dados de duas ou mais tabelas com base em um ou mais valores de coluna comuns. Uma operação de junção permite que um usuário do sistema de informações processe os relacionamentos existentes entre as tabelas. A operação de junção é muito poderosa porque permite que os usuários do sistema investiguem relacionamentos entre os elementos de dados que podem não ser antecipados no momento em que um banco de dados é projetado.

Considere as estruturas de tabela acima. A obtenção do nome do first_name, do departamento_id e do salário de um único funcionário da tabela EMPLOYEES é Projection. A obtenção de detalhes de funcionários cujo salário é inferior a 5000, da tabela EMPLOYEES é Seleção. Buscar o nome do funcionário e o nome do departamento ao ingressar em EMPLOYEES e DEPARTMENTS é Ingressar.

Instrução SELECT básica

A sintaxe básica para uma instrução SELECT é apresentada a seguir.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

A cláusula SELECT é obrigatória e realiza a operação relacional do projeto.

A cláusula FROM também é obrigatória. Ele identifica uma ou mais tabelas e / ou visualizações das quais recuperar os dados da coluna exibidos em uma tabela de resultados.

A cláusula WHERE é opcional e executa a operação de seleção relacional. Ele especifica quais linhas devem ser selecionadas.

A cláusula GROUP BY é opcional. Ele organiza os dados em grupos por um ou mais nomes de coluna listados na cláusula SELECT.

A cláusula opcional HAVING define as condições relativas a quais grupos incluir em uma tabela de resultados. Os grupos são especificados pela cláusula GROUP BY.

A cláusula ORDER BY é opcional. Ele classifica os resultados da consulta por uma ou mais colunas em ordem crescente ou decrescente.

Expressões aritméticas e valores NULL na instrução SELECT

Uma expressão aritmética pode ser criada usando os nomes das colunas, operadores e valores constantes para incorporar uma expressão em uma instrução SELECT. O operador aplicável a uma coluna depende do tipo de dados da coluna. Por exemplo, os operadores aritméticos não se ajustam a valores literais de caracteres. Por exemplo,

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

A consulta acima contém a expressão aritmética (sal * 12) para calcular o salário anual de cada funcionário.

Operadores aritméticos

Os operadores agem sobre as colunas (conhecidas como operandos) para resultar em um resultado diferente. No caso de vários operadores em uma expressão, a ordem de avaliação é decidida pela precedência do operador. Aqui estão as regras elementares de precedência -

  • A multiplicação e a divisão ocorrem antes da adição e subtração.

  • Operadores com a mesma prioridade são avaliados da esquerda para a direita.

  • Use parênteses para substituir o comportamento padrão dos operadores.

A tabela abaixo mostra a precedência dos operadores, nesses casos. Operação de símbolo de operador de nível de precedência

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest

Examine as perguntas abaixo (a), (b) e (c)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

A consulta (a) multiplica dois números, enquanto (b) mostra a adição de $ 1.500 aos salários de todos os funcionários. A consulta (c) mostra a adição do componente de comissão ao salário do funcionário. De acordo com a precedência, a primeira comissão seria calculada sobre o salário e depois adicionada ao salário.

Alias ​​da coluna

Um alias é usado para renomear uma coluna ou expressão durante a exibição. O alias de uma coluna ou expressão aparece como título na saída de uma consulta. É útil para fornecer um título significativo para expressões longas na consulta SELECT. Por padrão, o alias aparece em maiúsculas na saída da consulta sem espaços. Para substituir esse comportamento, o alias deve ser colocado entre aspas duplas para preservar a caixa e os espaços no nome do alias.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Operadores de concatenação

O operador de concatenação pode ser usado para unir dois valores de string ou expressões em uma consulta SELECT. O símbolo de barra vertical dupla é usado como operador de concatenação de string. É aplicável apenas para valores de coluna de caractere e string resultando em uma nova expressão de caractere. Exemplo

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

A consulta acima mostra a concatenação de dois valores literais de caracteres.

Literais

Qualquer valor codificado, que não é armazenado no banco de dados, na cláusula SELECT, é conhecido como Literal. Pode ser um número, caractere ou valor de data. Os valores de caracteres e datas devem ser colocados entre aspas. Considere as consultas SQL abaixo. Exemplos do uso de literais de diferentes tipos de dados em consultas SQL.

A consulta abaixo usa dois literais de caracteres para uni-los.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

A consulta a seguir usa literais de caracteres para imprimir o salário do funcionário.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Operador de cotação

O operador aspas é usado para especificar o seu próprio delimitador de aspas. Você pode escolher um delimitador conveniente, dependendo dos dados.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

NULO

Se uma coluna não tiver um valor definido, ela será considerada NULL. O valor NULL denota desconhecido ou indisponível. Não é zero para valores numéricos, nem espaço em branco para valores de caracteres.

Colunas com valor NULL podem ser selecionadas em uma consulta SELECT e podem fazer parte de uma expressão aritmética. Qualquer expressão aritmética usando valores NULL resulta em NULL. Por esse motivo, as colunas com valor NULL devem ser tratadas de maneira diferente, especificando seus valores alternativos usando funções fornecidas pelo Oracle, como NVL ou NULLIF.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

DISTINCT palavra-chave

Se for esperado que os dados tenham resultados duplicados, use a palavra-chave DISTINCT para eliminar duplicatas e exibir apenas os resultados exclusivos na saída da consulta. Apenas as colunas selecionadas são validadas para duplicação e as linhas serão eliminadas logicamente da saída da consulta. Para ser observado, a palavra-chave DISTINCT deve aparecer logo após a cláusula SELECT.

A consulta simples abaixo demonstra o uso de DISTINCT para exibir ids de departamento exclusivos da tabela EMPLOYEES.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

Comando DESCRIBE

Os metadados estruturais de uma tabela podem ser obtidos consultando o banco de dados pela lista de colunas que a compõem, usando o comando DESCRIBE. Ele listará os nomes das colunas usadas, sua propriedade nula e tipo de dados.

Syntax:

DESC[RIBE] [SCHEMA].object name

Por exemplo,

DESC EMPLOYEE

irá exibir a estrutura da tabela EMPLOYEE, ou seja, colunas, seus tipos de dados, precisão e propriedade anulável.