前回まで、C#の言語機能をひととおり学びました。

ここからは、業務系の開発で必ず登場するデータベースの話に入ります。まずは「データベースとは何か」「SQLとは何か」から。

データベースとは、たくさんのデータを、整理して保存・検索できる専用の場所です。

ファイルだけでは、足りない

第31回で、ファイルにデータを保存する方法をやりました。メモ程度なら、ファイルで十分です。

でも、業務で扱うデータは、もっと大量で、複雑です。

  • 何万人もの顧客情報
  • 毎日増えていく注文データ
  • 商品、在庫、売上…

これをファイルで管理しようとすると、すぐに限界がきます。

  • 「田中さんのデータだけ探す」のに、全部読む羽目になる
  • 2人が同時に書き込むと、データが壊れる
  • 量が増えると、どんどん遅くなる

そこで使うのが、データベースです。大量のデータを、速く・安全に・きちんと扱うための、専用の仕組みです。図書館でたとえるなら、本(データ)を適当に積むのではなく、きちんと分類・整理して、すぐ探せるようにした書庫のようなものです。

データは「表」で整理される

データベースの基本は、表(テーブル)です。エクセルの表を思い浮かべてください。

たとえば「顧客」の表は、こんな形です。

顧客テーブル
┌──────┬────────┬─────┐
│  ID  │  名前  │ 年齢 │
├──────┼────────┼─────┤
│  1   │  山田  │  20  │
│  2   │  田中  │  35  │
│  3   │  佐藤  │  28  │
└──────┴────────┴─────┘
  • 列(カラム) … ID、名前、年齢といった「項目」
  • 行(レコード) … 山田さん、田中さん…という「1件1件」

これ、第18回でやったクラスと、よく似ていませんか。「名前・年齢を持つ」という構造が、Person クラスとそっくりです。実は、この対応が後で効いてきます。

SQL ── データベースへの「お願いの言葉」

データベースを操作するには、専用の言葉を使います。それがSQL(エスキューエル)です。

SQLは、データベースに「こういうデータがほしい」「これを保存して」とお願いする言葉です。いくつか、基本の形を見てみましょう。

取り出す(SELECT)

SELECT * FROM 顧客

「顧客テーブルから、全部(*)取り出して」という意味。

条件で絞る(WHERE)

SELECT * FROM 顧客 WHERE 年齢 >= 30

「顧客から、年齢が30以上のものを取り出して」。

これ、第29回のLINQ(Where)と、考え方がそっくりですね。実は、LINQはSQLの発想を、C#に持ち込んだものなんです。

追加する(INSERT)

INSERT INTO 顧客 (名前, 年齢) VALUES ('鈴木', 40)

「顧客に、鈴木・40歳を追加して」。

更新する(UPDATE)

UPDATE 顧客 SET 年齢 = 21 WHERE ID = 1

「ID が1の人の、年齢を21に変えて」。

削除する(DELETE)

DELETE FROM 顧客 WHERE ID = 3

「ID が3の人を、削除して」。

「取り出す・追加・更新・削除」。この4つが、データ操作の基本です(頭文字をとって、よくCRUDと呼ばれます)。

SQLは、C#とは別の言葉

ここで大事なこと。SQLは、C#とは別の言語です。

C#が「プログラムを動かす言葉」なら、SQLは「データベースにお願いする言葉」。役割が違います。

業務系の開発では、この2つを両方使います。C#でプログラムを作り、その中からSQLでデータベースに問い合わせる。次回は、まさにその「C#からデータベースを使う」方法をやります。

つまずきポイント

初心者が最初に戸惑うのは、「2つの言語を行き来する」ことです。

C#を書いていたと思ったら、急にSQLが出てくる。文法も考え方も違うので、混乱しがちです。

でも、役割で分けて考えれば大丈夫です。

  • C# … 処理の流れ、計算、画面表示
  • SQL … データの保存と取り出し

「データをどうにかしたいとき、SQLの出番」。そう覚えておけば、混乱しません。

まとめ

データベースは、大量のデータを整理して扱う専用の場所。SQLは、その操作言語。

  • データは「表(テーブル)」で整理される(列=項目、行=1件1件)
  • SQLの基本は、取り出す・追加・更新・削除
    • SELECT(取り出す)、INSERT(追加)、UPDATE(更新)、DELETE(削除)
  • SQLは、C#とは別の言葉。役割で使い分ける

次回は、いよいよ C#からデータベースに接続する 方法です。