データベース操作を扱うためのSQLは4つのカテゴリーに分かれる
今回は、すごく大事だけど、なんだか似たような命令文が多くて忘れやすい、たまに復習しておかないと困ってしまうSQL(Structured Query Language)の基礎について忘備録を作りました。
まず、クエリ言語の定義として
『データベースや情報システムに対してデータの検索や操作を行うための特別な命令言語』
であることを押さえておこう。
このクエリ言語は4つのカテゴリーに分けることができます。
1.DML(Data Manipulation Language)
おなじみCRUDはこのカテゴリーにいます。
SELECT、INSERT、UPDATE、DELETEたちの事ですね☆
2.DDL(Data Definition Language)
データベースやテーブルの構造を定義・変更する命令。
CREATE、DROP、ALTER、TRUNCATEたちがこのカテゴリーに入ります。
3.DCL(Data Control Language)
GRANT、REVOKE等のデータベースのアクセス権限を管理する命令。
4.TCL(Transaction Control Language)
COMMIT、ROLLEBACK等のトランザクション処理に関する命令。
上記の4つのカテゴリー分け問題は、学校の定期テストでしっかり出てきた箇所です。
全てのカテゴリー共通の基本ルール
カテゴリーは違えど、すべてSQL。
この兄弟間で共通しているルールがあります。
ルール①
-文の途中に改行をいれてOK
-行の先頭、行の途中に半角の空白をいれてOK
ルール②
-ハイフン二つをつなげると『–』コメントとして扱える
-/*から*/までをコメントとして扱える
ルール③
-SELECTWHEREなどの『予約語』(Keyword)が、大文字、小文字のどちらで記述してもOK
-テーブル名や列名に予約語を利用することはない
DML-CRUDを深堀り
SELECT文
さて、4つのカテゴリーの中でも、デベロッパーが直接、記述する機会が多いのがDMLと思います。
順番に見ていきます。
SELECT文・・・データベースのテーブル内に存在するデータを取得するためのSQL
【基本構文】
SELECT 列名
FROM テーブル名
WHERE 条件
補足: ASを用いると列名やテーブル名に『あだ名』を与えることが出来る。(Oracle DBでは不可)
このASであだ名付与は、個人的にインターンシップ先でかなりの確率で使ったのでお陰様で忘れることはなさそうです。
(例文)
SELECT pris AS p, dateAchat AS d, nom AS n
FROM marche
WHERE id = '1'
例文を訳すと、
marcheテーブル内の、idが1のレコードから、pris(値段)とdateAchat(購入日)とnom(名前)のを取得せよ。
となります。
このSELECT文と連動するメソッド名でよくあるのが『show』『get』『list』『find』『fetch』と思います。
UPDATE文
UPDATE文は、日本語で言うと『更新』、フランス語では『Editer』にあたります。
すでに、存在するデータに対して書き換えを行うSQLとなります。
【基本構文】
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2・・・
WHERE 条件
SETには更新したい列名と、その列名に書き込むデータを列名=値として記述します。
(例文)
UPDATE marche
SET nom = melon, pris = 120
WHERE dateAchat = 2024-7
例文を訳すと・・・
marcheテーブル内の、dateAchat(購入日)が2024-7となっているレコードのnom(名前)をmelon(メロン)にして、pris(値段)を120円に書き換えてください。
となります。
UPDATE文で気を付ける点は、WHERE句なしでは考えられないSQLと理解しておくと無難。特定の場所を指定する条件を付けないと、全更新になるからです。
時にはあえてWHERE句要らない場合もあるかもしれませんが、大概の場合WHERE句は必要になるかと個人的に思います。
このUPDATEと連動するメソッド名でよくあるのは『Edit』『update』『modify』『change』と思います。
DELETE文
DELETE文は、すでにテーブル内に存在するデータを削除するためのSQLです。
抑えるポイントは、このDELETE文は『丸まる削除する』命令文です。特定の何かだけを削除できるものではありません。
つまり、WHERE無しだとテーブルを丸まる削除します。
【基本構文】
DELETE FROM テーブル名
WHERE 条件
(例文)
DELETE FROM marche
WHERE dateAcaht = 2024-7
これを訳すと、
marcheテーブルの、dateAchat(購入日)が2024-7のレコードを一行丸まる削除してください。
となります。
しつこいようですが、このWHEREを書き忘れると、marcheテーブルの全件のデータが削除されます。
このDELETE文と連動するメソッド名でよくあるのが『delete』『remove』『destroy』と思います。
INSERT文(この文だけWHERE句なし)
INSERT文は、テーブルに新規データを追加するためのSQLです。
この子だけ、WHERE句は存在しません。その代わりに、どのようなデータを追加するのかを指定する構造になっています。
【基本構文】
INSERT INTO テーブル名 (列名1,列名2, 列名3…)
VALUES (値1. 値2. 値3…)
(例文)
INSERT INTO marche (pris,nom, dateAchat)
VALUES (250, salade, 2024-8)
これを訳すと、
marcheテーブル内のpris列に250,nom列にsalade, dateAchat列に2024-8のデータを追加してください。
となります。
このINSERT文と連動するメソッド名でよくあるのが『add』『create』『save』と思います。
まとめ
DMLはCRUDそのものであって、デベロッパーが一番触れるSQLです。
コントローラー内のメソッドに『show』『get』『list』『find』『fetch』を見つければ、レポジトリークラスではSELECT文が発行されている。
『Edit』『update』『modify』『change』のようなメソッドを見つけたら、UPDATE文。
『delete』『remove』『destroy』というような名前のメソッドはDELETE文。
『add』『create』『save』のようなメソッドにはINSERT文。
がペアの様になっているのだなと覚えておきたいです。


コメント