💻
DBとSQLについてまとめ(近日更新予定)
DBとは
構造化された情報やデータを効率的に格納、取得、管理するシステム
通常RDB(リレーショナルデータベース)が使用されるが、状況によってNoSQLや分散DBを用いたり、
組み合わせて使用することもある
タスク(投稿時消す)
- PostgreSQLの公式ドキュメントを読む
- 課題やSQL30本ノックを使う
- SQLは数をこなす(ドリル形式「すっきりわかるSQL入門」など)
RDBとは
テーブル形式でデータを整理し、行と列を用いて情報を管理できる
各テーブルは一意のキーprimary keyによって識別され、
異なるテーブル間での関連付けが可能になる。
複雑なクエリや分析を行うことができるようになる。
例:
MYSQL, PostgreSQL, Oracle DB, Microsoft SQL Serverなど...
SQLとは
RDBの管理システム
DBのデータのCRUDができる
主に以下の3つのコマンド群がある
- DDL
DBやテーブルの構造を定義する(CREATE, DROP, ALTER, TRUNCATE) - DML
データを操作する(SELECT, INSERT, UPDATE, DELETE)
※主に使うのはこれ! - DCL
データのアクセス権を制御する(GRANT, REVOKE, COMMIT, ROLLBACK) - DQL
DBからデータを取得するため言語。DMLの一部ととらえることもある
(SELECT, JOIN, GROUP)
DMLのSQL文
- SELECT
SELECT id, name, description FROM table_name;
FROMの前にカラムを指定できる。すべてのカラムを取得したい場合は
SELECT * FROM table_name;
- INSERT
INSERT INTO table_name (id, name, description) VALUES (1, 'Example', 'This is a description');
- UPDATE
UPDATE table_name
SET name = 'Updated Name', description = 'Updated Description'
WHERE id = 1;
- DELETE
DELETE FROM table_name
WHERE id = 1;
DQLのSQL文
- JOIN
SELECT 列1, 列2, .... FROM テーブル1
JOIN テーブル2 ON テーブル1.共通列 = テーブル2.共通列;
- GROUP
SELECT 列, 集計関数(列) FROM テーブル名 GROUP BY 列;
- COUNT
SELECT COUNT(列) FROM テーブル名;
- SUM
SELECT SUM(列) FROM テーブル名;
JOINの種類
- INNER JOIN
結合条件に一致する行のみを返す - LEFT JOIN
左側のテーブルのすべての行と、右側のテーブルの一致する行を返す - RIGHT JOIN
上記の逆 - FULL JOIN
右と左側のテーブルのすべての行を返す
両方のテーブルで結合条件に一致しない行にはNULLが入る
ER図とは
DBの構造を視覚的に表現した図
主に以下の3つの要素から成り立つ
- Entity
DBで管理される主要なオブジェクト - Attribute
エンティティが持つ情報の単位。 - Relationship
エンティティ間の関連性を示す
以下は、Entity図の例
+----------+ +----------+
| User | | Order |
+----------+ +----------+
| UserID |<---| *| | OrderID |
| UserName | | |----| UserID | *|------------> *+
| Email | | Date |
+----------+ +----------+ +-------------+
| | Product |
| +-------------+
| | ProductID |
| | ProductName |
+---------> | Price |
| OrderID |
+-------------+
解説:
UserがOrderを作成し、
各Orderには複数のProductが含まれていることを示している
Discussion