データベースとSQLの基礎

SNSの投稿、ネット通販の注文履歴、学校のテスト点数——こうした大量の情報をきれいに整理して、必要なときに素早く取り出す仕組みが「データベース」です。データベースを操作する言葉が「SQL」。Web開発の裏側でよく使われている2つを、やさしく解説します。

そもそもデータベースとは?

データベース(DB)は、たくさんの情報を表のような形で整理して保管する仕組みです。Excelの表をイメージするとわかりやすいでしょう。「ユーザー一覧」「投稿一覧」「注文一覧」のように用途ごとに表(テーブル)を作り、1行が1件のデータ、列が項目(名前・年齢・メアドなど)になります。

有名なデータベース製品にはMySQL、PostgreSQL、SQLite、Oracle、SQL Serverなどがあります。子どもがまず触れるならSQLite(インストール不要に近い軽量版)が手軽です。

users テーブル id name age 1 サクラ 15 2 タロウ 17 3 ハナコ 14
図1:データベースのテーブル例(usersテーブル)

SQLとは?

SQL(エスキューエル)は、データベースに対して「これを取り出して」「これを追加して」「これを更新して」と命令するための専用の言語です。1970年代にIBMで生まれ、今も多くのシステムで使われています。最初は4つの基本命令から覚えると、データの読み書きの流れがつかみやすくなります。

SQL4命令を実行すると、テーブルがこう変わる 左:実際のSQL/右:実行後のusersテーブル ① SELECT(取り出す) SELECT name FROM users WHERE age >= 15; /* 15歳以上の名前を取得 */ name (結果:2件) サクラ タロウ ② INSERT(追加) INSERT INTO users VALUES (4, 'ケン', 16); /* ケン(16歳)を追加 */ usersテーブル:3件→4件 3)ハナコ・14歳 + 4)ケン・16歳 ← 新規追加 ③ UPDATE(書き換え) UPDATE users SET age=15 WHERE id=3; /* ハナコの年齢を15に */ id=3 の age だけが書き換わる id=1)サクラ・15歳 id=2)タロウ・17歳 id=3)ハナコ・ 14歳→15歳 ④ DELETE(削除) DELETE FROM users WHERE age < 15; /* 14歳以下を削除 */ 条件に合う行が消える id=1)サクラ・15歳 ← 残る id=2)タロウ・17歳 ← 残る id=3)ハナコ・14歳 ← 削除 ※WHERE句を忘れると全件が更新・削除されるので要注意。本番DBでは必ずバックアップを取ってから実行する
図2:SQL4命令の実コードと結果。同じusersテーブルに対して命令を打つと、結果がどう変わるかが分かる

何に使われている?

身近なサービスのほぼすべてで、データベースとSQLが裏で動いています。

  • SNSの投稿・いいね・フォロワー一覧の保存
  • ネット通販の商品・在庫・注文履歴
  • 学校の成績管理・出席管理システム
  • 銀行の口座残高・取引履歴
  • 図書館の蔵書検索・予約
  • 病院の電子カルテ

表を分ける理由

データベースでは、すべての情報を1つの大きな表に入れるより、役割ごとに表を分けることが多いです。たとえばブログなら「ユーザー」「記事」「コメント」を別々のテーブルにします。記事テーブルには「誰が書いたか」を示すユーザーIDを入れ、コメントテーブルには「どの記事へのコメントか」を示す記事IDを入れます。こうしておくと、ユーザー名を変更しても記事データを全部書き換えずに済み、データの重複やミスを減らせます。

おすすめの使い方

データベースを学ぶ入口として、ブラウザだけで動くSQL練習サイト(SQLZooやSQL Boltなど)を試すのがおすすめです。インストール不要で、SELECT文を打って結果を見られます。次に、PythonやJavaScriptと組み合わせて「自分の単語帳」「お小遣い帳」をDBに保存するアプリを作ると、知識がぐっと定着します。

気をつけたい落とし穴

SQLでハマりやすい3つ
  • WHERE句なしでDELETE / UPDATEを実行すると全データが消える・書き換わる。練習用DBで試して危険性を体感する
  • SQLインジェクション攻撃の的になりやすい。本格的なアプリでは「プレースホルダ」を使う
  • 大文字小文字・全角半角・セミコロンの抜けで動かないことが多い。エラーメッセージを読み慣れる

将来どう役立つ?

SQLは「Web系・業務系・データ分析系」のどの仕事に進んでも使う、息の長いスキルです。プログラマーだけでなく、マーケティング担当者・経営企画・営業データ分析でもSQLは頻繁に求められます。覚えておけば、5年後・10年後も陳腐化しにくい武器になります。

今日からできること

3ステップで始めよう
  1. 「SQL Bolt」または「SQLZoo」で検索して、ブラウザで最初のレッスンを試す
  2. SELECT文だけでも10問解いてみる(WHERE・ORDER BY・LIMIT)
  3. 慣れたらSQLiteを自分のPCに入れ、自作の小さなテーブルを作って遊ぶ

まとめ

データベースは情報を表で整理する仕組み、SQLはそれに命令する言語です。Webサービスの裏側ではDBがよく使われており、SELECT・INSERT・UPDATE・DELETEの4つを覚えるだけでも見える世界が広がります。プログラミング言語を1つ覚えたら、次の伸ばし所としてSQLに触れてみましょう。

確認 データベースの例えは?