データベースの型と演算子

プログラミング言語の変数では
それぞれ型があるように、

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を使う。

ということを覚えておきましょう。

また、データベースソフトによって、

大文字小文字の扱いが異なるので、注意しましょう。

この記事が気に入ったらサポートをしてみませんか?