トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Oracleキーワードから学ぶ、逆引き! SQL Server入門
文=株式会社CSK 教育サービス事業部
第1回
基本用語編 スペシャルキーワード
データベースオブジェクト
データベースに存在するオブジェクトは、RDBMSを提供するベンダにより異なっています。表、ビューおよび索引など基本的なオブジェクトはもちろんのこと、操作性やパフォーマンスを向上させるための独自のオブジェクトを提供しています。

データベースオブジェクトの比較


まず初めに Oracle ServerとSQL Serverの代表的なオブジェクトを比較してみます。

■ Oracle ServerとSQL Serverの代表的なデータベースオブジェクト
※○:存在する ×:存在しない
オブジェクト 説明 Oracle Server SQL Server
基本となるオブジェクトです
データを格納します。SQL Serverでは「テーブル」と呼びます。
ビュー SELECTステートメントに名前を付けて保存したものです。
索引 検索スピードを向上させるためのオブジェクトです。SQL Serverでは「インデックス」と呼ばれ、非クラスタ化インデックスとクラスタ化インデックスの2種類あります。
ストアドファンクション プログラムによる計算結果を戻すプログラムです。SQL Serverでは、「ユーザ定義関数」と呼びます。
パッケージ プロシージャ、ファンクション、変数定義などをパッケージ化したものです。 ×
トリガー 表に対してDMLを実行したときに動作するプログラムです。
シノニム オブジェクトに対する別名(ニックネーム)を定義します。 ×
順序 一意な番号を発行するオブジェクトです。 ×
ルール 制約に名前を付けて保存したものです。 ×
デフォルト 特定のデフォルト値に名前を付けて保存したものです。 ×


Oracle Serverでは「表」、SQL Serverでは「テーブル」というように、それぞれ日本語と英語の呼び方で違いがあるところが不思議ですね。

Oracle Serverには存在するがSQL Serverに存在しないもの、またはSQL Serverには存在するがOracle Serverに存在しないものもいくつかあります。これは単に機能の優劣の問題ではありません。基本的な考え方の違いや構造の違いにより、このようなオブジェクトの違いが発生しています。上の表に挙げたオブジェクトの中で、Oracle Serverには存在するがSQL Serverに存在しない「シノニム」と「順序」について、SQL Serverではどのように対応しているかを以下で解説します。



シノニム


シノニムは、他のユーザが所有するオブジェクに対してアクセスするとき、SQLの構文をシンプルにすることができるというメリットがあります。
まず、Oracle Serverでシノニムをどのように利用しているかを見てみましょう。

HRユーザが所有するEMPLOYEESテーブルへ別のユーザがアクセスする場合、次のようなクエリになります。

SELECT * FROM hr.employees;

ここでシノニムEMPを作成し、クエリを実行してみます。

・シノニムの作成
CREATE SYNONYM emp FOR hr.employees;

・クエリの実行
SELECT * FROM emp;

SQL Serverで同様のことを行う場合、一般的にはビューを使用します。その他ストアドファンクションを利用する方法もあります。

●ビューで対応する場合

・ビューの作成
CREATE VIEW emp
AS
SELECT * FROM hr.employees;

・クエリの実行
SELECT * FROM emp;

●ファンクションを利用する場合

・ファンクションの作成
CREATE FUNCTION emp()
RETURNS table
AS
RETURN(SELECT * FROM hr.employees);

・クエリの実行
SELECT * FROM emp();



順序


順序は主キーの列にデータをINSERTする場合に利用できるオブジェクトです。順序を利用することで、高いパフォーマンスで一意な番号を発行できます。SQL Serverには順序オブジェクトは存在しませんが、テーブルを定義するときに列のIDENTITYプロパティを使い、順序と同じ機能を実装できます。IDENTITYプロパティは次の3つのプロパティで構成されています。

■ SQL Server のIDENTITYプロパティ
プロパティ名 説明
IDENTITY 一意な番号を発行するためには“はい”を選択します。
IDENTITYシード 開始番号を指定します。
IDENTITYインクリメント 増分値を指定します。


■ SQL Server のIDENTITYプロパティ画面表示例
(図)SQL Server のIDENTITYプロパティ画面表示例
※上記の例では、1000番から始まり1ずつカウントアップする設定です。



・ 第1回 基本用語編:データベースオブジェクト
・ 第2回 ユーティリティ編:SQL*Plus
・ 第3回 アーキテクチャ編(1):インスタンスとデータベース
・ 第4回 アーキテクチャ編(2):セグメント/エクステント/データブロック
・ 第5回 アーキテクチャ編(3):索引
・ 第6回 プログラミング編:カーソル
・ 第7回 トランザクション/ロック編:読み取り一貫性
・ 第8回 バックアップとリカバリ編:スタンバイ・データベース
・ 第9回 ユーザー管理編:ロール
・ 第10回 パフォーマンスチューニング編:EXPLAIN PLAN(実行プランの表示)


著者プロフィール
株式会社CSK 教育サービス事業部 
http://www.cskedu.com/
OracleとSQL Server、それぞれのトレーニングコースを担当するトレーナー3名体制で執筆しています。メンバーは、金子真由美、浦山裕恭、浅見淳子。
今回の執筆担当
浦山裕恭(URAYAMA, Hiroyasu) 
会計システムの導入コンサルティングを経て、1997年からOracleデータベースのインストラクターを担当しています。現在では、Oracleデータベース以外にOracle E-Business Suite関連やSQL Server関連のコースも担当しています。ちなみに、九州男児ですがお酒は弱いです。

← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.