MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで行を取得する際のAND演算子とOR演算子の違いとは?

MySQLにおけるAND演算子とOR演算子の違い

ANDとORの違いは次の通りです。ANDは、指定された両方の条件がすべて真(true)でなければ、全体の条件が真になりません。一方、ORは、どちらか一方の条件が真であれば、全体の条件が真になります。

サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成しましょう。

mysql> create table demo70
-> (
-> id int not null auto_increment primary key,
-> name varchar(20),
-> age int
-> );
Query OK, 0 rows affected (0.67 sec)

レコードの挿入

insertコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into demo70(name,age) values('John',23);
Query OK, 1 row affected (0.18 sec)

mysql> insert into demo70(name,age) values('David',21);
Query OK, 1 row affected (0.08 sec)

mysql> insert into demo70(name,age) values('Mike',22);
Query OK, 1 row affected (0.15 sec)

mysql> insert into demo70(name,age) values('Chris',20);
Query OK, 1 row affected (0.10 sec)

mysql> insert into demo70(name,age) values('John',24);
Query OK, 1 row affected (0.13 sec)

mysql> insert into demo70(name,age) values('David',22);
Query OK, 1 row affected (0.15 sec)

テーブル内のレコードを表示する

select文を使って、テーブルからレコードを表示してみましょう。

mysql> select *from demo70;

実行すると、次のような出力が得られます。

+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | John  |  23 |
|  2 | David |  21 |
|  3 | Mike  |  22 |
|  4 | Chris |  20 |
|  5 | John  |  24 |
|  6 | David |  22 |
+----+-------+------+
6 rows in set (0.00 sec)

OR演算子を使用したクエリ例

以下は、OR演算子を使用したクエリの例です。

mysql> select *from demo70
-> where name="John" or age=22;

実行結果は次の通りです。

+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | John  |  23 |
|  3 | Mike  |  22 |
|  5 | John  |  24 |
|  6 | David |  22 |
+----+-------+------+
4 rows in set (0.00 sec)

このORの結果では、nameが「John」であればその行の条件は真と判定されます。また、いずれかの行のageが22であれば、その行も同様に真となります。つまり、どちらか一方の条件を満たしていれば、その行は結果に含まれるのです。

AND演算子を使用したクエリ例

次に、AND演算子を使用した場合の結果を見てみましょう。

クエリは以下の通りです。

mysql> select *from demo70
-> where name="John" and age=22;

実行結果は次の通りです。

Empty set (0.00 sec)

ANDの場合は空の結果セット(Empty set)が返されました。これは、「名前がJohn」かつ「年齢が22」という両方の条件を同時に満たす行が1件も存在しないためです。

まとめ

このように、OR演算子は複数の条件のうち少なくとも1つを満たす行を取得したい場合に使用し、AND演算子はすべての条件を満たす行のみを取得したい場合に使用します。用途に応じて適切な論理演算子を選択することで、意図した通りのデータ抽出が可能になります。

  1. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (    

  2. Pythonの「=」と「==」の違いとは?代入と比較の使い分けを徹底解説

    Pythonにおける「=」と「==」の基本的な違いPythonでは「=」と「==」はまったく異なる役割を持つ記号です。初心者が混同しやすいポイントですが、それぞれの意味を正しく理解しておくことが重要です。「=」は代入演算子Pythonにおいて「=」記号は代入演算子として定義されています。左辺には1つの変数を、右辺には式を置く必要があり、右辺の式が評価された結果の値が、左辺の変数に格納されます。つまり、式と変数名は入れ替えて使うことはできません。>>> a=10 >>> b=20 >>> c=a+b >>> a,b,c (1