1.1 さまざまな演算子
SQL入門講座では基本的なデータ検索と、比較演算子、「LIKE」演算子、論理演算子の「AND」「OR」演算子を学習しました。今回はさらに発展的なデータ検索を学習します。
1.1.1 NOT LIKE演算子
「LIKE」の発展形です。まずは「LIKE」演算子の使用方法についておさらいしてみましょう。
「bookinfo」テーブルで書籍名が「SQL」で始まるデータを検索する場合は、
でしたね?
ではこれを「NOT LIKE」にするとどうなるでしょう?
書籍名が「SQL」で始まらないもの、すなわち「SQL」で始まるデータ以外のデータが抽出されます。
1.1.2 BETWEENとNOT BETWEEN演算子
ある値の範囲でデータを抽出する場合を考えてみましょう。例えば「bookinfo」テーブルで価格が1500円~2000円のデータを検索する場合、今まで学習してきたことを使うと、
となりますね。これを「BETWEEN」演算子を使って検索することができます。
「BETWEEN」演算子の構文は次のとおりです。
先程の「bookinfo」テーブルの例だと、
となります。こちらの方が、比較演算子と論理演算子を組み合わせた場合より見た目にもすっきり書けます。
「BETWEEN」演算子にも「NOT LIKE」演算子のように、「NOT BETWEEN」演算子があります。
先程の「bookinfo」の例に当てはめて見ると
となりますが、意味は、
と同じになります。
1.1.3 INとNOT IN演算子
ある列の値をいくつか指定して検索する場合、比較演算子と論理演算子を組み合わせて使うと、
となりますね。これを「IN」演算子で記述するともう少しすっきりします。
例えば「bookinfo」テーブルからISBN番号が「00001」「00003」「00005」のデータを検索する場合は、
と書くところを、
と書くことができます。
「IN」演算子にも、対になる「NOT IN」演算子があります。
これは、指定した値以外のデータが抽出されます。「bookinfo」テーブルを例にとった場合、ISBN番号が「00001」「00003」「00005」以外のデータを検索する場合は、
となります。もうお分かりかと思いますが、これは
と同じです。
1.1.4 IS NULLとIS NOT NULL演算子
値がNULLかどうかを判定する演算子です。現在「bookinfo」テーブルにはNULLを含むデータがありませんので、まずはNULLを含むデータを作成しましょう。
復習
「bookinfo」テーブルに下記のデータを登録してください。
isbn | title | price |
---|---|---|
00007 | NULL | 2800 |
ではまず「IS NULL」演算子の構文です。
検索対象列がNULLのデータを検索します。
「bookinfo」テーブルだと、先程追加したデータが検索されます。
言うまでもありませんが、「IS NOT NULL」演算子はこの逆になります。
NULL
NULL(ヌルまたはナルと読みます)とは何でしょうか?NULLとは、テーブルの列に値が何も設定されていない状態を指します。これは、0でも空文字(長さが0の文字)でもスペースでもありません。MariaDBクライアントでは、表示上「NULL」となります。試しに「bookinfo」に、書籍タイトルが0、空文字、スペースのデータを登録して、違いを見てみましょう。
※操作はしないでください。
データを見てみます。
0も空文字もスペースも、(表示上見えなくても)値は設定されている状態なのですが、NULLは実際には値が何もない状態ですので、注意が必要です。