SQL Serverデータディクショナリとは何ですか?

データディクショナリとは何ですか?

SQL Serverでは、データディクショナリは、データベースの定義に関する情報を格納するために使用されるデータベーステーブルのセットです。 ディクショナリには、テーブル、インデックス、列、データ型、ビューなどのデータベースオブジェクトに関する情報が含まれています。

データディクショナリは、SQL Serverでクエリを実行するために使用され、データベース内でオブジェクトが追加、削除、または変更されるたびに自動的に更新

この記事のすべての例は、Microsoft SQL Server Management StudioおよびAdventureworks2012データベースに基づいています。 あなたは、SQL Serverの使用を開始する私のガイドを使用して、これらの無料のツールを使用して開始することができます。

SQL Serverでのデータディクショナリの使用方法

SQL Serverでは、データベースディクショナリを使用してSQLステートメントを検証します。 SQL文を実行すると、DBMS(データベース管理システム)がその文を解析し、参照しているテーブルとフィールドが有効かどうかを判断します。 これをすばやく行うには、データディクショナリを参照します。

SQL Serverでは、ステートメントの有効性のテストに加えて、データディクショナリを使用してクエリプランの生成を支援し、データベースの構造を定義する情

データ辞書は、SQL Serverがデータにアクセスするために使用するためのガイドブックになります。 簡単に言えば、データディクショナリがなければ、SQL ServerはSQL言語を認識して理解していますが、データベースのテーブルと列については認識しません。

データディクショナリのその他の用途

データディクショナリにはデータベースの定義が含まれているため、データベースに関する情報を得るために使 本当にクールなことは、データディクショナリがSQLテーブルとビューで構成されていることです。 これは、クエリを介してDBに関する情報を取得できることを意味します!

データディクショナリは、データベースの構造を理解するために設計者や開発者によって使用されます。 辞書は最新の参照文書と考えることができます。

SQL Server Management Studioなどの設計ツールは、データディクショナリを使用してオブジェクトエクスプローラーを介してデータベースに関する情報を表示します。

SSMSオブジェクトエクスプローラー
SQL Server Management Studioオブジェクトエクスプローラー

上記のテーブルは魔法のように知られていない、むしろ、オブジェクトエクスプローラーは、すべてのユーザーテーブルを取得するためにデータディクショナリにクエリを発行しました。

データディクショナリは、一連のシステムテーブルに格納されます。 これらのテーブルを直接照会することはできますが、Microsoftはデータディクショナリを構成するシステムテーブルを変更する権利を留保します。 このため、テーブルに直接アクセスするのではなく、INFORMATION_SCHEMAビューを照会することをお勧めします。

データディクショナリを自分で照会することができるので、そうでなければオブジェクトエクスプローラを介して多くの狩りやつつきを必要とす たとえば、BusinessEntityID列を使用して、すべてのテーブルとビューを簡単に見つけるにはどうすればよいですか? データディクショナリがない場合は、オブジェクトエクスプローラを使用して、すべてのテーブルとビューを開き、列の定義を確認する必要があります。 ただし、データディクショナリを使用すると、単純なクエリを使用してこれを行うことができます。

INFORMATION_SCHEMAビュー

SQL Serverに含まれるINFORMATION_SCHEMAビューは、SQL-92ISO標準に準拠しています。 これは、ISO標準に準拠する他のデータベースベンダーが同じビューセットを提供することを意味します。

ここでは、より一般的に使用されるビューとその説明のいくつかがあります:

  • COLUMNS–現在のユーザーが現在のデータベースで使用するアクセス権を持つ列ごとに1つの行を返します。 このビューは、使用する列が定義されているデータ型とテーブルを決定するために使用できます。
  • TABLES–ユーザーが現在のデータベース内で使用するアクセス権を持っているテーブルごとに1つの行を返します。 テーブルとビューの両方がテーブルビューを使用して返されることに注意してください。
  • VIEW_TABLE_USAGE–現在のデータベース内のビューで使用されているテーブルごとに1つの行を返します。
  • VIEWS–現在のデータベースから現在のユーザーのアクセス許可を使用してアクセスできるビューの行を1つ返します。

Information_SCHEMAビューを使用する例

指定された列を含むすべてのテーブルを一覧表示する

INFORMATION_SCHEMAを使用してこれを行うことができます。列ビュー。 たとえば、次のリストには、すべてのテーブルとビューにBusinessEntityID

SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'

列が含まれています。 データベース内のフィールドのすべての出現を見つけるために、すべての定義を手作業で検索する必要があると想像できますか?

データベース内のすべてのテーブルを一覧表示

INFORMATION_SCHEMAを使用します。これを行うには、テーブルビュー。

SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME

このクエリは、ベーステーブルとビューの両方を返します。

各スキーマ内のテーブルの数を一覧表示する

この例では、各スキーマとその中で定義されているテーブルとビューの数が一覧表示されます。

SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA

SQL Serverカタログビュー

カタログビューは、データディクショナリを表示する別の方法です。 私はオブジェクトカタログビューがより多くの情報を提供していると感じており、INFORMATION_SCHEMAビューでこれらのビューを使用する傾向があります。オブジェクト–データベース内で定義された外部キーや主キー制約など、各オブジェクトの行が含まれています。

最も有用なビューのいくつかは次のとおり

  • columns–ビューやテーブルなどのオブジェクトの各列の行が含まれています。
  • tables–各テーブルオブジェクトの行を返す
  • カタログビューを使用する例

    次の例では、MICROSOFT SQL Serverカタログビューを使用して、INFORMATION_SCHEMAを使用して上記と同じ情報

    指定された列を含むすべてのテーブルを一覧表示する

    特定の列を使用してテーブルの名前を取得するために、両方のsys。テーブルとsys。列ビューは一緒に使用する必要があります。 これらは、表やビューなどの共通データベースオブジェクトを識別するために使用されるobject_idを介して結合されます。

    SELECT t.name, t.type_descFROM AdventureWorks2012_Data.sys.columns AS cINNER JOIN sys.tables AS t ON c.object_id = t.object_idWHERE c.name = 'BusinessEntityID'

    データベース内のすべてのテーブルを一覧表示

    sys。テーブルビューは、データベースで定義されているすべてのテーブルの名前を取得するために使用できます。 このビューは、ベーステーブルとビューの両方を返します。

    SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name

    各スキーマ内のテーブルの数を一覧表示

    sys。テーブルビューにはスキーマ名が含まれていないため、組み込み関数SCHEMA_NAMEを使用してスキーマ名を取得します。例からわかるように、INFORMATION_SCHEMAを使用するよりも少し技術的です。 しかし、私は経験から、カタログビューにはもっと多くの情報が含まれていると言います…データベースの構造について特定の質問がある場合、これらはヒット

    Related Posts

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です