Este tutorial faz parte da série Aprenda consultas SQL básicas usando MySQL. No tutorial anterior, discutimos as consultas SQL para buscar as linhas ou ler dados de uma tabela no MySQL. O comando SELECT retorna todas as linhas em uma tabela, a menos que especifiquemos o limite conforme mostrado nos exemplos anteriores do tutorial. Em várias situações, precisamos filtrar as linhas resultantes para que as linhas limitadas atendam a determinadas condições. Podemos filtrar as linhas usando a cláusula WHERE especificando a condição do filtro. Também podemos especificar várias condições usando as palavras-chave AND, OR.
Cláusula Onde
O ONDE A cláusula pode ser usada para ler linhas filtradas de uma tabela com base nas condições fornecidas. Caso você esteja conectado remotamente ao banco de dados, você também precisará do privilégio SELECT para a tabela para ler as linhas de uma tabela.
# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;
Explicação da consulta
O comando MySQL SELECT pode ser usado para ler linhas ou dados de um determinado nome de tabela, onde a expressão de seleção e o nome da tabela são obrigatórios.
Podemos filtrar o conjunto de consulta resultante retornado pela consulta de seleção usando a cláusula WHERE. Podemos especificar condições únicas ou múltiplas para filtrar os resultados. As palavras-chave E e OU pode ser usado para aplicar várias condições. Também podemos usar as palavras-chave IN e NÃO EM para restringir os valores da coluna a um conjunto de valores.
Operadores
Podemos usar os operadores listados abaixo para realizar comparações ao aplicar as condições do filtro. A comparação será feita usando o valor fornecido e os valores armazenados na coluna da tabela.
= Ele pode ser usado para verificar se os valores dos dois operandos são iguais ou não.
!= Verifica se os valores dos dois operandos não são iguais.
> Verifica se o valor do operando esquerdo é maior que o valor do operando direito.
Verifica se o valor do operando esquerdo é menor que o valor do operando direito.
>= Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito.
<= Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito.
Exemplos
Esta seção fornece exemplos para ler dados filtrados da tabela usando o SELECT comando com o WHERE cláusula. Use a consulta mencionada abaixo para criar a tabela de usuário com as colunas id, first name e last name para armazenar os dados do usuário.
# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);
A consulta abaixo mencionada pode ser usada para inserir dados na tabela do usuário.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`) VALUES
( 1, 'John', 'Smith' ),
( 2, 'Rick', 'Jones' ),
( 3, 'Catherine', 'Ponting' ),
( 4, 'Harsh', 'Upadhyay' ),
( 5, 'Tajwinder', 'Singh' ),
( 6, 'Leo', NULL ),
( 7, 'Leo', 'Murphy' ),
( 8, 'Ram', 'Choudhary' ),
( 9, 'Nicole', NULL ),
( 10, 'Ram', 'Choudhary' );
A consulta acima mencionada irá inserir 10 linhas na tabela com o id, nome e sobrenome para representar 10 usuários diferentes.
Agora vamos ler os dados filtrados inseridos por nós na tabela do usuário. Isso pode ser feito usando o comando SELECT como mostrado abaixo.
# Filter - WHERE - Read all rows having first name set to Leo
SELECT * FROM `user` WHERE `first_name` = 'Leo';
# Result
6 Leo
7 Leo Murphy
# Filter - WHERE - AND - Read all rows having first name set to Leo and last name set to Murphy
SELECT * FROM `user` WHERE `first_name` = 'Leo' AND `last_name` = 'Murphy';
# Result
7 Leo Murphy
# Filter - WHERE - IS NOT - Read all rows having last name without NULL values
SELECT * FROM `user` WHERE `last_name` IS NOT NULL;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
5 Tajwinder Singh
7 Leo Murphy
8 Ram Choudhary
10 Ram Choudhary
# Filter - WHERE - OR, IN - Read all rows having first name is either John or Harsh
SELECT * FROM `user` WHERE `first_name` = 'John' OR `first_name` = 'Harsh';
SELECT * FROM `user` WHERE `first_name` IN ( 'John', 'Harsh' );
# Result
1 John Smith
4 Harsh Upadhyay
As consultas mencionadas acima realizam várias operações de filtro em string valores usando condições únicas ou múltiplas. Certifique-se de usar aspas simples ao aplicar os filtros para colunas com o tipo de dados string.
# Filter - WHERE - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
# Filter - WHERE - LIMIT - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5 LIMIT 2;
# Result
1 John Smith
2 Rick Jones
# Filter - WHERE - AND - Read all rows having id greater than 3 and lesser than 6
SELECT * FROM `user` WHERE `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
5 Tajwinder Singh
As consultas mencionadas acima aplicam as condições para tipos de dados numéricos. Também podemos misturar os diferentes tipos de valores, conforme mostrado abaixo.
# Filter - WHERE - AND - Read all rows having first name set to Harsh, id greater than 2 and lesser than 5
SELECT * FROM `user` WHERE `first_name` = 'Harsh' AND `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
É assim que podemos ler os dados filtrados armazenados nas tabelas do MySQL usando a cláusula WHERE.