MySQL: データ検索クエリの基本 – SELECT文、WHERE句、LIKE、IN、BETWEENキーワード

前回までにテーブルに一定のデータを追加しましたので、今回はそのデータを検索するクエリ文を以下の場合に分けて練習してみます。

  • 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句は省略可能。

author列がauth_Aに合致するレコードを検索し、そのtitle、price列を表示しています。「=」は等価演算子です(代入演算子ではありません)。ちなみに非等価演算子は「<>」です。

アスタリスク「*」はワイルドカードで全ての列を返します。

WHERE句内の複数の条件を結合する際はAND、ORキーワードを用います。

比較文字列内にワイルドカードを指定 – LIKEキーワード、「%」、「_」記号

WHERE句内の比較条件に用いる演算子の一種と捉えてもいいかもしれません。

「%」は任意の文字列にマッチします。対して「_」任意の1文字にマッチします。

比較範囲の指定 – BETWEENキーワード

price >= 1000 AND price <= 2000の様な条件を簡潔に書くことが出来ます。

これを書き直すと、

確かに実行結果は合致していますね。

複数のOR結合をIN句でまとめる

NOTキーワードで条件の反転

LIKE、BETWEEN、IN句と共にも使用することが出来ます。その場合は通常比較フィールドの直前に書きます。

だだし、INキーワードではINの直前に書いてもOKです。

NULLフィールドの検索 – IS NULL、IS NOT NULL

リファレンス

コメント

  1. b2ox@無職 より:

    @Molokheiya 複数のOR結合をIN句でまとめる http://bit.ly/5ekvox で良いんじゃないかと。
    MySQLほとんど使ったこと無いけどw

  2. b2ox より:

    @Molokheiya 複数のOR結合をIN句でまとめる http://bit.ly/5ekvox で良いんじゃないかと。
    MySQLほとんど使ったこと無いけどw