今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、SQLあるあるの日。

とある日

SQLを学び始めて3年ほど経とうとしたある日のこと。

ふと、いつもここ苦労してるなとかあんな事あったなと思い出した。

ってことで、自分が今まで学んでいくなかでやったあるあるをまとめようと思う。

あるある

カンマ派閥

前カンマ派と後カンマ派に分かれる

列名を列挙する際に使用するカンマ。

それには、派閥が存在した。

SELECT  
    id
    ,name
    ,gender
FROM user
;
SELECT  
    id,
    name,
    gender
FROM user
;

自分は、後カンマ派です。

Left Joinを多用する

RIGHTよりLEFTを使う

外部結合で使用するLEFT OUTER JOINとRIGHT OUTER JOINの2つが存在する。

この2つの違いは、どちら側にある表をメインとするかだけの違いである。

みやすさのためLEFTを基本的に使用する。

大文字小文字

SELECTって大文字小文字どっち書いたほうがいいんですか?

SQLを習い始めると絶対出てくるであろう質問。

結果としては、どちらも変わらないからどっちでもいい。

自分は、予約語を大文字で記述してテーブル名、列名は小文字にする派です。

製品依存関数が多い

NULL比較関数が製品によって違う

#MySQL
IFNULL(table.column, {{変換後の値}})

#PostgreSQL
COALESCE(table.column, {{変換後の値}})

#Oracle
NVL(table.column, {{変換後の値}})

#SQLserver
ISNULL(table.column, {{変換後の値}})

文字結合関数、現在時刻関数なども製品によって違う場合が多い。

CUI操作

CUISQLは地獄

CUIで、SQLを一行で打とうとするとすごい見づらい。

かといって、複数行に渡って入力しようとすると、入力ミスが有った場合すべての行を入力し直しが発生する。

あれはまさに地獄。

全角スペース

全角スペースによるsyntax error

mysql> select * from words;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from words' at line 1

構文は、間違ってないのになぜかエラーが出るときは全角スペースが混じってることがある。

FROM句

FROM句から記述する

SQLの実行順序が、プログラミングと違って上からしたではない。

つまり、SELECTから実行されるわけではない。

SQLを記述する際に、SELECT句は変化しやすい可能性が高いことや、DBeaverなどのツールで補完機能が使用できないのでFROM句から記述していく。

INとEXISTS

INとEXISTSって何が違うの

初心者が躓きやすいポイントだと思う。

両者には明確に違いがあるが、使用方法がにてるため最初は間違いやすい。

testテーブル

testテーブルtestデーターベースがある

プログラミングでも、変数名などにtestとつけるように、データーベース名やテーブル名をtestとして作成することが多々ある。

かなり難しい

やってみるとかなり難しい

プログラミングと比べて、基本的に覚えることは少ない。

が、意図した結果を取得するのが大変。

自分が学習する中で感じたあるあるをまとめてみた。

個人的には、CUI操作でのSQLは絶対にしたくない。