SQLとデータベースの関係を初心者向けに解説!RDBの基本構造と操作の基本
生徒
「SQLってよく聞くんですけど、そもそも何をするものなんですか?」
先生
「SQLは、データベースに保存されているデータを、取り出したり、追加したり、変更したりするための言葉です。名簿や表を操作するための専用の命令だと思ってください。」
生徒
「パソコンが苦手でも理解できますか?プログラミングとか難しそうで……。」
先生
「大丈夫です。普段使っている表計算ソフトのような『表』を見るところから順番に説明するので、紙の名簿を扱う感覚で直感的に理解できますよ。」
生徒
「なるほど。SQLという言葉を使って、データベースという箱にお願いをするイメージですね!」
1. SQLとは何か?データベースとの関係性
SQL(エスキューエル)とは、データベース(Database)というデータの保管庫に対して、「このデータを見せて」「新しくこの情報を保存して」といった指示を出すための「言語」です。 プログラミング未経験の方には、「世界共通のデータ操作用ルール」と考えると分かりやすいでしょう。
データベースは、例えるなら「巨大な図書館」や「整理整頓された引き出し」です。 私たちがスマートフォンでアプリを使ったり、ネットショッピングをしたりする裏側では、膨大な情報がこのデータベースの中に眠っています。 そして、その情報を自由自在に操るための道具こそが、今回学ぶSQLなのです。
よく「データベース」と「SQL」を同じものだと勘違いしてしまうことがありますが、明確な違いがあります。 データベースは「データを保存する場所(箱)」であり、SQLは「その箱に対して命令を出す言葉」です。 レストランに例えるなら、データベースは食材が詰まった「冷蔵庫」、SQLは料理人が出す「オーダー票」のような関係性と言えるでしょう。
2. RDB(リレーショナルデータベース)の基本構造
現在、世の中で最も広く使われているデータベースの形式がRDB(リレーショナルデータベース)です。 「リレーショナル」とは「関連性のある」という意味ですが、難しいことは考えず、「Excel(エクセル)のような表形式でデータを管理するもの」だと想像してください。
RDBでは、データを「テーブル」と呼ばれる表で管理します。このテーブルは、縦の列と横の行で構成されています。
- レコード(行): 1件分のデータのことです。例えば、会員名簿なら「山田太郎さんの情報1人分」が1つのレコードになります。
- カラム(列): データの項目のことです。「名前」「年齢」「メールアドレス」といった情報の種類を指します。
- フィールド: 行と列が交差する、個々のデータが入る「マス目」のことです。
このように、バラバラになりがちな情報を「表」という決まった形に当てはめることで、後から必要な情報を素早く探し出せるように工夫されています。
3. SQLでデータを取得する(SELECT文)
それでは、実際にSQLを使ってどのようにデータを操作するのか、具体的な例を見ていきましょう。 まずは、データベースから情報を取り出すSELECT(セレクト)という命令です。
例えば、以下のような「users(ユーザー)」という名前のテーブルがあるとします。
id | name | age | email | city
---+------------+-----+--------------------+---------
1 | 山田太郎 | 25 | taro@example.com | 東京
2 | 佐藤花子 | 19 | hanako@example.com | 大阪
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
4 | 高橋京子 | 22 | kyoko@example.com | 東京
5 | 田中健一 | 45 | ken@example.com | 福岡
6 | 伊藤純子 | 28 | junko@example.com | 札幌
この中から、「名前」と「年齢」だけを選んで表示したい場合は、次のようなSQLを書きます。
SELECT name, age
FROM users;
このSQLを実行すると、結果は以下のようになります。
name | age
-----------+-----
山田太郎 | 25
佐藤花子 | 19
鈴木一郎 | 30
高橋京子 | 22
田中健一 | 45
伊藤純子 | 28
「FROM users」は「usersというテーブルから」という意味で、「SELECT name, age」は「名前と年齢の項目を選んでください」という指示になります。 まるで英語の文章を読んでいるような、とてもシンプルな仕組みですね。
4. 条件に一致するデータを絞り込む(WHERE句)
膨大なデータの中から、特定の条件に合うものだけを抜き出したいときはWHERE(ウェア)を使います。 これは検索フィルターのような役割を果たします。
先ほどのユーザーテーブルから、「住所(city)が東京の人」だけを絞り込んでみましょう。
SELECT *
FROM users
WHERE city = '東京';
ここで使った「*(アスタリスク)」は、「すべての項目(カラム)を表示する」という意味の便利な記号です。 実行結果は次の通りです。
id | name | age | email | city
---+------------+-----+--------------------+---------
1 | 山田太郎 | 25 | taro@example.com | 東京
4 | 高橋京子 | 22 | kyoko@example.com | 東京
住所が東京の人だけが、魔法のようにパッと表示されました。 条件には「20歳以上」といった数値の比較や、「名前が『山』から始まる人」といった文字の検索も指定できます。 パソコンに詳しくない方でも、このルールさえ覚えれば、何万件ものデータから一瞬でお目当ての情報を探し出せるようになります。
5. 新しいデータを追加する(INSERT文)
次に、テーブルに新しい情報を付け加える方法を学びましょう。 これにはINSERT(インサート)という命令を使います。 新しく「小林直樹さん」というメンバーが加わった場面を想像してください。
INSERT INTO users (id, name, age, email, city)
VALUES (7, '小林直樹', 33, 'naoki@example.com', '横浜');
「INSERT INTO」は「~の中へ挿入する」という意味です。 実行後のテーブルは、以下のようになります。
id | name | age | email | city
---+------------+-----+--------------------+---------
1 | 山田太郎 | 25 | taro@example.com | 東京
2 | 佐藤花子 | 19 | hanako@example.com | 大阪
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
4 | 高橋京子 | 22 | kyoko@example.com | 東京
5 | 田中健一 | 45 | ken@example.com | 福岡
6 | 伊藤純子 | 28 | junko@example.com | 札幌
7 | 小林直樹 | 33 | naoki@example.com | 横浜
最後に行が追加されたのがわかりますね。 このように、日々のサービスでユーザーが新規登録ボタンを押したとき、裏側ではこのようなSQLが動き、データベースに新しい情報が書き込まれているのです。
6. データを更新・変更する(UPDATE文)
保存されているデータを書き換えたいときはUPDATE(アップデート)を使います。 例えば、「佐藤花子さん」が誕生日を迎えて20歳になったり、メールアドレスを変更したりする場合です。
ここでは、idが2番の「佐藤花子さん」の年齢を「20」に更新してみます。
UPDATE users
SET age = 20
WHERE id = 2;
この操作で非常に重要なのが「WHERE id = 2」という部分です。 もしこれを書き忘れてしまうと、「テーブルにいる全員の年齢が20歳」に書き換わってしまうという、恐ろしい事故が起きてしまいます。 SQLを使うときは、「誰の情報を操作するのか」を常に意識することが大切です。
実行後のデータを確認してみましょう。
id | name | age | email | city
---+------------+-----+--------------------+---------
1 | 山田太郎 | 25 | taro@example.com | 東京
2 | 佐藤花子 | 20 | hanako@example.com | 大阪
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
4 | 高橋京子 | 22 | kyoko@example.com | 東京
5 | 田中健一 | 45 | ken@example.com | 福岡
6 | 伊藤純子 | 28 | junko@example.com | 札幌
7 | 小林直樹 | 33 | naoki@example.com | 横浜
佐藤花子さんの年齢が19歳から20歳へと正しく変更されました。
7. データベースをなぜ使うのか?Excelとの違い
「表形式なら、Excel(エクセル)で十分じゃないの?」と思うかもしれません。 確かに少人数の名簿ならエクセルでも管理できます。しかし、データベース(特にSQLを使うRDB)には、エクセルにはない強力なメリットがいくつもあります。
- 大量のデータに強い: 数百万、数千万件という膨大なデータになっても、SQLを使えば瞬時に検索が可能です。エクセルでは動作が重くなってしまうような量でも、データベースなら快適に動作します。
- 同時に何人でも使える: エクセルは一人がファイルを開いていると、他の人が編集しにくいことがありますが、データベースは世界中の何千人、何万人という人が同時にデータを書き込んだり読み取ったりできるように設計されています。
- データの安全性が高い: 「間違えて変な値を入れないようにする」というルールを厳格に決めることができます。例えば、年齢のカラムには数字以外入れられないように設定することで、データの品質を保つことができます。
- 複数の表を合体できる: 「会員名簿」と「注文履歴」という別々の表を、SQLの「結合(JOIN)」という機能を使って、パズルのように組み合わせて分析することができます。
これらの特徴があるからこそ、Amazonのような通販サイトや、SNS、銀行のシステムなど、止まってはいけない重要なシステムの裏側には必ずといっていいほどデータベースが鎮座しているのです。
8. 初心者がSQLを学ぶための心構え
SQLの学習を始めるとき、最初はアルファベットの命令文が並んでいて難しく感じるかもしれません。 しかし、実はSQLで使われる基本的な単語はわずか数個です。 「SELECT(選ぶ)」「INSERT(入れる)」「UPDATE(更新する)」「DELETE(消す)」の4つをマスターするだけで、データベース操作の8割以上ができるようになります。
まずは「難しそう」という先入観を捨てて、パズルやクイズを解くような感覚で触れてみてください。 キーボードを打つことに慣れていない方でも、SQLの文法は英語に近いので、意味を理解しながら進めれば必ず習得できます。 データを自由自在に操れるようになると、これまで魔法のように見えていたITの世界が、ずっと身近で論理的なものに感じられるはずです。
今回の内容で、データベースという「大きな引き出し」と、SQLという「魔法の言葉」のイメージが掴めたでしょうか。 日常のあらゆる場面で活躍しているこの技術を知ることは、現代社会を理解する大きな一歩になります。