データベースが変わるとSQLもかなり変わります(Oracle編)

データベースが変わるとSQLもかなり変わります(Oracle編)

データベースによってSQLの書き方は違います。
そんなん知ってるよ!、と言われたらそれまでですが…
具体的にどういった部分が違うのかを見ていこうと思います。

今回は超クセ強データベース(個人の感想です)こと「Oracle」について
私が実際に触れてみて腰を抜かしたこと4選をご紹介します。
(愚痴のような内容になりますが、前提としてOracleは素晴らしいデータベースです。)

データ型が色々と違う!

数値を扱える「NUMBER」は他では見ない型かと思います。
そして個人的に一番気に食わないのが「VARCHAR2」。
元々「VARCHAR」があって、発展させて「VERCHAR2」にしたそうです。
遠い未来では「VARCHAR4649」とかになっているのでしょうか。
ちなみに、日付の書式は「YYYY-MM-DD HH24:MI:SS」です。

空文字がNULLになる!

空文字かNULLかで意味合いが変わるデータを扱うなら、
Oracleでは注意が必要です。
空文字とNULLを同一と見なすので、
例えば「” IS NULL」は「True」となります。
例えば「”」を登録すると「NULL」が登録されます。

関数や句はデータベースそれぞれ!

これはOracleに限った話ではなく、
データベースそれぞれで独自のSQLを発展させています。
私が衝撃を受けたのは「LIMIT句」がOracleに無いことです。
「ROWNUM」や「OFFSET」を上手く使ってあげる必要があるのですが、
ROWNUMは扱いが難しく、初見では大苦戦しました…

テーブルを見ないSQLでは「FROM DUAL」を付ける!

関数の挙動を確かめようとした時などに、
「SELECT ???;」くらいの簡単なSQLを書くと思います。
これではOracleだとエラーとなり実行できません。
「SELECT ??? FROM DUAL;」とFROM句を付ける必要があります。
他のデータベースではDUALを付けても付けなくてもよいものがあるようですが、
Oracleの場合は必ず付ける必要があるので注意しましょう。

まとめ!

重ねてになりますが、Oracleは素晴らしいデータベースです。
個人的にすごく惜しいと感じるというお話です。
Oracleと言えば「セキュリティ面の強さ」。
テーブル名の隠蔽などで便利な「シノニム」が使えるのも強みの1つです。

Oracleを知らなかったという方も、
今ガツガツ使ってるよという方も、
Oracleの個性を調べてみてはいかがでしょうか?