エンタープライズ ジオデータベースにおける SQL 使用の概要
SQL を使用して既存のデータベースとそのプロパティにアクセスすることができ、エンタープライズ ジオデータベースのバージョン対応登録されたデータセットとバージョン非対応データセットの両方を編集できます。
また、SQL を使用してテーブルを作成し、そのテーブルをジオデータベースに登録することもできます。これらのテーブルには、非空間属性および SQL 空間タイプまたはラスタ タイプを含めることができます。
SQL を使用してジオデータベースにアクセスするときは、データベース管理システム(DBMS)レベルでジオデータベースにアクセスしています。つまり、SQL を使用しているときは、ArcGIS の振舞いや機能は実行されません。また、データベースに直接接続するため、コンピュータ上に、DBMS クライアントをインストールして設定する必要もあります。
SQL を使用している場合、データベース内のテーブルに直接アクセスします。そのため、ジオデータベース内のデータに対して SQL コマンドを実行する場合は、データやデータに関する情報を参照することはかまいませんが、ジオデータベースの振舞いに関係するデータを変更してはいけません。詳細については、「SQL を使用して編集可能なデータの種類」をご参照ください。
SQL を使用したデータセットのプロパティへのアクセス
SQL の SELECT ステートメントを使用して、ArcSDE ジオデータベース内の既存のデータセットのプロパティを取得することができます。
データセットのプロパティは、ジオデータベース システム テーブルに格納されています。この情報を得るには、システム テーブルの特定の列にクエリを実行します。場合によっては、列に XML ドキュメントが格納されていて、クエリ時に XPath 式を使用してプロパティ情報を取得することもあります。これは、IBM DB2、PostgreSQL、および Microsoft SQL Server データベースに格納されたジオデータベースの場合です。Oracle に格納されたジオデータベースでは、システム ビューにアクセスして、CLOB 列のプレーン テキストを読むことができます。
SQL を使用したジオデータベース データへのアクセス
SQL の SELECT ステートメントを使用して、ジオデータベース内の既存のデータセットからデータを取得することができます。エンタープライズ ジオデータベース内のバージョン対応登録されたデータセットをクエリする場合は、バージョン対応ビューを使用する必要があります。
バージョン対応ビューには、データベース ビュー、ストアド プロシージャ、トリガ、および SQL を使用してジオデータベース テーブルまたはフィーチャクラス内のバージョン対応登録されたデータを読んだり編集したりできる関数が組み込まれています。バージョン対応ビューでバージョン対応登録されたデータセットにアクセスすると、ビジネス テーブル内のすべてのレコードが選択され差分テーブルからのレコードとマージされて、指定したバージョンにおいてビジネス テーブルに行われたすべての変更を含むビューが返されます。
SQL を使用して空間データにアクセスして分析を行うには、その空間タイプと共にインストールされた空間 SQL 関数を使用します。各空間タイプは、独自の関数セットを持ちます。Esri は、Oracle および PostgreSQL において Esri の ST_Geometry タイプの関数を定義しています。また、各 DBMS ベンダはそれぞれの SQL タイプの関数を定義しています。これらの関数は、空間リレーションシップを評価し、空間処理を実行し、空間プロパティの取得と設定を行うことができます。この機能の概要については、「空間リレーションシップ」、「空間処理」、「ジオメトリのプロパティ」をご参照ください。
SQL を使用したジオデータベース データの編集
DBMS のネイティブ SQL を使用して、ジオデータベース内の単純な非空間属性データを編集できます。また、空間タイプと共にインストールされた空間 SQL 関数を使用して、単純な空間データを SQL によって変更することもできます。
SQL を使用して、エンタープライズ ジオデータベースのバージョン対応登録されたデータセットとバージョン非対応データセットの両方を編集できます。ただし、前述したように、ジオデータベースの機能に関係するデータセットを編集してはいけません。
バージョン非対応データを編集する場合、SQL を使用して object ID、GUID、およびグローバル ID のフィールドに一意の値を挿入する必要があります。
バージョン対応登録されたデータを編集するには、バージョン対応ビューを使用する必要があります。バージョン対応ビューで使用されるトリガは、バージョン対応ビューで編集するときに差分テーブルを更新します。これによって、編集中に差分テーブルにデータが挿入されることが保証されます。また、バージョン対応ビューでは、object ID フィールドに一意の値が自動的に挿入されます。
ArcGIS で使用するテーブルの SQL による作成
DBMS のネイティブ SQL を使用して、テーブルを作成し値を設定できます。SQL を使用して作成した空間テーブルと非空間テーブルのどちらも ArcMap で使用できます。また、クエリ レイヤを作成することで、ArcMap で空間テーブルをレンダリングできます。空間テーブルと非空間テーブルの両方の属性を ArcGIS で直接表示することもできます。クエリ レイヤもテーブルへの直接アクセスも、別のシステムと連携しているテーブルがあり、そのテーブルに ArcGIS 経由でアクセスしたり、そのテーブルをジオデータベース内のテーブルに結合したりする場合に便利です。
テーブルでジオデータベースの機能を使用する場合は、テーブルをジオデータベースに登録します。ただし、テーブルでジオデータベースの機能を使用している場合、SQL を使用してテーブルを編集することはできません。
詳細については、「ワークフロー: SQL によるテーブルの作成およびジオデータベースへの登録」をご参照ください。