連載
» 2003年03月19日 00時00分 公開

基礎解説 ADO.NET基礎講座 ―初めての.NETデータベース・プログラミング―:第1回 ADO.NETでプログラミングを始める前に (2/3)

[デジタルアドバンテージ,著]

インスタンス、データベース、テーブル

 ここまでで、MSDEをインストールし(同時にNetSDKインスタンスが作成され)、4つのサンプル・データベースを作成した。各サンプル・データベースには、サンプル・データも作成される。これらのデータは、実際にはデータベース内に作成された複数の「テーブル」に、複数の「レコード」として格納されている。

 これらの様子は、SQL Serverに付属するGUIツール「SQL Server Enterprise Manager」があれば、その画面で確認することができる(VS.NETのサーバ・エクスプローラでも同様の画面を表示できる)*2

*2 SQL Serverを購入していなくても、「SQL Server 2000 Enterprise Edition 120日間限定評価版」を入手すれば、「SQL Server Enterprise Manager」だけをインストールして使用することができる。だが本稿執筆時点では、評価版にはSQL Server 2000 SP3を適用できないため、ダウンロード不可になっているようだ。


GUIツール「SQL Server Enterprise Manager」
SQL Serverに付属のGUIツール。データベースの作成から管理までをすべてこのツールで行うことができる。
  (1)インスタンス、データベース、テーブルは階層的に管理されている。まずインスタンスを開く。
  (2)続いて[データベース]を開くと、インスタンスにあるデータベースが列挙される。
  (3)さらにデータベースを開いて、[テーブル]を選択すると、画面右側にテーブルの一覧が表示される。
  (4)データベースに含まれているテーブルの一覧。[種類]が「ユーザー」となっているテーブル(反転させている部分)は、ユーザーが作成したものであり、アプリケーションのデータはこれらのテーブルに格納される。

 画面では、[SQL Serverグループ]に登録されている幾つかのインスタンスのうち、(1)「TAKAP4\NetSDK」というインスタンス(TAKAP4というコンピュータのNetSDKインスタンス)を開いているところだ。

 各インスタンスには、フォルダ・アイコンで表示された幾つかの項目が存在するが、このうちの(2)[データベース]を開くと、そのインスタンスにあるデータベースを見ることができる。4つのサンプル・データベース以外にも、「master」や「model」などのデータベースが自動的に作成されているのが分かるが、これらはインスタンスを管理するための情報などが入ったデータベースであり、通常は気にする必要はない。

 上の画面では、4つのサンプル・データベースのうち、pubsデータベースを開いている。各データベースにもまた、幾つかの項目が存在するが、このうち(3)[テーブル]を選択すると、このデータベースに含まれている全テーブルが、画面の(4)右半分に列挙される。

 画面では31個のテーブルが存在しているが、このうち[種類]が「ユーザー」となっている、「authors」から「titles」までの11個のテーブル(反転表示させている部分)が、サンプル・データベースのインストール時に作成された、サンプル・データを含んだテーブルだ。それ以外の、[種類]が「システム」となっているテーブルは、テーブルを管理するためのデータや、テーブルのアクセス権を管理するデータなどを格納したテーブルで、これらも通常は気にする必要はない。SQL Serverでは、こういったデータベースやテーブルを管理するためのシステム・データ自体も、社員情報や製品情報といったユーザー・データと同様に、テーブル内で管理しているのだ。

テーブルの構造

 データベースのテーブルは、「表」形式でデータを保持している。テーブルは、列(項目、カラムなどとも呼ばれる)と行(レコードとも呼ばれる)で構成されている。

 SQL ServerのGUIツールや、VS.NETのサーバ・エクスプローラでは、各テーブルを開いて、そこに格納されているレコードを列挙することができる*3。次の画面は、VS.NETのサーバ・エクスプローラで、pubsデータベース内にあるpublishersテーブルを開いているところだ。

*3 .NET Framework SDK+MSDEしかインストールしていない場合は、取りあえず、コマンド・プロンプトから後述するコマンドライン・ツールを使用してレコード一覧を出力することができる。あるいは、今回の最後でデータベース、テーブル、テーブル内のレコードを一覧できるツールを作成するので、そのコードをコンパイルして利用していただきたい。


VS.NETのサーバ・エクスプローラで表示したテーブル
publishersテーブルには、5つのカラム(列)が設定されており、セットアップ時には8つのレコード(行)が格納されている。

 このpublishersテーブルには、次の5つのカラムがあることが分かる。

  • pub_id
  • pub_name
  • city
  • state
  • country

 そしてテーブルには、8つのレコードが格納されていることが分かる。テーブル名とレコードの内容から、このテーブルは恐らく出版社に関するデータであろう。pub_idカラムが出版社に振られたID(管理番号)、pub_nameカラムが出版社の社名、それ以外の3つのカラムは出版社のロケーションを表している(と、明記されたドキュメントがあるわけではないが、そう理解しても問題ない)。

コマンドライン・ツール「osql.exe」

 ここまでは、テーブルの内容を確認するためにGUIツールを利用したが、MSDEに付属するコマンドライン・ツール「osql.exe」を使用しても同様の操作が可能だ。MSDEをインストールした環境では、コマンド・プロンプトを開いて直接「osql」と入力すれば使えるはずだ。ただし、コマンドのオプションとして、少なくとも次の3つのオプションを指定しておく必要がある。

オプション 機能
 -S 接続するデータベースのサーバ名(あるいは「サーバ名\インスタンス名」)を指定する。ただしローカル・コンピュータを指定する場合でも、なぜかサーバ名として“localhost”は指定できず、代わりに“(local)”を指定しなければならない。よって、今回のNetSDKの場合には、“(local)\NetSDK”となる
 -E Windows認証モードでSQL Serverに接続する。SQL Serverでは、接続しようとしているユーザーがデータベースにアクセスできるかどうかをチェックするのに、2つの認証モードが用意されている。その1つが「Windows認証」で、これはWindowsにログオンしているアカウントを用いてSQL Serverでの認証も行ってしまうモードだ。このモードがMSDEのデフォルトである。もう1つの認証モードは、「SQL Server認証」で、こちらはユーザー名とパスワードを指定してSQL Serverのレベルで認証を行う。このモードは、Windows以外の環境からもSQL Serverのデータベースを利用できるように用意されたモードである。MSDEでこちらのモードに切り替える方法はマイクロソフトサポート技術情報「[HOWTO] Microsoft Desktop Engine に接続する方法」に記述されている
 -d 使用するデータベースを指定する
osqlツール使用時に必要なオプション

 例えば、publishersテーブルを含んでいるpubsデータベースに接続するには、コマンド・プロンプトで次のように入力すればよい。

osql -S (local)\NetSDK -E -d pubs

 次の画面のように、「1>」と画面に表示されれば接続は成功だ。

osqlツールでデータベースに接続した画面
コマンド・プロンプトから3つのオプション(-S、-E、-d)を指定して、osqlツールを実行している。「1>」に続いて、データベースへのコマンドを入力していく。

 ここで接続に使用したオプションの内容は、プログラムからデータベースに接続する場合にも使用するので記憶しておいてほしい。

SQL文によるレコードの表示

 osqlツールでは、データベースに対して「SQL」文を発行して、データベースにアクセスする。

 SQL(Structured Query Language:構造化問い合わせ言語)は、データベース定義(データベースやテーブルの作成など)やデータベース操作(テーブルへのレコードの登録、検索など)を行うための規格化された言語で、現在ほとんどのデータベース製品でサポートされている。

 最もよく使用されるSQL文の1つは「select」文だ。select文は特定のテーブルに対して、指定した条件に合うレコードのカラムを抽出することができる。例えば、前項でも取り上げたpublishersテーブルから、米国にある出版社の出版社名とそのIDを取り出すためには、次のようなSQL文を使用する。

select pub_id, pub_name from publishers where country = 'USA'

 select文の基本的な構文は次のとおりだ。

select 取得するカラム from テーブル名 where 取得するレコードの条件

 実際に上のselect文を実行すると、次のような画面になる。select文の次に「2>」で入力している「go」は、入力したselect文をデータベースに送信するためのコマンドだ。

osqlツールでselect文を実行した画面
select文と入力し、続けて「go」を入力することにより、データベースでselect文が実行され、その結果が画面に表示される。ここでは6件のレコードがselect文の条件にマッチしている。

 先ほどのVS.NETで表示させた8つのレコードのうち、countryがUSAとなっているレコードのpub_idカラムとpub_nameカラムのデータが表示されていることが確認できるだろう。

 ここではosqlツールを使用し、まずデータベースに接続し、select文を発行してデータベースに問い合わせを行ったが、この手順はプログラムからデータベースにアクセスする場合も基本的に同じだ。

 SQLには、select文以外にも、

  • テーブルからレコードを削除するdelete文
  • レコード内のデータを更新するupdate文
  • 新しいレコードをテーブルに挿入するinsert文

などが用意されている。次回以降では、その都度これらの構文を解説しながら、プログラムからこれらのSQL文を使用していく。

 

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。