sql >> データベース >  >> RDS >> Sqlserver

T-SQLを使用してSQLServerデータベースの外部キーを返す11の方法

    この記事では、SQLServerで外部キー情報を取得するための11の異なるアプローチを紹介します。状況によっては、これらのいくつかは他のものよりも便利です。

    これらのメソッドの一部は、さらに情報を返すように変更できます。たとえば、さまざまなシステムビューで結合を実行して、より多くのデータを返すことができます。

    例1-sp_fkeysシステムストアドプロシージャ

    sp_fkeys システムストアドプロシージャは、現在の環境の論理外部キー情報を返します。無効にされた外部キーを含む外部キーの関係を示します。

    このストアドプロシージャは、特定のテーブルの外部キー情報が必要な場合に最適です。主キーまたは外部キーのテーブル名をプロシージャに渡すだけで、関連する情報が返されます。

    例:

    EXEC sp_fkeys @fktable_name = Albums;
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    PKTABLE_QUALIFIER | Music
    PKTABLE_OWNER     | dbo
    PKTABLE_NAME      | Artists
    PKCOLUMN_NAME     | ArtistId
    FKTABLE_QUALIFIER | Music
    FKTABLE_OWNER     | dbo
    FKTABLE_NAME      | Albums
    FKCOLUMN_NAME     | ArtistId
    KEY_SEQ           | 1
    UPDATE_RULE       | 1
    DELETE_RULE       | 1
    FK_NAME           | FK_Albums_Artists
    PK_NAME           | PK__Artists__25706B50FCD918B1
    DEFERRABILITY     | 7
    -[ RECORD 2 ]-------------------------
    PKTABLE_QUALIFIER | Music
    PKTABLE_OWNER     | dbo
    PKTABLE_NAME      | Genres
    PKCOLUMN_NAME     | GenreId
    FKTABLE_QUALIFIER | Music
    FKTABLE_OWNER     | dbo
    FKTABLE_NAME      | Albums
    FKCOLUMN_NAME     | GenreId
    KEY_SEQ           | 1
    UPDATE_RULE       | 1
    DELETE_RULE       | 1
    FK_NAME           | FK_Albums_Genres
    PK_NAME           | PK__Genres__0385057E88BB96F8
    DEFERRABILITY     | 7
    

    このビューを使用する別の方法は、主キーテーブル名を指定することです:

    EXEC sp_fkeys @pktable_name = Artists;
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    PKTABLE_QUALIFIER | Music
    PKTABLE_OWNER     | dbo
    PKTABLE_NAME      | Artists
    PKCOLUMN_NAME     | ArtistId
    FKTABLE_QUALIFIER | Music
    FKTABLE_OWNER     | dbo
    FKTABLE_NAME      | Albums
    FKCOLUMN_NAME     | ArtistId
    KEY_SEQ           | 1
    UPDATE_RULE       | 1
    DELETE_RULE       | 1
    FK_NAME           | FK_Albums_Artists
    PK_NAME           | PK__Artists__25706B50FCD918B1
    DEFERRABILITY     | 7
    

    テーブルの所有者やテーブルの修飾子など、他の引数を使用することもできます。

    EXEC sp_fkeys 
      @pktable_name = Artists,
      @pktable_owner = dbo,
      @pktable_qualifier = Music,
      @fktable_name = Albums,
      @fktable_owner = dbo,
      @fktable_qualifier = Music;
    

    例2–REFERENTIAL_CONSTRAINTSシステムビュー

    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS システムビューは、FOREIGN KEYごとに1行を返します 現在のデータベースの制約。

    これは、データベース内の外部キーのリストとそれに関連する一意の制約をすばやく返すのに理想的です。前の例のように、テーブルは1つだけに限定されません。

    次に例を示します:

    SELECT 
        CONSTRAINT_NAME,
        UNIQUE_CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
    

    結果:

    +-------------------+-------------------------------+
    | CONSTRAINT_NAME   | UNIQUE_CONSTRAINT_NAME        |
    |-------------------+-------------------------------|
    | FK_Albums_Artists | PK__Artists__25706B50FCD918B1 |
    | FK_Albums_Genres  | PK__Genres__0385057E88BB96F8  |
    +-------------------+-------------------------------+
    

    したがって、この場合、現在のデータベース内の各外部キーと、それに関連付けられた主キーを確認できます。

    実は、このデータベースには2つの外部キーしかなく、前の例で見たものと同じです。

    FK_Albums_Artists のすべてのデータを返す例を次に示します。 外部キー:

    SELECT *
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
    WHERE CONSTRAINT_NAME = 'FK_Albums_Artists';
    

    結果:

    CONSTRAINT_CATALOG        | Music
    CONSTRAINT_SCHEMA         | dbo
    CONSTRAINT_NAME           | FK_Albums_Artists
    UNIQUE_CONSTRAINT_CATALOG | Music
    UNIQUE_CONSTRAINT_SCHEMA  | dbo
    UNIQUE_CONSTRAINT_NAME    | PK__Artists__25706B50FCD918B1
    MATCH_OPTION              | SIMPLE
    UPDATE_RULE               | NO ACTION
    DELETE_RULE               | NO ACTION
    

    このメソッドは、前のメソッドで取得した主キーテーブルと外部キーテーブルの詳細を提供しないことに気付くでしょう。そのため、その情報が必要な場合は、他のビューといくつかの結合を行う必要があります(またはいずれかのメソッドを使用します)。以下)。

    例3–KEY_COLUMN_USAGEシステムビュー

    INFORMATION_SCHEMA.KEY_COLUMN_USAGE システムビューは、現在のデータベースでキーとして制約されている列ごとに1行を返します。

    SELECT 
      TABLE_NAME, 
      COLUMN_NAME,
      CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
    

    結果:

    +--------------+---------------+-------------------------------+
    | TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
    |--------------+---------------+-------------------------------|
    | Albums       | ArtistId      | FK_Albums_Artists             |
    | Albums       | GenreId       | FK_Albums_Genres              |
    | Albums       | AlbumId       | PK__Albums__97B4BE379FC780BD  |
    | Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
    | Genres       | GenreId       | PK__Genres__0385057E88BB96F8  |
    +--------------+---------------+-------------------------------+
    

    これにより、主キーを含むすべての制約が返されることがわかります。

    WHEREを追加することもできます 結果を特定のテーブルに絞り込む句。

    SELECT 
      TABLE_NAME,
      COLUMN_NAME,
      CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME = 'Albums';
    

    結果:

    +--------------+---------------+------------------------------+
    | TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME              |
    |--------------+---------------+------------------------------|
    | Albums       | ArtistId      | FK_Albums_Artists            |
    | Albums       | GenreId       | FK_Albums_Genres             |
    | Albums       | AlbumId       | PK__Albums__97B4BE379FC780BD |
    +--------------+---------------+------------------------------+
    

    これらの例では、関心のあるビューの列だけに結果を絞り込みましたが、アスタリスク(*)を使用することもできます。 )すべての列を返すワイルドカード。

    SELECT *
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME = 'Albums';
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Artists
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | ArtistId
    ORDINAL_POSITION   | 1
    -[ RECORD 2 ]-------------------------
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Genres
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | GenreId
    ORDINAL_POSITION   | 1
    -[ RECORD 3 ]-------------------------
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | PK__Albums__97B4BE379FC780BD
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | AlbumId
    ORDINAL_POSITION   | 1
    

    例4–CONSTRAINT_COLUMN_USAGEシステムビュー

    これは前の例と似ています。 INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE システムビューは、列に制約が定義されている現在のデータベースの列ごとに1行を返します。

    INFORMATION_SCHEMA.KEY_COLUMN_USAGEと同様 このビューで返される主キーも取得します。ただし、INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE キーの制約だけに限定されません。

    SELECT 
      TABLE_NAME, 
      COLUMN_NAME,
      CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;
    

    結果:

    +--------------+---------------+-------------------------------+
    | TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
    |--------------+---------------+-------------------------------|
    | Albums       | ArtistId      | FK_Albums_Artists             |
    | Albums       | GenreId       | FK_Albums_Genres              |
    | Albums       | AlbumId       | PK__Albums__97B4BE379FC780BD  |
    | Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
    | Genres       | GenreId       | PK__Genres__0385057E88BB96F8  |
    +--------------+---------------+-------------------------------+
    

    WHEREを使用できます 特定のテーブルまたは列のみを返す句:

    SELECT 
      TABLE_NAME, 
      COLUMN_NAME,
      CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
    WHERE COLUMN_NAME = 'ArtistId';
    

    結果:

    +--------------+---------------+-------------------------------+
    | TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
    |--------------+---------------+-------------------------------|
    | Albums       | ArtistId      | FK_Albums_Artists             |
    | Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
    +--------------+---------------+-------------------------------+
    

    この場合、列名を指定したので、その名前の列に対するすべての制約が返されました。実は、データベースは2つの異なるテーブルで同じ列名を使用しています。 1つには外部キー制約があり、もう1つには主キーがあります。したがって、両方の行が返されます。

    ここでも、アスタリスク(*)を使用できます )すべての列を返すワイルドカード。

    特定のテーブルのすべてのデータを返す例を次に示します。

    SELECT *
    FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
    WHERE TABLE_NAME = 'Albums';
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | ArtistId
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Artists
    -[ RECORD 2 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | GenreId
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Genres
    -[ RECORD 3 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    COLUMN_NAME        | AlbumId
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | PK__Albums__97B4BE379FC780BD
    

    例5–CONSTRAINT_TABLE_USAGEシステムビュー

    INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE システムビューは、テーブルに制約が定義されている現在のデータベースのテーブルごとに1行を返します。

    SELECT 
      TABLE_NAME,
      CONSTRAINT_NAME 
    FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;
    

    結果:

    +--------------+-------------------------------+
    | TABLE_NAME   | CONSTRAINT_NAME               |
    |--------------+-------------------------------|
    | Artists      | PK__Artists__25706B50FCD918B1 |
    | Genres       | PK__Genres__0385057E88BB96F8  |
    | Albums       | PK__Albums__97B4BE379FC780BD  |
    | Albums       | FK_Albums_Artists             |
    | Albums       | FK_Albums_Genres              |
    +--------------+-------------------------------+
    

    このビューは、制約が使用されている列名を返さないため、要件によってはあまり役に立たない場合があります。

    これは、 Albums に対してこのビューによって返されるすべてのデータを示す例です。 テーブル:

    SELECT * 
    FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
    WHERE TABLE_NAME = 'Albums';
    

    結果:

    -[ RECORD 1 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | PK__Albums__97B4BE379FC780BD
    -[ RECORD 2 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Artists
    -[ RECORD 3 ]-------------------------
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Genres
    

    例6–TABLE_CONSTRAINTSシステムビュー

    INFORMATION_SCHEMA.TABLE_CONSTRAINTS システムビューは、現在のデータベースのテーブル制約ごとに1行を返します。

    SELECT 
      TABLE_NAME,
      CONSTRAINT_NAME,
      CONSTRAINT_TYPE
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
    

    結果:

    +--------------+-------------------------------+-------------------+
    | TABLE_NAME   | CONSTRAINT_NAME               | CONSTRAINT_TYPE   |
    |--------------+-------------------------------+-------------------|
    | Artists      | PK__Artists__25706B50FCD918B1 | PRIMARY KEY       |
    | Genres       | PK__Genres__0385057E88BB96F8  | PRIMARY KEY       |
    | Albums       | PK__Albums__97B4BE379FC780BD  | PRIMARY KEY       |
    | Albums       | FK_Albums_Artists             | FOREIGN KEY       |
    | Albums       | FK_Albums_Genres              | FOREIGN KEY       |
    +--------------+-------------------------------+-------------------+
    

    このビューは列名を提供しませんが、制約タイプを提供します。したがって、結果を外部キーのみに絞り込むことができます。

    SELECT 
      TABLE_NAME,
      CONSTRAINT_NAME,
      CONSTRAINT_TYPE
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
    

    結果:

    +--------------+-------------------+-------------------+
    | TABLE_NAME   | CONSTRAINT_NAME   | CONSTRAINT_TYPE   |
    |--------------+-------------------+-------------------|
    | Albums       | FK_Albums_Artists | FOREIGN KEY       |
    | Albums       | FK_Albums_Genres  | FOREIGN KEY       |
    +--------------+-------------------+-------------------+
    

    ワイルドカード(*)を使用する例を次に示します。 ) Albums に適用された外部キー制約のすべてのデータを返す文字 テーブル:

    SELECT *
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE TABLE_NAME = 'Albums'
    AND CONSTRAINT_TYPE = 'FOREIGN KEY';
    

    結果:

    -[ RECORD 1 ]-------------------------
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Artists
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    CONSTRAINT_TYPE    | FOREIGN KEY
    IS_DEFERRABLE      | NO
    INITIALLY_DEFERRED | NO
    -[ RECORD 2 ]-------------------------
    CONSTRAINT_CATALOG | Music
    CONSTRAINT_SCHEMA  | dbo
    CONSTRAINT_NAME    | FK_Albums_Genres
    TABLE_CATALOG      | Music
    TABLE_SCHEMA       | dbo
    TABLE_NAME         | Albums
    CONSTRAINT_TYPE    | FOREIGN KEY
    IS_DEFERRABLE      | NO
    INITIALLY_DEFERRED | NO
    

    例7–sys.foreign_keysシステムビュー

    sys.foreign_keys システムビューには、FOREIGN KEYであるオブジェクトごとの行が含まれています 制約、sys.object.type = F (「F」は「外部キー」を表します。)

    例:

    SELECT 
      name AS 'Constraint',
      OBJECT_NAME(parent_object_id) AS 'Table',
      OBJECT_NAME(referenced_object_id) AS 'Referenced Column'
    FROM sys.foreign_keys;
    

    結果:

    +-------------------+---------+---------------------+
    | Constraint        | Table   | Referenced Column   |
    |-------------------+---------+---------------------|
    | FK_Albums_Artists | Albums  | Artists             |
    | FK_Albums_Genres  | Albums  | Genres              |
    +-------------------+---------+---------------------+
    

    これは、FK_Albums_Artistsのすべてのデータを返す場合です。 外部キー:

    SELECT * FROM sys.foreign_keys
    WHERE name = 'FK_Albums_Artists';
    

    結果:

    name                           | FK_Albums_Artists
    object_id                      | 981578535
    principal_id                   | NULL
    schema_id                      | 1
    parent_object_id               | 949578421
    type                           | F 
    type_desc                      | FOREIGN_KEY_CONSTRAINT
    create_date                    | 2019-05-02 12:56:06.380
    modify_date                    | 2019-05-02 12:56:06.380
    is_ms_shipped                  | 0
    is_published                   | 0
    is_schema_published            | 0
    referenced_object_id           | 885578193
    key_index_id                   | 1
    is_disabled                    | 0
    is_not_for_replication         | 0
    is_not_trusted                 | 0
    delete_referential_action      | 0
    delete_referential_action_desc | NO_ACTION
    update_referential_action      | 0
    update_referential_action_desc | NO_ACTION
    is_system_named                | 0
    

    例8–sys.foreign_key_columnsシステムビュー

    sys.foreign_key_columns システムビューには、外部キーを構成する各列または列のセットの行が含まれています。

    例:

    SELECT 
       OBJECT_NAME(constraint_object_id) AS 'Foreign Key',
       OBJECT_NAME(parent_object_id) AS 'Table',
       OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
    FROM sys.foreign_key_columns;
    

    結果:

    +--------------------+---------+--------------------+
    | Foreign Key        | Table   | Referenced Table   |
    |--------------------+---------+--------------------|
    | FK_Albums_Artists  | Albums  | Artists            |
    | FK_Albums_Genres   | Albums  | Genres             |
    | FK_Artists_Country | Artists | Country            |
    +--------------------+---------+--------------------+
    

    そして、これがFK_Albums_Artistsのすべてのデータを返すときです。 外部キー:

    SELECT * FROM sys.foreign_key_columns
    WHERE OBJECT_NAME(constraint_object_id) = 'FK_Albums_Artists';
    

    結果:

    constraint_object_id | 981578535
    constraint_column_id | 1
    parent_object_id     | 949578421
    parent_column_id     | 4
    referenced_object_id | 885578193
    referenced_column_id | 1
    

    例9–sys.objectsシステムビュー

    sys.objects システムビューには、データベース内に作成されたユーザー定義のスキーマスコープオブジェクトごとの行が含まれます。したがって、外部キーに関する情報が含まれています。

    例:

    SELECT 
      OBJECT_NAME(parent_object_id) AS 'Table',
      name
    FROM sys.objects 
    WHERE type = 'F';
    

    結果:

    +---------+-------------------+
    | Table   | name              |
    |---------+-------------------|
    | Albums  | FK_Albums_Artists |
    | Albums  | FK_Albums_Genres  |
    +---------+-------------------+
    

    この例では、結果を外部キーのみに絞り込みました(Fと入力します)。 。

    FK_Albums_Artists のすべてのデータを返す例を次に示します。 外部キー:

    SELECT *
    FROM sys.objects
    WHERE name = 'FK_Albums_Artists';
    

    結果(垂直出力を使用):

    -[ RECORD 1 ]-------------------------
    name                | FK_Albums_Artists
    object_id           | 981578535
    principal_id        | NULL
    schema_id           | 1
    parent_object_id    | 949578421
    type                | F 
    type_desc           | FOREIGN_KEY_CONSTRAINT
    create_date         | 2019-05-02 12:56:06.380
    modify_date         | 2019-05-02 12:56:06.380
    is_ms_shipped       | 0
    is_published        | 0
    is_schema_published | 0
    

    例10–sp_helpconstraintシステムストアドプロシージャ

    sp_helpconstraint システムストアドプロシージャは、すべての制約タイプ、それらのユーザー定義またはシステム提供の名前、それらが定義されている列、および制約を定義する式(DEFAULTの場合)のリストを返します。 およびCHECK 制約のみ)。

    したがって、これを使用して、データベース内の外部キーに関する情報を返すことができます。

    例:

    EXEC sp_helpconstraint Albums;
    

    結果:

    +---------------+
    | Object Name   |
    |---------------|
    | Albums        |
    +---------------+
     
    -[ RECORD 1 ]-------------------------
    constraint_type        | FOREIGN KEY
    constraint_name        | FK_Albums_Artists
    delete_action          | No Action
    update_action          | No Action
    status_enabled         | Enabled
    status_for_replication | Is_For_Replication
    constraint_keys        | ArtistId
    -[ RECORD 2 ]-------------------------
    constraint_type        |  
    constraint_name        |  
    delete_action          |  
    update_action          |  
    status_enabled         |  
    status_for_replication |  
    constraint_keys        | REFERENCES Music.dbo.Artists (ArtistId)
    -[ RECORD 3 ]-------------------------
    constraint_type        | FOREIGN KEY
    constraint_name        | FK_Albums_Genres
    delete_action          | No Action
    update_action          | No Action
    status_enabled         | Enabled
    status_for_replication | Is_For_Replication
    constraint_keys        | GenreId
    -[ RECORD 4 ]-------------------------
    constraint_type        |  
    constraint_name        |  
    delete_action          |  
    update_action          |  
    status_enabled         |  
    status_for_replication |  
    constraint_keys        | REFERENCES Music.dbo.Genres (GenreId)
    -[ RECORD 5 ]-------------------------
    constraint_type        | PRIMARY KEY (clustered)
    constraint_name        | PK__Albums__97B4BE379FC780BD
    delete_action          | (n/a)
    update_action          | (n/a)
    status_enabled         | (n/a)
    status_for_replication | (n/a)
    constraint_keys        | AlbumId
    

    例11–sp_helpシステムストアドプロシージャ

    sp_help システムストアドプロシージャは、データベースオブジェクト(sys.sysobjectsにリストされているオブジェクト)に関する情報を報告します 互換表示)、ユーザー定義のデータ型、またはデータ型。これには、外部キーに関する情報が含まれます。

    引数なしでこれを実行すると、現在のデータベースに存在するすべてのタイプのオブジェクトの要約情報に関する情報が返されます(つまり、ロット 情報の)。

    ただし、テーブルの名前を指定すると、そのテーブルに関する情報が返されます。繰り返しになりますが、多くの情報が返されますが、その中には外部キー情報が含まれます。

    例:

    EXEC sp_help Albums;
    

    結果:

    +--------+---------+------------+-------------------------+
    | Name   | Owner   | Type       | Created_datetime        |
    |--------+---------+------------+-------------------------|
    | Albums | dbo     | user table | 2019-05-02 12:56:06.370 |
    +--------+---------+------------+-------------------------+
     
    -[ RECORD 1 ]-------------------------
    Column_name          | AlbumId
    Type                 | int
    Computed             | no
    Length               | 4
    Prec                 | 10   
    Scale                | 0    
    Nullable             | no
    TrimTrailingBlanks   | (n/a)
    FixedLenNullInSource | (n/a)
    Collation            | NULL
    -[ RECORD 2 ]-------------------------
    Column_name          | AlbumName
    Type                 | nvarchar
    Computed             | no
    Length               | 510
    Prec                 |      
    Scale                |      
    Nullable             | no
    TrimTrailingBlanks   | (n/a)
    FixedLenNullInSource | (n/a)
    Collation            | SQL_Latin1_General_CP1_CI_AS
    -[ RECORD 3 ]-------------------------
    Column_name          | ReleaseDate
    Type                 | date
    Computed             | no
    Length               | 3
    Prec                 | 10   
    Scale                | 0    
    Nullable             | no
    TrimTrailingBlanks   | (n/a)
    FixedLenNullInSource | (n/a)
    Collation            | NULL
    -[ RECORD 4 ]-------------------------
    Column_name          | ArtistId
    Type                 | int
    Computed             | no
    Length               | 4
    Prec                 | 10   
    Scale                | 0    
    Nullable             | no
    TrimTrailingBlanks   | (n/a)
    FixedLenNullInSource | (n/a)
    Collation            | NULL
    -[ RECORD 5 ]-------------------------
    Column_name          | GenreId
    Type                 | int
    Computed             | no
    Length               | 4
    Prec                 | 10   
    Scale                | 0    
    Nullable             | no
    TrimTrailingBlanks   | (n/a)
    FixedLenNullInSource | (n/a)
    Collation            | NULL
     
    +------------+--------+-------------+-----------------------+
    | Identity   | Seed   | Increment   | Not For Replication   |
    |------------+--------+-------------+-----------------------|
    | AlbumId    | 1      | 1           | 0                     |
    +------------+--------+-------------+-----------------------+
     
    +-------------------------------+
    | RowGuidCol                    |
    |-------------------------------|
    | No rowguidcol column defined. |
    +-------------------------------+
     
    +-----------------------------+
    | Data_located_on_filegroup   |
    |-----------------------------|
    | PRIMARY                     |
    +-----------------------------+
     
    +------------------------------+---------------------------------------------------+--------------+
    | index_name                   | index_description                                 | index_keys   |
    |------------------------------+---------------------------------------------------+--------------|
    | PK__Albums__97B4BE379FC780BD | clustered, unique, primary key located on PRIMARY | AlbumId      |
    +------------------------------+---------------------------------------------------+--------------+
     
    -[ RECORD 1 ]-------------------------
    constraint_type        | FOREIGN KEY
    constraint_name        | FK_Albums_Artists
    delete_action          | No Action
    update_action          | No Action
    status_enabled         | Enabled
    status_for_replication | Is_For_Replication
    constraint_keys        | ArtistId
    -[ RECORD 2 ]-------------------------
    constraint_type        |  
    constraint_name        |  
    delete_action          |  
    update_action          |  
    status_enabled         |  
    status_for_replication |  
    constraint_keys        | REFERENCES Music.dbo.Artists (ArtistId)
    -[ RECORD 3 ]-------------------------
    constraint_type        | FOREIGN KEY
    constraint_name        | FK_Albums_Genres
    delete_action          | No Action
    update_action          | No Action
    status_enabled         | Enabled
    status_for_replication | Is_For_Replication
    constraint_keys        | GenreId
    -[ RECORD 4 ]-------------------------
    constraint_type        |  
    constraint_name        |  
    delete_action          |  
    update_action          |  
    status_enabled         |  
    status_for_replication |  
    constraint_keys        | REFERENCES Music.dbo.Genres (GenreId)
    -[ RECORD 5 ]-------------------------
    constraint_type        | PRIMARY KEY (clustered)
    constraint_name        | PK__Albums__97B4BE379FC780BD
    delete_action          | (n/a)
    update_action          | (n/a)
    status_enabled         | (n/a)
    status_for_replication | (n/a)
    constraint_keys        | AlbumId
    
    

    1. Oracle番号からC#10進数

    2. MySQLバックアップの保護:ガイド

    3. OracleのLOG()関数

    4. MySQLでUNIONを使用する場合の「エラー1250(42000):SELECTの1つからのテーブル「…」をグローバルORDER句で使用できない」を修正