logo

CLÁUSULAS SQL

  • A cláusula SQL nos ajuda a recuperar um conjunto ou pacotes de registros da tabela.
  • A cláusula SQL nos ajuda a especificar uma condição nas colunas ou registros de uma tabela.

As diferentes cláusulas disponíveis na Structured Query Language são as seguintes:

  1. CLÁUSULA ONDE
  2. AGRUPAMENTO POR CLÁUSULA
  3. TENDO CLÁUSULA
  4. ORDEM POR CLÁUSULA

Vamos ver cada cláusula uma por uma com um exemplo. Usaremos o banco de dados MySQL para escrever as consultas nos exemplos.

1. CLÁUSULA ONDE

Uma cláusula WHERE em SQL é usada com a consulta SELECT, que é um dos comandos da linguagem de manipulação de dados. As cláusulas WHERE podem ser usadas para limitar o número de linhas a serem exibidas no conjunto de resultados, geralmente ajudam na filtragem dos registros. Ele retorna apenas as consultas que atendem às condições específicas da cláusula WHERE. A cláusula WHERE é usada nas instruções SELECT, UPDATE, DELETE, etc.

Cláusula WHERE com consulta SELECT

O símbolo de asterisco é usado com uma cláusula WHERE em uma consulta SELECT para recuperar todos os valores de coluna para cada registro de uma tabela.

Sintaxe da cláusula where com uma consulta select para recuperar todos os valores das colunas para cada registro de uma tabela:

 SELECT * FROM TABLENAME WHERE CONDITION; 

Se de acordo com o requisito, quisermos apenas recuperar colunas seletivas, usaremos a sintaxe abaixo:

 SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION; 

Considere a tabela de funcionários com os seguintes dados:

E_ID Nome Salário Cidade Designação Data de adesão Idade
1 Sakshi Kumari 50.000 Bombaim Gestor de projeto 2021-06-20 24
2 Tejaswini Naik 75.000 Délhi Engenheiro de sistemas 24/12/2019 23
3 Anuja Sharma 40.000 Jaipur Gerente 15/08/2021 26
4 Anushka Tripathi 90.000 Bombaim Testadores de software 13/06/2021 24
5 Rucha Jagtap 45.000 Bangalore Gestor de projeto 09/08/2020 23
6 Rutuja Deshmukh 60.000 Bangalore Gerente 17/07/2019 26
7 A voz de Baviskar 55.000 Jaipur Engenheiro de sistemas 2021-10-10 24
8 Lá está o Sheik 45.000 Puna Engenheiro de software 10/09/2020 26
9 Swati Kumari 50.000 Puna Testadores de software 2021-01-01 25
10 Mayuri Patel 60.000 Bombaim Gestor de projeto 2020-10-02 24
onze Simran Khanna 45500 Kolhapur RH 02/01/2019 26
12 Shivani Wagh 50500 Délhi Desenvolvedor de software 10/09/2016 25
13 Kiran Maheshwari 50.000 Nashik RH 12/12/2013 23
14 Tejal Jain 40.000 Délhi Gestor de projeto 10/11/2017 25
quinze Mohini Xá 38.000 Puna Desenvolvedor de software 05/03/2019 vinte

Exemplo 1:

Escreva uma consulta para recuperar todos os registros de um funcionário cujo salário seja superior a 50.000.

Consulta:

 mysql> SELECT * FROM employees WHERE Salary > 50000; 

A consulta acima exibirá todos os registros de um funcionário cujo salário seja superior a 50.000. O salário abaixo de 50.000 não será exibido conforme as condições.

Você obterá a seguinte saída:

CLÁUSULAS SQL

De acordo com o resultado esperado, apenas os registros são exibidos onde o salário do funcionário é superior a 50.000. Existem seis registros na tabela do funcionário que satisfazem a condição fornecida.

Exemplo 2:

Escreva uma consulta para atualizar o registro do funcionário e defina o nome atualizado como 'Harshada Sharma', onde o nome da cidade do funcionário é Jaipur.

Consulta:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

CLÁUSULAS SQL

A consulta acima atualizará o nome do funcionário para ‘Harshada Sharma’, onde a cidade do funcionário é Jaipur.

Para verificar se os registros estão atualizados ou não, executaremos uma consulta selecionada.

 mysql> SELECT * FROM employees; 

CLÁUSULAS SQL

Existe apenas um registro na tabela de funcionários onde a cidade do funcionário é ‘Jaipur’. O id do registro é 3, o que satisfaz a condição fornecida. Assim, de acordo com a condição fornecida, o nome do funcionário com identificação de funcionário 3 foi alterado para 'Harshada Sharma'.

Exemplo 3:

Escreva uma consulta para excluir o registro de um funcionário cuja data de ingresso do funcionário seja '12/12/2013'.

Consulta:

java converte inteiro em string
 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

CLÁUSULAS SQL

A consulta acima excluirá os detalhes do funcionário cuja data de adesão é '12/12/2013'.

Para verificar os resultados da consulta acima, executaremos a consulta select.

 mysql> SELECT *FROM employees; 

CLÁUSULAS SQL

Existe apenas um registro na tabela de funcionários onde a data de adesão do funcionário é '12/12/2013'. O id do registro é 13, o que satisfaz a condição fornecida. Portanto, de acordo com a condição dada, o funcionário com ID de funcionário 13 agora é excluído da tabela de funcionários.

2. GRUPO POR CLÁUSULA

A cláusula Group By é usada para organizar tipos semelhantes de registros em grupos na Structured Query Language. A cláusula Group by na Structured Query Language é usada com a instrução Select. A cláusula Group by é colocada após a cláusula where na instrução SQL. A cláusula Group By é especialmente usada com a função agregada, ou seja, max (), min (), avg (), sum (), count () para agrupar o resultado com base em uma ou mais de uma coluna.

A sintaxe da cláusula Group By:

 SELECT * FROM TABLENAME GROUP BY COLUMNNAME; 

A sintaxe acima selecionará todos os dados ou registros da tabela, mas organizará todos esses dados ou registros nos grupos com base no nome da coluna fornecido na consulta.

A sintaxe da cláusula Group By com funções agregadas:

 SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME; 

Vamos entender a cláusula Group By com a ajuda de exemplos.

Considere a tabela de funcionários com os seguintes dados:

E_ID Nome Salário Cidade Designação Data de adesão Idade
1 Sakshi Kumari 50.000 Bombaim Gestor de projeto 2021-06-20 24
2 Tejaswini Naik 75.000 Délhi Engenheiro de sistemas 24/12/2019 23
3 Anuja Sharma 40.000 Jaipur Gerente 15/08/2021 26
4 Anushka Tripathi 90.000 Bombaim Testadores de software 13/06/2021 24
5 Rucha Jagtap 45.000 Bangalore Gestor de projeto 09/08/2020 23
6 Rutuja Deshmukh 60.000 Bangalore Gerente 17/07/2019 26
7 A voz de Baviskar 55.000 Jaipur Engenheiro de sistemas 2021-10-10 24
8 Lá está o Sheik 45.000 Puna Engenheiro de software 10/09/2020 26
9 Swati Kumari 50.000 Puna Testadores de software 2021-01-01 25
10 Mayuri Patel 60.000 Bombaim Gestor de projeto 2020-10-02 24
onze Simran Khanna 45.500 Kolhapur RH 02/01/2019 26
12 Shivani Wagh 50500 Délhi Desenvolvedor de software 10/09/2016 25
13 Kiran Maheshwari 50.000 Nashik RH 12/12/2013 23
14 Tejal Jain 40.000 Délhi Gestor de projeto 10/11/2017 25
quinze Mohini Xá 38.000 Puna Desenvolvedor de software 05/03/2019 vinte

Exemplo 1:

Escreva uma consulta para exibir todos os registros da tabela de funcionários, mas agrupe os resultados com base na coluna de idade.

Consulta:

 mysql> SELECT * FROM employees GROUP BY Age; 

A consulta acima exibirá todos os registros da tabela de funcionários, mas agrupados pela coluna idade.

Você obterá a seguinte saída:

CLÁUSULAS SQL

Exemplo 2:

Escreva uma consulta para exibir todos os registros da tabela de funcionários agrupados por designação e salário.

Consulta:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

A consulta acima exibirá todos os registros da tabela de funcionários, mas agrupados pela coluna salário e designação.

Você obterá a seguinte saída:

CLÁUSULAS SQL

Exemplos de cláusula Group By usando funções agregadas

Exemplo 1:

Escreva uma consulta para listar o número de funcionários trabalhando em uma designação específica e agrupe os resultados por designação do funcionário.

Consulta:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

A consulta acima exibirá a designação com o respectivo número de funcionários trabalhando nessa designação. Todos esses resultados serão agrupados pela coluna de designação.

Você obterá a seguinte saída:

CLÁUSULAS SQL

De acordo com o resultado esperado, é exibida a designação com a respectiva contagem de funcionários.

Exemplo 2:

Escreva uma consulta para exibir a soma do salário de um funcionário de acordo com a cidade agrupada pela idade do funcionário.

Consulta:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

A consulta acima irá primeiro calcular a soma dos salários que trabalham em cada cidade, e depois exibirá a soma dos salários com o respectivo salário mas agrupados pela coluna de idade.

Você obterá a seguinte saída:

CLÁUSULAS SQL

De acordo com a produção esperada, é exibido o somatório do salário do funcionário de acordo com a cidade a que o funcionário pertence. Se dois funcionários pertencerem à mesma cidade, eles estarão no mesmo grupo.

3. TENDO CLÁUSULA:

Quando precisamos colocar alguma condição na coluna da tabela, usamos a cláusula WHERE no SQL. Mas se quisermos usar qualquer condição em uma coluna da cláusula Group By naquele momento, usaremos a cláusula HAVING com a cláusula Group By para condições de coluna.

Sintaxe:

 TABLENAME GROUP BY COLUMNNAME HAVING CONDITION; 

Considere a tabela de funcionários com os seguintes dados:

E_ID Nome Salário Cidade Designação Data de adesão Idade
1 Sakshi Kumari 50.000 Bombaim Gestor de projeto 2021-06-20 24
2 Tejaswini Naik 75.000 Délhi Engenheiro de sistemas 24/12/2019 23
3 Anuja Sharma 40.000 Jaipur Gerente 15/08/2021 26
4 Anushka Tripathi 90.000 Bombaim Testadores de software 13/06/2021 24
5 Rucha Jagtap 45.000 Bangalore Gestor de projeto 09/08/2020 23
6 Rutuja Deshmukh 60.000 Bangalore Gerente 17/07/2019 26
7 A voz de Baviskar 55.000 Jaipur Engenheiro de sistemas 2021-10-10 24
8 Lá está o Sheik 45.000 Puna Engenheiro de software 10/09/2020 26
9 Swati Kumari 50.000 Puna Testadores de software 2021-01-01 25
10 Mayuri Patel 60.000 Bombaim Gestor de projeto 2020-10-02 24
onze Simran Khanna 45500 Kolhapur RH 02/01/2019 26
12 Shivani Wagh 50500 Délhi Desenvolvedor de software 10/09/2016 25
13 Kiran Maheshwari 50.000 Nashik RH 12/12/2013 23
14 Tejal Jain 40.000 Délhi Gestor de projeto 10/11/2017 25
quinze Mohini Xá 38.000 Puna Desenvolvedor de software 05/03/2019 vinte

Exemplo 1:

Escreva uma consulta para exibir o nome dos funcionários, salário e cidade onde o salário máximo do funcionário é maior que 40.000 e agrupe os resultados por designação.

Consulta:

 mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000; 

Você obterá a seguinte saída:

CLÁUSULAS SQL

A saída acima mostra o nome do funcionário, o salário e a cidade de um funcionário cujo salário é superior a 40.000, agrupados por designação. (Os funcionários com designação semelhante são colocados num grupo e os com outra designação são colocados separadamente).

Exemplo 2:

Escreva uma consulta para exibir o nome dos funcionários e a designação onde a soma do salário de um funcionário for maior que 45.000 e agrupe os resultados por cidade.

Consulta:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

Você obterá a seguinte saída:

CLÁUSULAS SQL

A saída acima mostra o nome do funcionário, a designação e o salário de um funcionário. A soma dos salários é superior a 45.000 agrupados por cidade. (Funcionários com cidades semelhantes são colocados em um grupo e aqueles com cidades diferentes não semelhantes são colocados separadamente).

4. ORDEM POR CLÁUSULA

Sempre que quisermos classificar algo em SQL, usamos a cláusula ORDER BY. A cláusula ORDER BY em SQL nos ajudará a classificar os dados com base na coluna específica de uma tabela. Isso significa que todos os dados armazenados na coluna específica na qual estamos executando a cláusula ORDER BY serão classificados. Os valores da coluna correspondente serão exibidos na sequência em que obtivemos os valores na etapa anterior.

Como todos sabemos, classificar significa em ORDEM ASCENDENTE ou EM ORDEM DESCENDENTE. Da mesma forma, ORDER BY CLAUSE classifica os dados em ordem crescente ou decrescente conforme nossa necessidade. Os dados serão ordenados em ordem crescente sempre que o Palavra-chave ASC é usado com a cláusula ORDER by, e o Palavra-chave DESC classificará os registros em ordem decrescente.

Por padrão, a classificação no SQL será feita usando a cláusula ORDER BY em ordem ASCENDING, caso não tenhamos mencionado a ordem de classificação.

Antes de passarmos ao exemplo da cláusula ORDER BY para classificar os registros, primeiro veremos a sintaxe para que seja fácil seguirmos o exemplo.

Sintaxe da cláusula ORDER BY sem as palavras-chave asc e desc:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME; 

Sintaxe da cláusula ORDER BY para ordenar em ordem crescente:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC; 

Sintaxe da cláusula ORDER BY para classificar em ordem decrescente:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC; 

Considere que temos uma tabela de funcionários com os seguintes dados:

E_ID Nome Salário Cidade Designação Data de adesão Idade
1 Sakshi Kumari 50.000 Bombaim Gestor de projeto 2021-06-20 24
2 Tejaswini Naik 75.000 Délhi Engenheiro de sistemas 24/12/2019 23
3 Anuja Sharma 40.000 Jaipur Gerente 15/08/2021 26
4 Anushka Tripathi 90.000 Bombaim Testadores de software 13/06/2021 24
5 Rucha Jagtap 45.000 Bangalore Gestor de projeto 09/08/2020 23
6 Rutuja Deshmukh 60.000 Bangalore Gerente 17/07/2019 26
7 A voz de Baviskar 55.000 Jaipur Engenheiro de sistemas 2021-10-10 24
8 Lá está o Sheik 45.000 Puna Engenheiro de software 10/09/2020 26
9 Swati Kumari 50.000 Puna Testadores de software 2021-01-01 25
10 Mayuri Patel 60.000 Bombaim Gestor de projeto 2020-10-02 24
onze Simran Khanna 45.500 Kolhapur RH 02/01/2019 26
12 Shivani Wagh 50500 Délhi Desenvolvedor de software 10/09/2016 25
13 Kiran Maheshwari 50.000 Nashik RH 12/12/2013 23
14 Tejal Jain 40.000 Délhi Gestor de projeto 10/11/2017 25
quinze Mohini Xá 38.000 Puna Desenvolvedor de software 05/03/2019 vinte

Exemplo 1:

Escreva uma consulta para classificar os registros em ordem crescente de designação de funcionário na tabela funcionários.

Consulta:

 mysql> SELECT * FROM employees ORDER BY Designation; 

Aqui em uma consulta SELECT, uma cláusula ORDER BY é aplicada na coluna 'Designação' para classificar os registros, mas não usamos a palavra-chave ASC após a cláusula ORDER BY para classificar em ordem crescente. Portanto, por padrão, os dados serão classificados em ordem crescente se não especificarmos a palavra-chave asc.

quantos filmes de missão impossível existem

Você obterá a seguinte saída:

CLÁUSULAS SQL

De acordo com o resultado esperado, os registros são exibidos em ordem crescente de designação do funcionário.

Exemplo 2:

Escreva uma consulta para exibir o nome e o salário do funcionário em ordem crescente do salário do funcionário na tabela funcionários.

Consulta:

 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

Aqui, em uma consulta SELECT, uma cláusula ORDER BY é aplicada à coluna 'Salário' para classificar os registros. Usamos a palavra-chave ASC para classificar o salário do funcionário em ordem crescente.

Você obterá a seguinte saída:

CLÁUSULAS SQL

Todos os registros são apresentados em ordem crescente de salário do funcionário.

Exemplo 3:

Escreva uma consulta para classificar os dados em ordem decrescente do nome do funcionário armazenado na tabela funcionários.

Consulta:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

Aqui usamos a cláusula ORDER BY com a consulta SELECT aplicada na coluna Nome para classificar os dados. Usamos a palavra-chave DESC após a cláusula ORDER BY para classificar os dados em ordem decrescente.

Você obterá a seguinte saída:

CLÁUSULAS SQL

Todos os registros são exibidos em ordem decrescente do nome do funcionário.