データベース千夜一夜第9回

データの加工命令(3)~フィールドの一括更新と基本命令群のおさらい 長谷川裕行
有限会社 手國堂

新しいサンプルデータベースの準備

これまでは、単独の「商品_mr」(練習用には「商品_dmy」)テーブルを使ってきました。次回からは、テーブル同士の関連付け――リレーションを設定された状態のデータベースを例に、少し複雑なSQLを紹介します。そのための準備をしておきましょう。


- 新サンプルのダウンロード -

まず、これまで使っていたデータベース“db1001ya”を、次回から使用する新しいテーブルを追加したものに入れ替えてください。これまでのデータベースは“db1001ya-1.mdf”というファイルを、CREATE DATABASE命令を使って“db1001ya”という名前でSQL Serverに登録したものでした。これを削除し、続いて新しいデータベースファイル“db1001ya-2.mdf”を同じ“db1001ya”という名前で登録します。

次回以降使用するデータベースとデータベースの削除/登録用スクリプトファイルは、“database09.lzh”という圧縮ファイルに納められています。まずこれをダウンロードし、適宜フォルダを作成してそこに解凍した上で、以下の「サンプルデータの使い方」をよく読んで作業してください。

《サンプルデータの使い方》
サンプルデータベースを利用するには、SQL Server 2000がインストールされて稼働していることが大前提です。MSDE(2000のサブセットである“Microsoft Desktop Engine”)でも構いません(SQL Server 7.0では動作確認していません)。

ダウンロードした“database09.lzh”を解凍すると、以下の4つのファイルが生成されます。

  ・db1001ya-2.mdf
  ・AddExampleDb.sql
  ・DelExampleDb.sql
  ・db1001ya-2.mdb


- 各ファイルの内容 -

各ファイルの内容は以下のようになっています。

db1001ya-2.mdf
SQL Serverのデータベースファイルです。今後紹介するテクニックに対応する新しいテーブルが含まれています。SQL Serverのデータ保存場所(“C:\MS SQL Server\Data”、“C:\MSSQL\Data”など)にコピーしてください。

DelExampleDb.sql
登録したデータベース“db1001ya”をSQL Serverから削除するスクリプトです。クエリアナライザでこのスクリプトを開いて実行すれば、現在登録されているサンプルデータベース“db1001ya”が削除されます。

スクリプトは以下の1行です。

  sp_detach_db db1001ya

AddExampleDb.sql
SQL Serverに新しいデータベースを登録するためのスクリプトファイルです。mdfファイルの場所は“C:\MSSQL\Data”となっています。そこに上記の“db1001ya-2.mdf”を保存し、クエリアナライザでこのスクリプトを開いて実行すれば、データベースが“db101ya”という名前で登録されます。

スクリプトは以下のようになっているので、mdfファイルを異なる場所に保存したときは、アンダーラインの箇所を適切なパスに書き換えてください。

--------
CREATE DATABASE db1001ya
ON PRIMARY (FILENAME = 'C:\MSSQL\Data\db1001ya-2.mdf')

FOR ATTACH
GO
--------

db1001ya-2.mdb
Access2000のデータベースです。Accessで開いてアップサイジング・ウィザードを起動すれば、SQL Serverのデータベースに変換できます。クエリアナライザなどの操作が面倒な方は、こちらの方法を使ってください。

アップサイジング・ウィザードを実行する前に、必ず“DelExampleDb.sql”を実行して現在のデータベースを削除しておいてください。

SQL Server 7.0(または7.0のサブセットである“Microsoft Data Engine”)の場合も、Accessからのアップグレードならデータベースを登録できます。


- 操作手順 -

データベース入れ替えの操作手順は以下のようになります。

(1) 新しいデータベースファイル“db1001ya-2.mdf”を、SQL Serverのデータ保存場所にコピーする
保存場所はSQL Serverの環境設定によって異なります。通常は“C:\MS SQL Server\Data”または“C:\MSSQL\Data”となっているはずですが、操作の前に確認してください。

(2) スクリプト“DelExampleDb.sql”で現在登録されているデータベース“db1001ya”を削除する
EnterpriseManager左ペインのデータベースリストから“db1001ya”を選択し、メニューから「操作」→「すべてのタスク」→「オフライン」を選択します。

クエリアナライザを起動し、DelExampleDb.sqlを開いて実行します。

上記の操作でメッセージペインに「コマンドは正常に終了しました」と表示されれば、データベースは削除されています。エラーメッセージが表示されて削除されなかった場合は、EnterpriseManager左ペインのデータベースリストから“db1001ya”を選択し、メニューから「操作」→「削除」を選択して画面6のようなメッセージが表示されたら[OK]をクリックしてください。



(3) スクリプト“AddExampleDb.sql”で“db1001ya-2.mdf”をSQL Serverに登録する
クエリアナライザでAddExampleDb.sqlを開いて実行します。

これで、新しいデータベースが“db1001ya”の名前で登録されます。


- 旧データベースについて -

SQL Serverでデータベースを削除しても、データベースファイル(これまで使っていた“db1001ya-1.mdf”)自体は削除されません。単にデータベースの登録から外されるだけです。

今後の練習用に旧データベースも使用したければ、以下のようなSQLを実行してください。

--------
CREATE DATABASE db1001yaOld

ON PRIMARY (FILENAME = 'C:\MSSQL\Data\db1001ya-1.mdf')

FOR ATTACH
GO
--------

例では、C:\MSSQL\Dataに保存したdb1001ya-1.mdfを“db1001yaOld”という名前で登録しています。名前は、適宜変更して構いません。


- テーブルの関連付けについて -

新しいデータベースでは、「商品_mr」テーブルに「仕入先ID」というフィールドが追加され、「在庫」フィールドが削除されています。

「仕入先ID」は新たに追加された「仕入先_mr」テーブルを参照するようになります。在庫数も新たに追加された「在庫_mr」テーブルを参照します。

これらはテーブルの関連付け――リレーションを設定することで機能します。SQL Serverではリレーションの様子はダイアグラムとして作成/管理されます。新しいサンプルの“db1001ya”では“DIAGRAM1”という名前で保存されています。




あとがき

その他、テスト用のダミーテーブル「商品_dmy」や販売状況を記録するテーブルなども追加されています。これらの使い方については、次回以降順を追って紹介していきます。


Downloadサンプルデータベース (LZH形式 219 KB)

Downloadサンプルファイル (LZH形式 567 B)


トップページ
フィールドの更新処理~UPDATE命令
様々なフィールド更新処理
基本命令のおさらい
新しいサンプルデータベースの準備
新サンプルのダウンロード
各ファイルの内容
操作手順
旧データベースについて
テーブルの関連付けについて
あとがき
Copyright © MESCIUS inc. All rights reserved.