- SELECT文の基本形 – WHERE句
- 比較文字列内にワイルドカードを指定 – LIKEキーワード、「%」、「_」記号
- 比較範囲の指定 – BETWEENキーワード
- 複数のOR結合をIN句でまとめる
- NOTキーワードで条件の反転
- NULLフィールドの検索 – IS NULL、IS NOT NULL
SELECT文の基本形 – WHERE句
SELECT文では指定したテーブル(FROM句)に対して、検索条件(WHERE句)にマッチするレコード(行)の指定フィールド(列)を表示します。SELECTに続くのは列名、と覚えましょう。以下、具体例。SELECT <列名1>[, <列名2>, ...] FROM <テーブル名>
WHERE
<検索条件>;WHERE句は省略可能。1 2 3 4 5 6 7 8 9 | mysql> SELECT title, price FROM book_list -> WHERE -> author = 'auth_A';+--------+-------+| title | price |+--------+-------+| book_A | 1500 || book_G | 400 |+--------+-------+ |
1 2 3 4 5 6 7 8 9 10 | mysql> SELECT * FROM book_list -> WHERE -> price < 1500;+---------+--------+--------+-------+-----------------------+| book_id | title | author | price | comments |+---------+--------+--------+-------+-----------------------+| 4 | book_D | auth_D | 700 | sad, depress || 5 | book_E | auth_E | 1200 | good, funny || 7 | book_G | auth_A | 400 | very good!, excellent |+---------+--------+--------+-------+-----------------------+ |
1 2 3 4 5 6 7 8 9 10 11 | mysql> SELECT title, price FROM book_list -> WHERE -> price >= 1800 -> AND -> author = 'auth_C';+--------+-------+| title | price |+--------+-------+| book_C | 1800 || book_F | 3500 |+--------+-------+ |
比較文字列内にワイルドカードを指定 - LIKEキーワード、「%」、「_」記号
WHERE句内の比較条件に用いる演算子の一種と捉えてもいいかもしれません。1 2 3 4 5 6 7 8 9 | mysql> SELECT title, author, comments FROM book_list -> WHERE -> comments LIKE '%excellen%';+--------+--------+-----------------------+| title | author | comments |+--------+--------+-----------------------+| book_A | auth_A | good, bad, excellence || book_G | auth_A | very good!, excellent |+--------+--------+-----------------------+ |
比較範囲の指定 - BETWEENキーワード
price >= 1000 AND price <= 2000の様な条件を簡潔に書くことが出来ます。1 2 3 4 5 6 7 8 9 10 | mysql> SELECT title, price FROM book_list -> WHERE -> price >= 1000 AND price <= 2000;+--------+-------+| title | price |+--------+-------+| book_A | 1500 || book_C | 1800 || book_E | 1200 |+--------+-------+ |
1 2 3 4 5 6 7 8 9 10 | mysql> SELECT title, price FROM book_list -> WHERE -> price BETWEEN 1000 AND 2000;+--------+-------+| title | price |+--------+-------+| book_A | 1500 || book_C | 1800 || book_E | 1200 |+--------+-------+ |
複数のOR結合をIN句でまとめる
1 2 3 4 5 6 7 8 9 10 11 | mysql> SELECT title, author, price FROM book_list -> WHERE -> author IN ('auth_A', 'auth_C');+--------+--------+-------+| title | author | price |+--------+--------+-------+| book_A | auth_A | 1500 || book_C | auth_C | 1800 || book_F | auth_C | 3500 || book_G | auth_A | 400 |+--------+--------+-------+ |
NOTキーワードで条件の反転
LIKE、BETWEEN、IN句と共にも使用することが出来ます。その場合は通常比較フィールドの直前に書きます。1 2 3 4 5 6 7 8 9 10 | mysql> SELECT title, author, price FROM book_list -> WHERE -> NOT author IN ('auth_A', 'auth_C');+--------+--------+-------+| title | author | price |+--------+--------+-------+| book_B | auth_B | 2900 || book_D | auth_D | 700 || book_E | auth_E | 1200 |+--------+--------+-------+ |
1 2 3 4 5 6 7 8 9 10 | mysql> SELECT title, author, price FROM book_list -> WHERE -> author NOT IN ('auth_A', 'auth_C');+--------+--------+-------+| title | author | price |+--------+--------+-------+| book_B | auth_B | 2900 || book_D | auth_D | 700 || book_E | auth_E | 1200 |+--------+--------+-------+ |
NULLフィールドの検索 – IS NULL、IS NOT NULL
1 2 3 | mysql> SELECT * FROM book_list -> WHERE title IS NULL;Empty set (0.00 sec) |
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> SELECT * FROM book_list -> WHERE title IS NOT NULL;+---------+--------+--------+-------+-----------------------+| book_id | title | author | price | comments |+---------+--------+--------+-------+-----------------------+| 1 | book_A | auth_A | 1500 | good, bad, excellence || 2 | book_B | auth_B | 2900 | not bad, good || 3 | book_C | auth_C | 1800 | interesting, amazing || 4 | book_D | auth_D | 700 | sad, depress || 5 | book_E | auth_E | 1200 | good, funny || 6 | book_F | auth_C | 3500 | bored, difficult || 7 | book_G | auth_A | 400 | very good!, excellent |+---------+--------+--------+-------+-----------------------+ |
リファレンス
댓글 없음:
댓글 쓰기