Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clause Where pour filtrer les lignes dans MySQL

Ce didacticiel fait partie de la série Apprendre les requêtes SQL de base à l'aide de MySQL. Dans le tutoriel précédent, nous avons discuté des requêtes SQL pour récupérer les lignes ou lire les données d'une table dans MySQL. La commande SELECT renvoie toutes les lignes d'une table, sauf si nous spécifions la limite, comme indiqué dans les exemples de didacticiel précédents. Dans plusieurs situations, nous devons filtrer les lignes résultantes pour que les lignes limitées remplissent certaines conditions. Nous pouvons filtrer les lignes à l'aide de la clause WHERE en spécifiant la condition de filtre. Nous pouvons également spécifier plusieurs conditions à l'aide des mots-clés AND, OR.

Clause Où

Le La clause peut être utilisée pour lire les lignes filtrées d'une table en fonction des conditions données. Si vous êtes connecté à distance à la base de données, vous aurez également besoin du privilège SELECT pour la table afin de lire les lignes d'une table.

# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;

Explication de la requête

La commande MySQL SELECT peut être utilisé pour lire des lignes ou des données à partir du nom de table donné où l'expression de sélection et le nom de la table sont obligatoires.

Nous pouvons filtrer le jeu de requêtes résultant renvoyé par la requête de sélection à l'aide de la clause WHERE. Nous pouvons spécifier des conditions uniques ou multiples pour filtrer les résultats. Les mots-clés ET et OU peut être utilisé pour appliquer plusieurs conditions. Nous pouvons également utiliser les mots-clés IN et PAS DANS pour limiter les valeurs de colonne à un ensemble de valeurs.

Opérateurs

Nous pouvons utiliser les opérateurs répertoriés ci-dessous pour effectuer des comparaisons tout en appliquant les conditions de filtre. La comparaison se fera en utilisant la valeur donnée et les valeurs stockées dans la colonne du tableau.

= Il peut être utilisé pour vérifier si les valeurs des deux opérandes sont égales ou non.


!= Il vérifie si les valeurs des deux opérandes ne sont pas égales.


> Il vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit.


< Il vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit.


>= Il vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit.


<= Il vérifie si la valeur de l'opérande de gauche est inférieure ou égale à la valeur de l'opérande de droite.

Exemples

Cette section fournit des exemples pour lire les données filtrées de la table à l'aide de SELECT commande avec WHERE clause. Utilisez la requête mentionnée ci-dessous pour créer la table utilisateur contenant les colonnes id, first name et last name pour stocker les données utilisateur.

# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);

La requête ci-dessous peut être utilisée pour insérer des données dans la table des utilisateurs.

# 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' );

La requête mentionnée ci-dessus insérera 10 lignes dans le tableau ayant l'identifiant, le prénom et le nom pour représenter 10 utilisateurs différents.

Nous allons maintenant lire les données filtrées que nous avons insérées dans la table des utilisateurs. Cela peut être fait en utilisant la commande SELECT comme indiqué ci-dessous.

# 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

Les requêtes mentionnées ci-dessus effectuent diverses opérations de filtrage sur sstring valeurs en utilisant une ou plusieurs conditions. Assurez-vous d'utiliser les guillemets simples lors de l'application des filtres pour les colonnes ayant le type de données chaîne.

# 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

Les requêtes mentionnées ci-dessus appliquent les conditions pour les types de données numériques. Nous pouvons également mélanger les différents types de valeurs comme indiqué ci-dessous.

# 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

C'est ainsi que nous pouvons lire les données filtrées stockées dans les tables MySQL à l'aide de la clause WHERE.