本文へスキップ
BecomeCoder

SQL データ操作 (DML)コース · 第0章 データベースってなに? · レッスン0-3

データベースと DBMS ― 全体像をつかむ

ブラウザで完結

導入

ここで、これから何度も出てくる言葉を整理しておきます。「データベース」「DBMS」「SQL」「RDB」――似ていて紛らわしいこれらの関係を、1枚の図でつかんでしまいましょう。用語がクリアになると、この先の学習が一気に楽になります。

説明

まず登場人物を並べます。

  • データベース(DB)… データそのものの集まり(表の集合)。「倉庫の中身」。
  • DBMS(DataBase Management System/データベース管理システム)… その倉庫を管理するソフトウェア。データの保存・検索・同時アクセス・バックアップなどを引き受ける「倉庫の管理人」。SQLite・MySQL・PostgreSQL・Oracle などがこれにあたります。
  • SQL… 管理人(DBMS)に「こういうデータが欲しい」と頼むための共通言語。

アプリケーション(あなたが作るプログラム)は、DB を直接いじりません。必ず DBMS を通して、SQL で頼みます。

flowchart LR
    A["アプリ・あなた"] -->|"SQL でお願い"| M["DBMS(管理人)<br/>例: SQLite / MySQL / PostgreSQL"]
    M -->|"表を読み書き"| D[("データベース<br/>(表の集まり)")]
    D -->|"結果の表"| M
    M -->|"結果を返す"| A

そして DB にはいくつか種類があります。いま学んでいるのは、データを表(テーブル)で持ち、表どうしを関係づけるタイプで、これを RDB(リレーショナルデータベース/関係データベース) と呼びます。世の中の業務システムの多くはこの RDB で、SQL はその共通語です。

flowchart TB
    DB["データベースの種類"] --> R["RDB(関係データベース)<br/>表と表の関係で持つ・SQLで操作<br/>SQLite / MySQL / PostgreSQL / Oracle"]
    DB --> N["NoSQL(非RDB)<br/>表以外の形で持つ<br/>文書型(MongoDB) / KVS(Redis) など"]
    R --> ME["このコースが扱うのは RDB。<br/>まず RDB と SQL を身につければ、実務の土台になる"]

このコースの実行環境は、その RDB のひとつ SQLite(軽量で、ブラウザの中でも動く DBMS)です。RDB は「自分がどんな表を持っているか」という設計情報まで、DB 自身の中に表として持っています。SQLite ではそれを sqlite_master という特別な表で覗けます。

SELECT name FROM sqlite_master WHERE type = 'table';

やってみよう

初期表示のクエリを実行してみましょう。このショップ DB に入っている5つのテーブル(userscategoriesproductsordersorder_items)の名前が並びます。「DB は自分の設計図まで抱えている」という感覚をつかんでください。

演習

categories(商品カテゴリ)テーブルの中身を全部表示して、どんなカテゴリがあるか見てみましょう。

ヒント1を見る

SELECT * FROM categories;

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。