前の節で説明したとおり、テーブル全体を取り出すことは簡単です。SELECT
ステートメントから
WHERE
節を省略するだけで済みます。ただし、特にテーブルが大きくなってくると、テーブル全体を取り出すことは通常ありません。通常は特定の質問に対する回答が必要であり、そのために、取得する情報に関していくつかの制約を指定します。ペットに関する質問に対して回答を得る選択クエリーをいくつか見てみましょう。
テーブルから特定の行だけを選択することができます。たとえば、Bowser の誕生日に加えた変更を確認するには、次のように Bowser のレコードを選択します。
mysql> SELECT * FROM pet WHERE name = 'Bowser';
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
出力から、1979 年ではなく 1989 年と正しく記録されていることが確認されます。
通常、文字列の比較では大文字と小文字が区別されないため、名前の指定には
'bowser'
や
'BOWSER'
などを使用できます。クエリーの結果は同じになります。
name
だけでなく、任意のカラムに条件を指定できます。たとえば、1998
年またはそれ以降に生まれたペットを調べるには、birth
カラムを検査します。
mysql> SELECT * FROM pet WHERE birth >= '1998-1-1';
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+-------+---------+------+------------+-------+
条件を組み合わせて、たとえば雌の犬を特定することができます。
mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
このクエリーでは、AND
論理演算子が使用されています。OR
演算子もあります。
mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
+----------+-------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+-------+
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
+----------+-------+---------+------+------------+-------+
AND
と
OR
は一緒に使用できますが、AND
は OR
よりも高い優先順位を持っています。両方の演算子を一緒に使用する場合は、括弧を使用して条件の組み合わせ方を明示的に示すことをお勧めします。
mysql>SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
->OR (species = 'dog' AND sex = 'f');
+-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +-------+--------+---------+------+------------+-------+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +-------+--------+---------+------+------------+-------+