💻

DBとSQLについてまとめ(近日更新予定)

2025/01/16に公開

DBとは

構造化された情報やデータを効率的に格納、取得、管理するシステム
通常RDB(リレーショナルデータベース)が使用されるが、状況によってNoSQLや分散DBを用いたり、
組み合わせて使用することもある

タスク(投稿時消す)

  • PostgreSQLの公式ドキュメントを読む
  • 課題やSQL30本ノックを使う
  • SQLは数をこなす(ドリル形式「すっきりわかるSQL入門」など)

RDBとは

テーブル形式でデータを整理し、行と列を用いて情報を管理できる
各テーブルは一意のキーprimary keyによって識別され、
異なるテーブル間での関連付けが可能になる。
複雑なクエリや分析を行うことができるようになる。

例:
MYSQL, PostgreSQL, Oracle DB, Microsoft SQL Serverなど...

SQLとは

RDBの管理システム
DBのデータのCRUDができる

主に以下の3つのコマンド群がある

  1. DDL
    DBやテーブルの構造を定義する(CREATE, DROP, ALTER, TRUNCATE)
  2. DML
    データを操作する(SELECT, INSERT, UPDATE, DELETE)
    ※主に使うのはこれ!
  3. DCL
      データのアクセス権を制御する(GRANT, REVOKE, COMMIT, ROLLBACK)
  4. DQL
    DBからデータを取得するため言語。DMLの一部ととらえることもある
    (SELECT, JOIN, GROUP)

DMLのSQL文

  1. SELECT
SELECT id, name, description FROM table_name;

FROMの前にカラムを指定できる。すべてのカラムを取得したい場合は

SELECT * FROM table_name;
  1. INSERT
INSERT INTO table_name (id, name, description) VALUES (1, 'Example', 'This is a description');
  1. UPDATE
UPDATE table_name
SET name = 'Updated Name', description = 'Updated Description'
WHERE id = 1;
  1. DELETE
DELETE FROM table_name
WHERE id = 1;

DQLのSQL文

  1. JOIN
SELECT1,2, .... FROM テーブル1
JOIN テーブル2 ON テーブル1.共通列 = テーブル2.共通列;
  1. GROUP
SELECT, 集計関数() FROM テーブル名 GROUP BY;
  1. COUNT
SELECT COUNT() FROM テーブル名;
  1. SUM
SELECT SUM() FROM テーブル名;

JOINの種類

  1. INNER JOIN
    結合条件に一致する行のみを返す
  2. LEFT JOIN
      左側のテーブルのすべての行と、右側のテーブルの一致する行を返す
  3. RIGHT JOIN
      上記の逆
  4. FULL JOIN
      右と左側のテーブルのすべての行を返す
     両方のテーブルで結合条件に一致しない行にはNULLが入る

ER図とは

DBの構造を視覚的に表現した図
主に以下の3つの要素から成り立つ

  1. Entity
      DBで管理される主要なオブジェクト
  2. Attribute
      エンティティが持つ情報の単位。
  3. Relationship
    エンティティ間の関連性を示す

以下は、Entity図の例

+----------+                       +----------+                       
|   User   |                       |  Order   |                       
+----------+                       +----------+                       
| UserID   |<---|             *|   | OrderID  |
| UserName |     |            |----| UserID   |   *|------------> *+
| Email    |                       | Date     |
+----------+                       +----------+      +-------------+
                                          |           |   Product   |
                                          |           +-------------+
                                          |           | ProductID   |
                                          |           | ProductName |
                                          +---------> | Price       |
                                                      | OrderID     |
                                                      +-------------+

解説:
UserがOrderを作成し、
各Orderには複数のProductが含まれていることを示している

続きは近日公開

Discussion