第16章 SQLServer 環境構築
この章の目的
Section titled “この章の目的”この章では、研修で使うデータベース環境を、自分の手で構築できる ようになることを目指します。
次章の 第 17 章「C#からデータベースを操作する」 では、C# から TrainingDB に接続して SQL を実行します。
この章では、その TrainingDB を SSMS(SQL Server Management Studio)を使って自分で作ります。
SQLServer 2022 と SSMS のインストール(付録 G) ↓SSMS で localhost に接続 ← この章の開始地点 ↓TrainingDB データベース作成 ↓departments / employees テーブル作成(社員系) ↓products / orders / order_items テーブル作成(商品・注文系) ↓サンプルデータ投入 ↓SSMS の基本操作(クエリ実行・データ確認)第 18 章以降の Windows フォーム章や Web MVC 章でも、ここで作る TrainingDB をそのまま使い続けます。
研修中の進め方について
研修では、SQLServer・SSMS・
TrainingDBは 事前に用意されている前提 です。 この章は、自分の端末で研修を再現したいとき、または現場で DB を触る基礎を身につけたいときに進めてください。 研修時間内に必ず実施する章ではありません。
この章でできるようになること
Section titled “この章でできるようになること”この章を終えると、次のことができるようになります。
- SSMS から localhost の SQLServer に接続できる
- SSMS でデータベース(
TrainingDB)を新規作成できる CREATE TABLEでdepartments、employees(社員系)を作成できるCREATE TABLEでproducts、orders、order_items(商品・注文系)を作成できる- 複数のテーブルにまたがる外部キー(注文 → 商品)を指定できる
INSERTでサンプルデータを投入できる- SSMS のクエリエディタで SELECT を実行できる
- SSMS のオブジェクトエクスプローラーでテーブル・データを確認できる
本章で使用する環境
Section titled “本章で使用する環境”| 項目 | 内容 |
|---|---|
| データベース管理 | SQL Server Management Studio (SSMS) |
| データベース | SQLServer 2022(Express Edition で OK) |
| 認証方式 | Windows 統合認証 |
| 作成するデータベース | TrainingDB |
| 作成するテーブル | 社員系:departments、employees / 商品・注文系:products、orders、order_items |
SQLServer / SSMS がまだインストールされていない場合
付録 G「SQLServer 2022 / SSMS インストール手順」を先に進めてください。
作業前チェック
Section titled “作業前チェック”作業を始める前に、次の内容を確認してください。
- SQLServer 2022 がインストール済みで、サービスが「実行中」になっている
- SSMS がインストール済みで、起動できる
- Windows ユーザーで Windows にログインしている(統合認証で使うため)
- 第 15 章までの内容を Git に提出済みである
16-1 この章で作るもの
Section titled “16-1 この章で作るもの”この章を通して、次のデータベース構造を作ります。 社員系(部署・社員)と 商品・注文系(商品・注文・注文明細)の 2 グループです。
TrainingDB││ ◆ 社員系├─ departments テーブル(部署マスター)│ department_id department_name manager_id│ ----------- --------------- ----------│ 1 総務 ...│ ...│├─ employees テーブル(社員)│ employee_id last_name first_name email hire_date salary department_id│ ----------- --------- ---------- ----------------------- --------- -------- --------------│ 1001 山田 二郎 yamada.jiro@example.com ... 500000.00 1│ ...││ ◆ 商品・注文系├─ products テーブル(商品マスター)│ product_id product_name category price stock│ ---------- ------------ -------- ----- -----│ 1 ノート 文房具 180 50│ ...│├─ orders テーブル(注文)│ order_id customer_name order_date│ -------- ------------- ----------│ 1 田中商店 2026-05-10│ ...│└─ order_items テーブル(注文明細) order_item_id order_id product_id quantity ------------- -------- ---------- -------- 1 1 1 3 ...社員名・部署名は SQL 研修で扱った Oracle の pingt ユーザーと同じ顔ぶれにしてあり、研修間の連続性を持たせています。
商品(products)は、第 12 章・第 14 章の演習で使った商品リスト(ノート・マグカップなど 6 件)と同じものを DB 化したもので、コンソールで学んだ List<Product> がそのまま DB のテーブルに対応することを体感できます。
orders / order_items は、1 つの注文が複数の商品を含む 「1 対多」 の関係を表し、第 17 章以降で テーブルを結合(JOIN)する 演習の題材になります。
詳細なテーブル定義とサンプルデータ
完全な CREATE 文・INSERT 文は、
docs_meta/章間整合ルール.mdセクション 1-2 にまとまっています(本章 16-4 / 16-5 でも掲載します)。
16-2 SSMS でサーバーに接続する
Section titled “16-2 SSMS でサーバーに接続する”SSMS を起動すると、まず 「サーバーへの接続」ダイアログ が表示されます。
次のとおり入力してください。
| 項目 | 値 |
|---|---|
| サーバーの種類 | データベース エンジン |
| サーバー名 | localhost |
| 認証 | Windows 認証 |
| 暗号化 | オプション(Optional) |
| サーバー証明書を信頼 | チェックを入れる |
入力したら 接続 をクリックします。
TODO: 図16-1「SSMS サーバー接続ダイアログ」を挿入する
接続に成功すると、左側に オブジェクトエクスプローラー が表示され、ツリー状にサーバー情報を確認できます。
DESKTOP-XXXX (SQL Server 16.0.x - DESKTOP-XXXX\username)├─ データベース│ ├─ システム データベース│ │ ├─ master│ │ ├─ model│ │ ├─ msdb│ │ └─ tempdb│ └─ (ユーザーが作ったデータベースがここに並びます)├─ セキュリティ├─ サーバー オブジェクト└─ 管理TODO: 図16-2「SSMS オブジェクトエクスプローラーの全体像」を挿入する
接続できない場合は、付録 G「よくあるトラブル」を確認してください。
16-3 TrainingDB を作成する
Section titled “16-3 TrainingDB を作成する”データベースを作る方法は 2 つあります。どちらで進めても構いません。
方法 A:GUI で作る
Section titled “方法 A:GUI で作る”- オブジェクトエクスプローラーの データベース を右クリック
- 新しいデータベース を選択
- データベース名に
TrainingDBと入力 - 他はそのままで OK をクリック
TODO: 図16-3「新しいデータベース ダイアログ」を挿入する
方法 B:SQL で作る
Section titled “方法 B:SQL で作る”- ツールバーの 新しいクエリ をクリックして、新しいクエリエディタを開く
- 次の SQL を入力する
CREATE DATABASE TrainingDB;- F5 キー または 実行 ボタンで実行
実行が成功すると、メッセージ ウィンドウに 「コマンドは正常に完了しました」 と表示されます。
オブジェクトエクスプローラーの データベース を右クリックして 更新 を選び、TrainingDB がツリーに現れたら成功です。
16-4 テーブルを作成する
Section titled “16-4 テーブルを作成する”TrainingDB の中に、departments テーブルと employees テーブルを作ります。
TrainingDB を「使う」状態にする
Section titled “TrainingDB を「使う」状態にする”クエリエディタの上部にあるデータベース選択ドロップダウンを、TrainingDB に切り替えます。
これ以降のクエリは TrainingDB の中で実行されます。
TODO: 図16-4「クエリエディタのデータベース選択」を挿入する
または、クエリの先頭に次の 1 行を書いても同じ効果になります。
USE TrainingDB;departments テーブルを作成する
Section titled “departments テーブルを作成する”新しいクエリエディタに次の SQL を入力して実行します。
CREATE TABLE departments ( department_id INT PRIMARY KEY, department_name NVARCHAR(30) NOT NULL, manager_id INT);各列の意味は次のとおりです。
| 列 | 型 | 意味 |
|---|---|---|
department_id | INT | 部署 ID(主キー) |
department_name | NVARCHAR(30) | 部署名 |
manager_id | INT | 部署長の社員 ID(NULL 可) |
NVARCHARとは日本語などの Unicode 文字を扱える可変長文字列型です。 SQLServer では、日本語データを扱う場合は
VARCHARではなくNVARCHARを使うのが推奨です。
employees テーブルを作成する
Section titled “employees テーブルを作成する”続けて、次の SQL を実行します。
CREATE TABLE employees ( employee_id INT PRIMARY KEY IDENTITY(1001, 1), last_name NVARCHAR(15) NOT NULL, first_name NVARCHAR(15) NOT NULL, email NVARCHAR(50) UNIQUE, hire_date DATE NOT NULL, salary DECIMAL(10, 2), department_id INT, CONSTRAINT FK_employees_departments FOREIGN KEY (department_id) REFERENCES departments(department_id));このテーブルには、SQL 研修の Oracle 版にはなかった要素がいくつか含まれています。
| 要素 | 説明 |
|---|---|
姓名分離(last_name / first_name) | 検索や並び替えで使いやすい構造 |
email NVARCHAR(50) UNIQUE | メールアドレスの重複を許さない |
salary DECIMAL(10, 2) | 給与に小数点を持てる型 |
IDENTITY(1001, 1) | 1001 から 1 ずつ自動採番 |
外部キー制約 FK_employees_departments | 不正な department_id を防ぐ |
テーブル作成の確認(社員系)
Section titled “テーブル作成の確認(社員系)”オブジェクトエクスプローラーの TrainingDB → テーブル を右クリックして 更新 を選びます。
dbo.departments と dbo.employees が現れたら成功です。
dboは何?
dboは schema(スキーマ) の名前で、「データベース所有者」を意味する SQLServer の既定スキーマです。 本研修では深入りせず、「テーブル名の前に付く名前空間のようなもの」と理解しておけば十分です。
products テーブルを作成する(商品・注文系)
Section titled “products テーブルを作成する(商品・注文系)”続いて、商品・注文系のテーブルを作ります。まず商品マスターの products です。
CREATE TABLE products ( product_id INT PRIMARY KEY IDENTITY(1, 1), product_name NVARCHAR(30) NOT NULL, category NVARCHAR(20) NOT NULL, price INT NOT NULL, stock INT NOT NULL);| 列 | 型 | 意味 |
|---|---|---|
product_id | INT | 商品 ID(主キー、1 から自動採番) |
product_name | NVARCHAR(30) | 商品名 |
category | NVARCHAR(20) | カテゴリ(文房具・食器・衣類 など) |
price | INT | 価格(円。本研修では小数を扱わないため INT) |
stock | INT | 在庫数 |
priceをINTにしている理由給与(
employees.salary)は小数を持てるDECIMALにしましたが、商品価格は第 12 章・第 14 章の演習でも整数(円)で扱ってきたため、ここでもINTにそろえています。
orders テーブルを作成する
Section titled “orders テーブルを作成する”注文 1 件を表す orders テーブルを作ります。
CREATE TABLE orders ( order_id INT PRIMARY KEY IDENTITY(1, 1), customer_name NVARCHAR(30) NOT NULL, order_date DATE NOT NULL);| 列 | 型 | 意味 |
|---|---|---|
order_id | INT | 注文 ID(主キー、自動採番) |
customer_name | NVARCHAR(30) | 注文した顧客名 |
order_date | DATE | 注文日 |
order_items テーブルを作成する
Section titled “order_items テーブルを作成する”1 つの注文に含まれる商品の明細を表す order_items テーブルを作ります。
「どの注文(order_id)に、どの商品(product_id)が、いくつ(quantity)含まれるか」を 1 行で表します。
CREATE TABLE order_items ( order_item_id INT PRIMARY KEY IDENTITY(1, 1), order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, CONSTRAINT FK_order_items_orders FOREIGN KEY (order_id) REFERENCES orders(order_id), CONSTRAINT FK_order_items_products FOREIGN KEY (product_id) REFERENCES products(product_id));このテーブルには 2 つの外部キー があります。
| 制約 | 意味 |
|---|---|
FK_order_items_orders | order_id は必ず orders に存在する注文を指す |
FK_order_items_products | product_id は必ず products に存在する商品を指す |
明細に価格を持たせていないのはなぜ?
order_itemsには価格を持たせず、金額はproducts.price × quantityで 計算で求める 設計にしています。 こうすると価格を二重に持たずに済みます(第 17 章以降で、JOIN して金額を集計する演習に使います)。 ※ 実務では「注文時点の価格」を明細に保存することもありますが、本研修では単純化しています。
テーブル作成の確認(商品・注文系)
Section titled “テーブル作成の確認(商品・注文系)”オブジェクトエクスプローラーの テーブル を 更新 し、dbo.products、dbo.orders、dbo.order_items が現れたら成功です。
作成する順番に注意
外部キーは「参照先のテーブルが先に存在している」必要があります。
order_itemsはordersとproductsを参照するので、products→orders→order_itemsの順 に作成してください(順番を間違えると外部キー制約エラーになります)。
16-5 サンプルデータを投入する
Section titled “16-5 サンプルデータを投入する”作成したテーブルに、研修で使うサンプルデータを入れます。
departments のデータ
Section titled “departments のデータ”クエリエディタに次の SQL を入力して実行します。
INSERT INTO departments (department_id, department_name) VALUES (1, N'総務'), (2, N'営業'), (3, N'開発'), (4, N'マーケティング'), (5, N'品質管理');
N'...'の N は何?文字列リテラルの前に
Nを付けると、Unicode 文字列 として扱われます。 日本語データをNVARCHAR列に入れる場合は、N'総務'のように N を付けるのが安全です。
employees のデータ
Section titled “employees のデータ”続けて、次の SQL を実行します。
INSERT INTO employees (last_name, first_name, email, hire_date, salary, department_id) VALUES (N'山田', N'二郎', N'yamada.jiro@example.com', '2001-04-01', 500000, 1), (N'佐藤', N'昭夫', N'sato.akio@example.com', '2002-04-01', 500000, 2), (N'山口', N'洋子', N'yamaguchi.yoko@example.com', '2003-04-01', 500000, 3), (N'田中', N'浩介', N'tanaka.kosuke@example.com', '2004-04-01', 500000, 4), (N'加藤', N'昭彦', N'kato.akihiko@example.com', '2005-04-01', 500000, 5), (N'佐々木', N'明子', N'sasaki.akiko@example.com', '2006-04-01', 800000, 1), (N'菊池', N'浩二', N'kikuchi.koji@example.com', '2007-04-01', 800000, 1), (N'中山', N'大輔', N'nakayama.daisuke@example.com', '2008-04-01', 400000, 1), (N'星野', N'健一', N'hoshino.kenichi@example.com', '2009-04-01', 400000, 2), (N'斎藤', N'京子', N'saito.kyoko@example.com', '2010-04-01', 400000, 3);employee_id は IDENTITY(1001, 1) で自動採番されるため、INSERT の列指定からは外しています。
これで、1001〜1010 の 10 件のデータが入ります。
products のデータ
Section titled “products のデータ”商品マスターに 6 件を投入します。第 12 章・第 14 章の演習で使ったものと同じ商品です。
INSERT INTO products (product_name, category, price, stock) VALUES (N'ノート', N'文房具', 180, 50), (N'ボールペン', N'文房具', 120, 100), (N'サインペン', N'文房具', 200, 40), (N'マグカップ', N'食器', 800, 20), (N'タンブラー', N'食器', 1700, 8), (N'Tシャツ', N'衣類', 2400, 15);product_id は IDENTITY(1, 1) で自動採番されるため、1〜6 が割り当てられます。
orders と order_items のデータ
Section titled “orders と order_items のデータ”注文を 3 件、その明細を 5 件投入します。
明細は product_id で商品を参照するので、上の products を投入した後に実行してください。
INSERT INTO orders (customer_name, order_date) VALUES (N'田中商店', '2026-05-10'), (N'佐藤文具', '2026-05-11'), (N'山田商会', '2026-05-12');
INSERT INTO order_items (order_id, product_id, quantity) VALUES (1, 1, 3), -- 注文1:ノート × 3 (1, 4, 2), -- 注文1:マグカップ × 2 (2, 2, 5), -- 注文2:ボールペン × 5 (2, 3, 2), -- 注文2:サインペン × 2 (3, 6, 1); -- 注文3:Tシャツ × 1注文ごとの合計金額(参考)
金額は明細に持たせず
products.price × quantityで計算します。上のデータでは次のようになります。
注文 顧客 内訳 合計 1 田中商店 ノート 180×3 + マグカップ 800×2 2140 円 2 佐藤文具 ボールペン 120×5 + サインペン 200×2 1000 円 3 山田商会 Tシャツ 2400×1 2400 円 この「JOIN して金額を集計する」処理は、第 17 章以降の演習で扱います。
データ件数を確認する
Section titled “データ件数を確認する”次の SQL で件数を確認します。
SELECT COUNT(*) AS dept_count FROM departments;SELECT COUNT(*) AS emp_count FROM employees;SELECT COUNT(*) AS product_count FROM products;SELECT COUNT(*) AS order_count FROM orders;SELECT COUNT(*) AS item_count FROM order_items;| 列 | 期待される値 |
|---|---|
dept_count | 5 |
emp_count | 10 |
product_count | 6 |
order_count | 3 |
item_count | 5 |
16-6 SSMS の基本操作
Section titled “16-6 SSMS の基本操作”ここまでで TrainingDB の構築は完了です。
SSMS の主な操作を整理しておきます。
クエリエディタで SQL を実行する
Section titled “クエリエディタで SQL を実行する”- 新しいクエリ:ツールバーの「新しいクエリ」 をクリック
- 実行:F5 キー または 実行ボタン
- 部分実行:選択した範囲だけを実行(複数 SQL を順に試したいときに便利)
- 結果:下部の 結果 タブと メッセージ タブで確認
結果を見やすく表示する
Section titled “結果を見やすく表示する”SELECT 文の結果は、結果ウィンドウに表形式で並びます。
列見出しの境界をドラッグすると、列幅を調整できます。
SELECT employee_id, last_name + N' ' + first_name AS full_name, department_id, salaryFROM employeesORDER BY employee_id;Oracle の
||は SQLServer では+SQL 研修(Oracle)では文字列の連結に
||を使いましたが、SQLServer では+で連結します(上のlast_name + N' ' + first_name)。 SQL 研修の感覚で||と書くとエラーになります。Oracle と SQLServer の SQL の細かな違いは、次章の 第 17 章「17-9 Oracle と SQLServer の違い」 に早見表があります。
データ編集ビューを開く
Section titled “データ編集ビューを開く”テーブルを右クリック → 上位 200 行の編集 で、Excel のような画面でデータを編集できます。
TODO: 図16-5「上位 200 行の編集 画面」を挿入する
研修では基本的にクエリで操作しますが、ちょっとした確認・修正には便利です。
.sql ファイルとして保存する
Section titled “.sql ファイルとして保存する”クエリエディタの内容は ファイル → 名前を付けて保存 で .sql ファイルとして保存できます。
この章で書いた CREATE TABLE と INSERT の SQL は、setup_training_db.sql などの名前で保存しておくと、再構築時に役立ちます。
16-7 接続情報を確認する
Section titled “16-7 接続情報を確認する”次章の C# 接続コードがこの TrainingDB に接続できるよう、ここで接続情報を確認しておきます。
次章(第 17 章)で使う接続文字列を示します。
Server=localhost;Database=TrainingDB;Integrated Security=true;TrustServerCertificate=true;| 項目 | 期待される値 | 確認方法 |
|---|---|---|
Server=localhost | サーバー名 localhost で SSMS が接続できている | SSMS の接続ダイアログを再確認 |
Database=TrainingDB | データベース名 TrainingDB がオブジェクトエクスプローラーに見える | ツリーで確認 |
Integrated Security=true | Windows 統合認証で SSMS が接続できている | 接続ダイアログの「認証」が「Windows 認証」 |
TrustServerCertificate=true | 接続時の証明書警告が出ない | 次章のコードを実行したときに確認 |
次章で作る Kd17_01_HelloSqlServer を実行し、employees テーブルの件数:10件 が表示されれば、第17章への準備は完了です。
よくあるつまずき
Section titled “よくあるつまずき”| 症状 | 原因 | 対処 |
|---|---|---|
| SSMS が起動しない | インストール失敗、または別バージョンと競合 | 付録 G を参照して再インストール |
| サーバーに接続できない(Error 53 系) | SQLServer サービスが停止している | Windows の「サービス」で SQL Server (MSSQLSERVER) を「実行中」にする |
サーバー名 localhost で接続できない | 名前付きインスタンスでインストールした | localhost\SQLEXPRESS などインスタンス名を確認(付録 G 参照) |
CREATE DATABASE で「権限がありません」 | Windows ユーザーが管理者ロールに含まれていない | SSMS を「管理者として実行」してみる、または DBA に依頼 |
日本語が ??? で入る | NVARCHAR ではなく VARCHAR を使っている、または N プレフィックスがない | 列を NVARCHAR に、リテラルを N'...' に |
| 外部キー制約エラー(社員系) | 先に departments を作る前に employees を作った | テーブル作成順を departments → employees の順に |
| 外部キー制約エラー(商品・注文系) | orders / products より先に order_items を作った、または products 投入前に order_items を投入した | 作成順は products → orders → order_items、データ投入も同じ順に |
IDENTITY の値が予想と違う | 過去の INSERT 失敗で番号が飛んだ | DBCC CHECKIDENT('employees', RESEED, 1000) で再シードできる(発展) |
学んだことチェック
Section titled “学んだことチェック”この章で学んだ内容をチェックしてください。
- SSMS で localhost に Windows 統合認証で接続できる
- SSMS でデータベースを新規作成できる(GUI / SQL の両方)
-
CREATE TABLEで主キー・NOT NULL・UNIQUE・外部キーを指定できる - 1 つのテーブルに複数の外部キー(
order_items)を指定できる - 外部キーがあるテーブルを作る順番・データ投入の順番を説明できる
-
IDENTITYの意味を説明できる -
NVARCHARとVARCHARの違いを説明できる -
INSERT INTO ... VALUESで複数行のデータを一括投入できる -
N'...'の役割を説明できる - SSMS のクエリエディタで
SELECTを実行して結果を確認できる - 1 対多の関係(注文 → 注文明細)を説明できる
- 次章で使う接続文字列が、この環境に対応していることを説明できる
ペアで以下の質問に答えてみてください。
TrainingDBの中には、どんなテーブルがありますか(社員系・商品注文系)。IDENTITY(1001, 1)とは何ですか。NVARCHARを使うのはどんなときですか。N'総務'の N は何のためにありますか。- 外部キー制約
FK_employees_departmentsは何を防いでいますか。 order_itemsに外部キーが 2 つあるのはなぜですか。products・orders・order_itemsを作る順番は、なぜその順でなければならないのですか。- SSMS で SQL を実行するキーは何ですか。
Server=localhostのlocalhostは何を指していますか。
完成チェックリスト
Section titled “完成チェックリスト”この章の作業が完了したか、次の点を確認してください(ペアチェックの観点と合わせて使えます)。
-
TrainingDBデータベースが SSMS のオブジェクトエクスプローラーに表示される -
departmentsテーブルが 5 件のデータを持っている -
employeesテーブルが 10 件のデータを持っている -
productsテーブルが 6 件のデータを持っている -
ordersテーブルが 3 件、order_itemsテーブルが 5 件のデータを持っている -
employeesをSELECTして日本語の氏名が正しく表示される(文字化けしていない) - 隣の人と画面を見せ合い、テーブルがそろっていることを確認した
- (推奨)CREATE 文と INSERT 文を
setup_training_db.sqlなどとして手元に保存した - 次章(第 17 章)に進んだ後、
Kd17_01_HelloSqlServerで件数 10 が返ることを確認できる
テーブルがそろったか確認する(ペアチェック)
Section titled “テーブルがそろったか確認する(ペアチェック)”この章の成果物は、コードではなく SSMS の中に作られたデータベース です。 そのため、Git への提出は行いません。代わりに、隣の人とお互いの画面を見せ合って、テーブルとデータが正しくそろっているか を確認しましょう。
自分で確認する
Section titled “自分で確認する”まず、件数確認の SQL を実行して、次のとおりになっているかを見ます。
SELECT COUNT(*) AS dept_count FROM departments; -- 5SELECT COUNT(*) AS emp_count FROM employees; -- 10SELECT COUNT(*) AS product_count FROM products; -- 6SELECT COUNT(*) AS order_count FROM orders; -- 3SELECT COUNT(*) AS item_count FROM order_items; -- 5ペアで見せ合う
Section titled “ペアで見せ合う”隣の人と画面を見せ合い、次の 3 点をお互いに確認してください。
- オブジェクトエクスプローラー の
TrainingDB→ テーブル に、dbo.departments/dbo.employees/dbo.products/dbo.orders/dbo.order_itemsの 5 つ が並んでいる - 上の件数確認 SQL の結果が 5 / 10 / 6 / 3 / 5 になっている
employeesをSELECTして、日本語の氏名が???などに化けず正しく表示されている
どれかが合っていなければ、この章のどの手順でつまずいたかを一緒に探してみましょう(「よくあるつまずき」表も参照)。 人に説明しながら確認すると、自分の理解も深まります。
.sqlファイルは保存しておくのがおすすめ(提出は不要)提出は不要ですが、この章で書いた
CREATE TABLEとINSERTをsetup_training_db.sqlなどの名前で保存しておくと、環境を作り直すときや別の端末で再現するときに一発で復元できます(保存方法は 16-6 参照)。手元に残しておきましょう。
この章のまとめ
Section titled “この章のまとめ”この章では、SQLServer の研修用データベース TrainingDB を自分の手で構築しました。
主な内容は次のとおりです。
- SSMS で localhost に Windows 統合認証で接続する
CREATE DATABASE、CREATE TABLEでデータベース・テーブルを作る- 社員系(
departments/employees)と商品・注文系(products/orders/order_items)の 2 グループのテーブルを作る - 主キー・NOT NULL・UNIQUE・外部キー・IDENTITY などの制約を SQLServer の書き方で指定する
- 1 対多の関係(注文 → 注文明細)を、外部キー 2 つを持つテーブルで表現する
- 外部キーがあるテーブルは、参照先 → 参照元の順に作成・投入する
NVARCHARとN'...'リテラルで日本語データを安全に扱うINSERTでサンプルデータを投入し、SELECT COUNT(*)で件数を確認する- SSMS のクエリエディタの基本操作(実行、結果表示、ファイル保存)
これで、次章で書く C# 接続コードを動かす環境が、自分の手で構築できました。
この章で、研修で使う TrainingDB を自分の手で構築する手順を身に付けました。
次章 第 17 章「C#からデータベースを操作する」 では、今構築した TrainingDB に対して C# のコンソールアプリから接続し、SQL を実行して結果を受け取る基本パターンを学びます。
Microsoft.Data.SqlClient を使った接続コード、SqlConnection / SqlCommand / ExecuteScalar の組み合わせ、SqlException を含む例外処理が中心です。
第 18 章以降の Windows フォーム章でも、ここで作った TrainingDB をそのまま使い続けます。