C#入門㉝ データベースとSQL ── データを、きちんと保存する場所
前回まで、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#からデータベースに接続する 方法です。

