見出し画像

SQL浅瀬でチャプチャプ

SaaSの会社で品質保証をしていてプライベートで個人開発をしているQAです最近SQLでCRUD操作を出来るようになったのでそれのメモメモ

環境

postgreSQL: version 15
日本語翻訳ドキュメント: https://www.postgresql.jp/document/15/html/
以下ドキュメントと記載

そもそもCRUDとは?

データに対する create, read, update, delete操作の頭文字を合わせた呼び方。
これらが出来るとひとまずデータの操作が出来るようになるので覚えて損なし。
今回の対象スコープはデータベースに対するCRUD操作だが、当然APIからの操作に対して、frontendのUIからの操作に対してなどにも説明として使われる

CRUDのC

データの作成をする。
ここではどのテーブルのどの列に値を追加するかを明言している
列の一部しか分からなくても、一行全体を作成しないといけない(ドキュメンパート2、6.1)
列名の省略もできるが、明記しておいた方が順番ミスで更新出来ない等のミスを防げる

INSERT INTO hotels (name, description, icon_url, category) VALUES ($1, $2, $3, $4) RETURNING id`

CRUDのR

デーを取得する
ここではhotelsテーブルの全てのレコードとその全ての列を取得するという意味(ドキュメントパート2、2.5)
特定のレコードを取得したい場合は、条件指定の文節を追加してあげる必要がある。
例 SELECT * FROM hotels WHERE id = '特定のId'
また、式を指定することもできるとのこと(ドキュメント)
例 SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
(式は、アプリケーション側(ここではバックエンドサーバを指す)で操作すれば良いと思うから何であるのかはよく分からん。大きいデータベースとかだと何か恩恵があるのか?)

SELECT * FROM hotels

上記は*で省略しているが、細かく書くと下記

SELECT id, name, description, icon_url FROM hotels

CRUDのU

データを更新する
ここではhotelsテーブルに対して、id が$4に一致するレコードの情報を
$1,2,3の値で更新するという意味
UPDATE文は個別の行、テーブル内の全ての行、あるいは全ての行のサブセットを更新できる(ドキュメントパート2 6.2)
テーブルに主キーを設定している時に限り、主キーと一致する条件を選択することで確実に個別の行を指定できる。

UPDATE hotels SET name = $1, description = $2, icon_url = $3 WHERE id = $4

CRUDのD

データを削除する
ここではhotelsテーブルのidが$1で一致するレコードの情報を削除するという意味
データの削除の場合も行全体をテーブルから削除するしかない
主キーが設定されている時は、その行を正確に指定できる(ドキュメントパート2 6.3)

DELETE FROM hotels WHERE id = $1

テーブル内の全ての行を消しとばす時は以下の文

DELETE FROM products;

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