- 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:
- CLÁUSULA ONDE
- AGRUPAMENTO POR CLÁUSULA
- TENDO CLÁUSULA
- 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:
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';
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;
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';
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;
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:
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:
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:
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:
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:
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:
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:
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:
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:
Todos os registros são exibidos em ordem decrescente do nome do funcionário.