【SQL基礎】記述に関するルール
本記事の内容
本記事ではSQL文を記述する際のルールについて解説します。
SQLの種類についてはこちらの記事を参照してください。
SQLを記述する際の共通ルール①
・SQL文の途中には改行を入れることができる。
・行の先頭や行の途中には半角スペースを入れることができる。
・末尾にセミコロンをつけてSQL文の終了を表す。
SQL文は場合によっては長くなることがあります。長文のSQLを1行で記述すると視覚的に見づらくなります。そのような時はSQL文の途中で改行したほうが構造を理解しやすくなります。また、行の先頭や行の途中に空白(スペース)を入れることも可能です。これらのルールを利用することでSQL文が読みやすくなります。
上記は1つのSQL文を改行したものでしたが、以下のように複数のSQL文を続けて記述する場合は、改行するとどこに文の区切りがあるかわかりにくいです。そこで、1つのSQL文の末尾にセミコロン(;)をつけることで、文の区切りを示すことができます。
SQLを記述する際の共通ルール②
・ハイフン2つ(–)から行末まではコメントになる。
・/*から*/まではコメントになる。
以下のsample1テーブルを見てみましょう。
通常のSELECT文を実行した場合はsample1テーブルのデータを取り出せます。
ハイフンを2つ付けるとコメント扱いになるため、データは取り出せません。
※改行するとエラーになるため1行で記述してあります。
SELECT文を/* */で囲んだ場合も同様にコメント扱いになります。
改行や空白をしてSQL文を整形したり、コメントを入れることで後で自分で見返したときや同じ開発チームで共有したときに理解しやすくなります。
SQLを記述する際の共通ルール③
・SELECT文やWHERE句などの命令に使う単語は、特別な意味を持つ「予約語」である。
・予約語は大文字と小文字の区別がない。
・テーブル名や列名(カラム名)に予約語を使用することはできない。
SELECT、INSERT、UPDATE、DELETEなどのいわゆるデータ操作言語や、WHEREなどの一部の単語はSQLとして特別な意味を持っているため、テーブル名や列名に使うことはできません。これを予約語と言います。SQL文では予約語を大文字で書いても小文字で書いても意味は同じです。
SELECT * FROM 顧客 ;
select * from 顧客 ;
この2つのSQL文は同じ動作をしますが、予約語だけを大文字にすれば可読性が上がります。チームやプロジェクトで決められたルールがあるのであればそれに従うのが良いでしょう。
SQLを記述する際の共通ルール④
・シングルクォーテーション(‘)で括らず記述されたリテラルは数値として扱われる。
・シングルクォーテーション(‘)で括られたリテラルは文字列として扱われる。
・シングルクォーテーション(‘)で括られ、’2022-09-01’のような一定形式のリテラルは日付として扱われる。
例えば「150」と「’150’」では意味が異なります。シングルクォーテーションで括っていない「150」は数値のデータとして扱われます。それに対してシングルクォーテーションで括られている「’150’」は3つの数字の並びを示す文字列のデータとして扱われます。数値のデータを格納したいのに誤って文字列のデータを格納してしまった場合、そのデータは文字列のため計算に使うことができません。このように誤ったデータ形式で格納しないように、データベースには列ごとに格納できるデータの種類を定めることができます。
商品IDと価格の列は数値のデータを格納したいので、テーブルを作成する際にあらかじめ「INTEGER」というデータ型を設定することで、格納できるデータが数値のみになります。商品名とカテゴリーの列には「VARCHAR」というデータ型を設定することで、格納できるデータは文字列のみになります。データ型についての詳しい内容は別記事に記載しましたのでそちらを参照してください。
まとめ
・各SQL文の末尾にセミコロン(;)をつけてSQL文を終了させる。
・長いSQL文は適宜改行することで可読性が上がる。
・予約語はテーブル名や列名として使用できない。(SELECTやWHEREなど)
・数値のデータを扱いたい場合はシングルクォーテーション(‘’)で括らない。
・文字列のデータを扱いたい場合はシングルクォーテーション(‘’)で括る。
・テーブルの各列にデータ型を設定することで、指定したデータ型のみ格納することができる。