このチュートリアルは、MySQLを使用した基本的なSQLクエリの学習シリーズの一部です。前のチュートリアルでは、MySQLのテーブルから行をフェッチしたりデータを読み取ったりするためのSQLクエリについて説明しました。前のチュートリアルの例で示したように制限を指定しない限り、SELECTコマンドはテーブル内のすべての行を返します。いくつかの状況では、特定の条件を満たす限定された行を取得するために、結果の行をフィルタリングする必要があります。フィルタ条件を指定することにより、WHERE句を使用して行をフィルタリングできます。キーワードAND、ORを使用して複数の条件を指定することもできます。
Where句
場所 句を使用して、指定された条件に基づいてテーブルからフィルタリングされた行を読み取ることができます。データベースにリモートでログインしている場合は、テーブルから行を読み取るために、テーブルに対するSELECT権限も必要になります。
# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;
クエリの説明
MySQLコマンドSELECT 指定されたテーブル名から行またはデータを読み取るために使用できます。ここで、テーブルの選択式と名前は必須です。
WHERE句を使用して、selectクエリによって返される結果のクエリセットをフィルタリングできます。結果をフィルタリングするために、単一または複数の条件を指定できます。キーワードAND およびまたは 複数の条件を適用するために使用できます。キーワードINを使用することもできます およびNOTIN 列の値を一連の値に制限します。
オペレーター
以下の演算子を使用して、フィルター条件を適用しながら比較を実行できます。比較は、指定された値とテーブル列に格納されている値を使用して行われます。
= 2つのオペランドの値が等しいかどうかを確認するために使用できます。
!= 2つのオペランドの値が等しくないかどうかをチェックします。
> 左のオペランドの値が右のオペランドの値より大きいかどうかをチェックします。
< 左のオペランドの値が右のオペランドの値よりも小さいかどうかをチェックします。
> = 左のオペランドの値が右のオペランドの値以上かどうかをチェックします。
<= 左のオペランドの値が右のオペランドの値以下かどうかをチェックします。
例
このセクションでは、 SELECTを使用してテーブルからフィルタリングされたデータを読み取る例を示します。 WHEREを使用したコマンド 句。以下のクエリを使用して、ユーザーデータを格納するためのid、名、および姓の列を持つユーザーテーブルを作成します。
# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);
下記のクエリを使用して、ユーザーテーブルにデータを挿入できます。
# 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' );
上記のクエリは、10人の異なるユーザーを表すために、ID、名、および姓を持つ10行をテーブルに挿入します。
次に、ユーザーテーブルに挿入されたフィルタリングされたデータを読み取ります。以下に示すように、SELECTコマンドを使用して実行できます。
# 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
上記のクエリは、s tringに対してさまざまなフィルタ操作を実行します 単一または複数の条件を使用した値。文字列データ型の列にフィルタを適用するときは、必ず一重引用符を使用してください。
# 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
上記のクエリは、数値データ型の条件を適用します。以下に示すように、さまざまなタイプの値を混在させることもできます。
# 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
これは、WHERE句を使用してMySQLテーブルに格納されているフィルタリングされたデータを読み取る方法です。