今回は、SQL Server Enterprise Manager(以下、Enterprise Manager)によるビューの作成にチャレンジします。SQL Server 2000のEnterprise Managerは、ビジュアル環境でのビュー作成が可能ですので、前回紹介したCREATE VIEW文の作成と併せて使用すると非常に効果的です。
KeppinListビューのデザイン画面
まず、前回作成したKeppinListビューの定義を確認してみましょう。
Enterprise Managerでビューの定義を確認する
(1) Enterprise Managerを起動する
(2) 左端に表示される「ツリー」で、以下を順に展開し、最後に「ビュー」を選択する
1.Microsoft SQL Servers
2. SQL Server グループ
3. サーバー名
4. データベース
5. Northwind
6. ビュー
(3) 右側に表示されるビューリストから「KeppinList」を右クリックし、「プロパティ」を選択する
(4) 表示される結果は以下のとおり
前回作成したKeppinListビューの定義が表示されます。SQLクエリアナライザで実行したCREATE VIEW文が、そのままの形で保存されているのが確認できます。では次に、ビューのデザイン画面を表示してみましょう。
ビューのデザイン画面を表示させる
(1) ビューリストから「KeppinList」を選択し、右クリックで表示されるメニューから「ビューのデザイン」を選択する
(2) 表示される結果は以下のとおり
表示されたビューのデザイン画面は、縦に4つの部分に分かれています。上から順番に見ていきましょう。
一番上の部分が「ダイアグラムペイン」で、ビューの定義で使用するテーブルが表示されます。KeppinListビューで使用しているProductsテーブルが小さなウィンドウで表示されているのが確認できますね。また、Productsテーブルウィンドウの中にリストされているのは、Productsテーブルで定義されているカラムのリストです。
デザイン画面の上から2番目が「グリッドペイン」です。グリッドペインには、結果として表示するカラムとその別名の指定、グループ化の指定、抽出条件の指定が表示されます。KeppinListビューでは、「SELECT *」とすべてのカラムを結果として表示するよう指定しましたので、グリッドの一番上の行に「*」というカラムが表示されています。また、「出力」カラムにチェックマークがついているのが確認できますね。これは、結果として表示するカラムであることの指定です。
グリッドペインの2行目と3行目は、KeppinListビューで「WHERE UnitsInStock = 0 AND Discontinued = 0」と指定した抽出条件が表示されています。UnitsInStockカラムとDiscontinuedカラムに対して、グリッドの「抽出条件」カラムに「=0」と指定されているのが確認できます。
グリッドペインには「並べ替えの種類」と「並べ替えの順序」という2つのカラムがありますが、ビューの定義には使用できません。また、グループ化の指定も可能ですが、KeppinListビューにはGROUP BYを指定しませんでしたので、後ほど紹介しましょう。
さて、デザイン画面の上から3番目が「SQLペイン」です。SQLペインには、ダイアグラムペインとグリッドペインで指定したビューの定義内容に従ったSELECT文が表示されます。また、SQLペインに直接SQL文を入力することで、ダイアグラムペインやグリッドペインで指定できない細かな条件を指定したビューの作成も可能です。
デザイン画面の一番下が「結果ペイン」です。ビューのデザイン画面の初期表示状態では何も表示されていませんが、アイコンバーの「実行」ボタンをクリックすることで、SQLペインに表示されているSELECT文を実行した結果を表示させることが可能です。この機能により、ビューを作成する前に結果リストのデータ確認ができます。非常に便利な機能ですね。
KeppinOrderProductsビューのデザイン画面
次に、KeppinOrderProductsビューのデザイン画面も見てみましょう。
KeppinOrderProductsビューは、Order DetailsテーブルとKeppinListビューを使用して定義されているので、ダイアグラムペインにこれら2つのテーブルが表示されているのが確認できます(ここでは、KeppinListビューもテーブルと標記します)。また、これら2つのテーブルが、太いパイプのような線で結ばれています。このパイプは、結合(JOIN)を意味し、結合線と呼びます。KeppinOrderProductsビューは、Order DetailsテーブルとKeppinListビューをProductIDをキーにして結合したため、それぞれのProductIDカラムが結合線で結ばれているのが分かりますね。
パイプの真中にあるダイアモンド記号(◇)は、結合のタイプを表します。◇は内部結合を表しており、外部結合の場合は、記号が変化します。◇を右クリックし、表示されたメニューから「プロパティ」を選択し、結合線のプロパティを表示させてみましょう。
Order Detailsテーブル(別名ordd)のProductIDカラムと、KeppinListテーブル(別名Kep)のProductIDカラムが等結合しているのが分かりますね。ダイアログボックス下半分の「行の範囲」の部分は、外部結合の指定です。「orddのすべての行」をチェックすると、左外部結合となります。実際にチェックをしてみると、左下に表示されている記号が変化することが確認できます。
さて、KeppinOrderProductsビューのデザイン画面に戻ります。KeppinOrderProductsビューは、ProductIDとProductNameでグループ化し、結果としてProductID、ProductName、そしてQuantity(個数)の合計を表示させる指定をしました。この様子が、グリッドペインに表示されています。この3つのカラムが行として表示されており、3カラムともグリッドの「表示」カラムにチェックが入っています。また、Quantityカラムは、別名としてQuantitySumが指定されています。そして、グリッドの「グループ化」カラムには、ProductIDとProductNameに対して「グループ化」の指定、Quantityに対して「合計」の指定がされています。また、ダイアグラムペインに表示されているそれぞれのテーブルのカラムリストには、グループ化と合計を表す記号がそれぞれ表示されているのが確認できますね。
次に、SQLペインに表示されているSQL文を見てみましょう。前回、KeppinOrderProductsビューを作成したときのSELECT文とは違っているのが分かりますか?前回は、結合をWHERE句で「WHERE ordd.ProductID = kep.ProductID」と指定しましたが、SQL92仕様であるFROM句中でのINNER JOIN指定へ、自動的に変更されています。
Enterprise Managerでの新規ビューの作成
では、ビューのデザイン画面を使用して、新規のビューを作成してみましょう。ここでは、「顧客及び製品ごとの1997年以前の製品オーダー数」を表示するビューを作成します。手順は、以下のとおりです。
Enterprise Managerで新規ビューを作成してみる
(1) 左端に表示される「ツリー」で、「ビュー」を右クリックし、「新規ビュー」を選択する
(2) 何も定義されていないビューのデザイン画面が表示されるので、まず、アイコンバーから「テーブルの追加」をクリックする
(3) 表示された「テーブルの追加」画面で、以下4つのテーブルを順にダブルクリックし追加する。終わったら「閉じる」ボタンをクリックし、テーブルの追加画面を閉じる
1.Customers
2. Orders
3. Order Details
4. Products
(4) ダイアグラムペインに、追加したテーブルが表示され、結合線が自動的に表示されているのが確認できる
(5) ダイアグラムペインに表示されたテーブルのリストにおいて、表示するカラムを順に選択する
1.CustomersテーブルのCustomerIDカラム
2. CustomersテーブルのCompanyNameカラム
3. ProductsテーブルのProductIDカラム
4. ProductsテーブルのProductNameカラム
5. Order DetailsテーブルのQuantityカラム
6. OrdersテーブルのRequiredDateカラム
(6) グリッドペインに(5)で選択したカラムが表示されるのが確認できる
(7) RequiredDateの「出力」チェックマークをクリックし出力対象から外し、抽出条件に「< '1997/1/1'」と指定する
(8) ダイアグラムペインで右クリックして、表示されたメニューから「グループ化」を選択する
(9) グリッドペインに「グループ化」カラムが追加され、すべてのカラムに「グループ化」が指定されることが確認できる
(10) グリッドペインで「Quantity」列の「グループ化」指定を「合計」に変更し、別名を「QtyTotal」と指定する
(11) アイコンバーから「実行」を選択し、結果ペインで実行結果を確認する
(12) アイコンバーから「保存」を選択し、ビューに「ProductQtyByCustomer」と名前を付けて保存する
(13) ビューのデザイン画面を閉じる
(14) 作成したProductQtyByCustomerビューを右クリックし、表示されたメニューから「ビューを開く」→「全行を返す」を選択する
(15) 実行結果は、以下のとおり
ビジュアル環境でのビューの作成は、CREATE文を作成してのビュー作成よりも手順が多くなりますが、テーブル名やカラム名を覚えておく必要がないため、非常に便利な機能といえます。実際に作成する場合は、CREATE文とビジュアル環境をうまく使い分けて利用すると、さらに効率が上がると思います。例えば、ある程度の“ひな型”をビジュアル環境で作成した後、細かい指定はSQL文を直接編集するなどの方法です。
今回のまとめ
今回は、Enterprise Managerを使用したビューの作成について解説しました。次回は権限の設定について紹介する予定です
- SQL Serverで「デッドロック」を回避する
- トランザクションの一貫性を保証するロック
- トランザクションを用いて注文登録をする
- トランザクションでデータの不整合を防ぐ
- テーブルで複数の処理を実行させるトリガー
- ユーザー定義関数を作成するストアドファンクション
- ストアドプロシージャによる繰り返し処理
- 条件分岐のあるストアドプロシージャ
- ストアドプロシージャの作成
- システム・ストアドプロシージャを用いたロールの詳細設定
- ロールを利用したグループ単位での権限設定
- SQL Serverのオブジェクトに権限を設定する
- Enterprise Managerによるビューの作成
- 作成したSELECT文をDBに登録する「ビュー」
- データの更新と主キーの重要性
- テーブル中のデータ識別に必要な主キーを定義する
- データの登録を行うINSERT文
- CREATE文をさらに使いこなそう
- CREATE文でテーブルを作成する
- SELECT文を統合する「UNION」
- サブクエリーの応用「相関サブクエリー」
- SELECT文の結果を抽出条件に使う
- テーブル結合のバリエーションを増やす
- テーブル結合の仕組みを理解する
- 異なるテーブル同士を結合する「JOIN」句
- 集計を行う「GROUP BY」句
- SELECT文で並べ替えを行うには?
- SQLの基礎 「SELECT」文を覚えよう
Copyright © ITmedia, Inc. All Rights Reserved.