データベースの型と演算子
プログラミング言語の変数では
それぞれ型があるように、
SQLにもいろいろな型があります。
それでは説明していきます。
データベースのデータにも型がある
まず、
①文字列型 '文字'
②数値型 200
③日付型 ’2020-05-02’
のように様々なデータ型があります。
データベースソフトによって扱える変数に違いがありますが、
mySQLの場合
文字列
CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, ENUM, SET
数値型
INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, FLOAT, DOUBLE
日付型
DATE ,DATETIME ,TIME ,YEAR
などがあり、
postgresqlの場合
文字列
varchar, char, text
数値型
smallint , integer , bigint , decimal...
日付型
date, time, interval...
などがあります。
このようにSQLのソフトウェアごとに、
データ型が違う
ので、
「MySQL⇔Postgresql」の移行には十分に注意しましょう。
特にテーブルを作るときは、
データ型の知識がいる
ので、
ざっと頭の中に入れておくようにしましょう。
ちなみに、
PostgreSQL→小文字
MySQL→大文字
で書いている理由は、
PostgreSQL→小文字
MySQL→大文字
で処理されるからです。
このようにデータベースソフトによって、
大文字小文字の扱いが違うので、使う前に確認しておきましょう。
SQL の比較演算子
前のNoteでも説明しましたが、
where文の書き方は
Where [フィールド(列)]=[抜き出したいもの]
ですよね。
「=」(イコールは2つ「==」ではない)
だけに限らず、
<(=),>(=)
も使えます。いくつか例をあげて、使い方を説明します。
まず、数値から見ていくと、
a<(>)b・・・aはbより大きい(小さい)
a<=(>=)b・・・aはb以上(以下)(bの値は含まれる)
になります。
また日付ならば、
a<(>)b・・・aはbより昔(未来)
a<=(>=)b・・・aはbより昔(未来)※bの値は含まれる
のように
思い思いのレコード(行)を抽出することができます。
あいまい検索はLIKE演算子
LIKE演算子は
「特定の語句」を含むレコードをさがしたい時
使い、
Where文のとなりに書きます。
とくに
「特定のフィールド(列)において語句を含むレコード」
を探したいときに使うと有効です。
ですので、書き方は
Where [カラム] like [文字列]
で大丈夫です。
ただし、
「ワイルドカード(%)」
を
どこに置くかで、検索の意味が異なってきます。
①[文字]%
文字以降で始まる文字列を検索。
②%[文字]
文字以前で始まる文字列を検索。
③%[文字]%
文字を含む文字列を検索
となります。検索したい条件に合わせて
「ワイルドカード(%)」
を配置していきましょう。
Not演算子で正反対の条件にする
たとえばAのフィールドで
A!=10
だと思われがちですが、
SQLでは式の前にNOTをつけます。
なので、
NOT A=10
というのが正しいです。
NOT演算子をつけることで、
「意味」が反対
になることを覚えておきましょう。
たとえばNOT演算子は
「空白以外のレコード」を抽出する
ことにも用いることができます。
では空白はSQLではどう表すのでしょうか?
それは
NULL
を使うことです。
なので、
WHERE A IS NOT NULL
と書くことで
A列に対して、空白ではないレコード(行)を抜き出すという意味
にもなりますし、
また、
WHERE A IS NULL
のようにNOTをとれば、
「何も入力されていないデータ」すなわち「空白のデータ」
を抽出することもできます。
まとめ
いかがでしたでしょうか?今回は
・条件は演算子がさまざまある。
・フィールドではそれぞれデータがある
・文字列の空白を示すには、NULLを使う。
ということを覚えておきましょう。
また、データベースソフトによって、
大文字小文字の扱いが異なるので、注意しましょう。
この記事が気に入ったらサポートをしてみませんか?