PostgreSQLのSQL機能
PostgreSQLの機能をわかりやすい言葉でまとめてみる。
1. SELECT(データを取得する)
SELECT * FROM sample;
→ sample
テーブルからすべてのデータを取得する。
2. INSERT(データを追加する)
INSERT INTO sample (name, age) VALUES ('Yamada', 23);
→ sample
テーブル内の新しい行を追加する。「name」列に「Yamada」
「age」列に「23」を追加する。
3. UPDATE(データを変更する)
UPDATE sample SET age = 26 WHERE name = 'Yamada';
→name
列がYamada
の全ての行で、age
列を26
に変更する。
4. DELETE(データを削除する)
DELETE FROM sample WHERE name = 'Yamada';
→ name
列がYamada
のデータを全て削除する。
データの絞り込み・並び替え
5. WHERE(特定の条件に合うデータだけ取得する)
SELECT * FROM sample WHERE age = 20;
→ age
が 20の行だけを取得する。
SELECT * FROM sample WHERE age > 20;
→ age
が 20 より大きい行だけを取得する。
6. ORDER BY(データを並び替える)
SELECT * FROM sample ORDER BY age DESC;
→ age
が大きい順に並べる。
7. LIMIT(取得するデータの数を制限する)
SELECT * FROM sample LIMIT 5;
→ 最初の 5 件だけ取得する。
8. OFFSET(取得するデータをスキップする)
SELECT * FROM sample LIMIT 5 OFFSET 10;
→ 10 件目から 5 件取得する(10件目までは取得しない)。
データのグループ化・集計
9. GROUP BY(同じ値ごとにまとめる)
SELECT age, COUNT(*) FROM sample GROUP BY age;
→ 年齢ごとに何人いるかを集計する。
10. HAVING(グループの条件を指定する)
SELECT age, COUNT(*) FROM sample GROUP BY age HAVING COUNT(*) > 2;
→ 2 人以上いる年齢グループだけ表示する。
11. DISTINCT(重複を省く)
SELECT DISTINCT age FROM sample;
→ age
の重複を省いて取得する。
データの結合
12. INNER JOIN(共通するデータを結合する)
SELECT sample.name, orders.score
FROM sample
INNER JOIN orders ON sample.id = orders.user_id;
→ sample
と orders
を、id
をキーにして共通データを取得する。
13. LEFT JOIN(左のテーブルのデータは必ず残す)
SELECT sample.name, orders.score
FROM sample
LEFT JOIN orders ON sample.id = orders.user_id;
→ sample
に対応するデータのある orders
の行だけ結合。対応する行が存在しない場合、orders
テーブルの列は NULL
になる。
14. RIGHT JOIN(右のテーブルのデータは必ず残す)
SELECT sample.name, orders.score
FROM sample
RIGHT JOIN orders ON sample.id = orders.user_id;
→ orders
に対応するデータのある sample
の行だけ結合。対応する行が存在しない場合、sample
テーブルの列は NULL
になる。
15. FULL JOIN(両方のデータを全部出す)
SELECT sample.name, orders.score
FROM sample
FULL JOIN orders ON sample.id = orders.user_id;
→ sample
も orders
も全部出し、関連がない部分は NULL
。
データベースの管理
16. CREATE TABLE(テーブルを作る)
CREATE TABLE sample (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INTEGER
);
→ sample
というテーブルを作る。
17. DROP TABLE(テーブルを削除する)
DROP TABLE sample;
→ sample
テーブルを削除する。
18. ALTER TABLE(テーブルの構造を変更する)
ALTER TABLE sample ADD COLUMN hobby VARCHAR(100);
→ sample
テーブルに hobby
という列を追加する。
データベースの操作
19. SHOW(設定を確認する)
SHOW timezone;
→ 現在のタイムゾーンを確認する。
20. SET(設定を変更する)
SET timezone = 'Asia/Tokyo';
→ タイムゾーンを 東京
に変更する。
データのバックアップと復元
21. COPY(データをファイルに書き出す)
COPY sample TO 'data/sample.csv' CSV HEADER;
→ sample
テーブルのデータをCSVファイルに保存する。
22. COPY FROM(ファイルからデータを取り込む)
COPY sample FROM 'data/sample.csv' CSV HEADER;
→ sample.csv
のデータを sample
テーブルに取り込む。
データベースの削除
23. DROP DATABASE(データベースを削除する)
DROP DATABASE my_database;
→ my_database
を削除する。