Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

11 Cara Mengembalikan Kunci Asing di Database SQL Server menggunakan T-SQL

Artikel ini menyajikan sebelas pendekatan berbeda untuk mengambil informasi kunci asing di SQL Server. Beberapa di antaranya akan lebih berguna daripada yang lain, tergantung pada situasinya.

Beberapa metode ini dapat dimodifikasi untuk mengembalikan informasi lebih lanjut. Misalnya, Anda dapat melakukan penggabungan pada berbagai tampilan sistem untuk mengembalikan lebih banyak data.

Contoh 1 – Prosedur Tersimpan Sistem sp_fkeys

sp_fkeys prosedur tersimpan sistem mengembalikan informasi kunci asing logis untuk lingkungan saat ini. Ini menunjukkan hubungan kunci asing termasuk kunci asing yang dinonaktifkan.

Prosedur tersimpan ini sangat ideal ketika Anda membutuhkan informasi kunci asing untuk tabel tertentu. Anda cukup meneruskan nama tabel kunci utama atau asing ke prosedur, dan itu akan mengembalikan info yang relevan.

Contoh:

EXEC sp_fkeys @fktable_name = Albums;

Hasil (menggunakan keluaran vertikal):

-[ 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

Cara lain untuk menggunakan tampilan ini adalah dengan memberikan nama tabel kunci utama:

EXEC sp_fkeys @pktable_name = Artists;

Hasil (menggunakan keluaran vertikal):

-[ 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

Anda juga dapat menggunakan argumen lain, seperti pemilik tabel dan penentu tabel:

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

Contoh 2 – Tampilan Sistem REFERENTIAL_CONSTRAINTS

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS tampilan sistem mengembalikan satu baris untuk setiap FOREIGN KEY kendala dalam database saat ini.

Ini sangat ideal untuk mengembalikan daftar kunci asing dalam database dengan cepat bersama dengan batasan unik yang terkait. Anda tidak terbatas hanya pada satu tabel seperti pada contoh sebelumnya.

Ini contohnya:

SELECT 
    CONSTRAINT_NAME,
    UNIQUE_CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

Hasil:

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

Jadi dalam hal ini kita dapat melihat setiap kunci asing dalam database saat ini, bersama dengan kunci utama yang terkait.

Ternyata, database ini hanya memiliki dua kunci asing dan kunci tersebut sama dengan yang kita lihat pada contoh sebelumnya.

Berikut adalah contoh yang mengembalikan semua data untuk FK_Albums_Artists kunci asing:

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

Hasil:

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

Anda akan melihat bahwa metode ini tidak memberikan detail tabel kunci utama dan asing yang Anda dapatkan dengan metode sebelumnya, jadi Anda perlu melakukan beberapa penggabungan dengan tampilan lain jika Anda memerlukan informasi itu (atau gunakan salah satu metode di bawah).

Contoh 3 – Tampilan Sistem KEY_COLUMN_USAGE

INFORMATION_SCHEMA.KEY_COLUMN_USAGE tampilan sistem mengembalikan satu baris untuk setiap kolom yang dibatasi sebagai kunci dalam database saat ini.

SELECT 
  TABLE_NAME, 
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Hasil:

+--------------+---------------+-------------------------------+
| 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  |
+--------------+---------------+-------------------------------+

Kita dapat melihat bahwa ini mengembalikan semua batasan, termasuk kunci utama.

Kami juga dapat menambahkan WHERE klausa untuk mempersempit hasil ke tabel tertentu.

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

Hasil:

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

Dalam contoh ini, saya mempersempit hasil menjadi hanya kolom tampilan yang saya minati, tetapi Anda juga dapat menggunakan tanda bintang (* ) wildcard untuk mengembalikan semua kolom.

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

Hasil (menggunakan keluaran vertikal):

-[ 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

Contoh 4 – Tampilan Sistem CONSTRAINT_COLUMN_USAGE

Ini mirip dengan contoh sebelumnya. INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE tampilan sistem mengembalikan satu baris untuk setiap kolom dalam database saat ini yang memiliki batasan yang ditentukan pada kolom.

Seperti INFORMATION_SCHEMA.KEY_COLUMN_USAGE Anda juga akan mendapatkan kunci utama yang dikembalikan dengan tampilan ini. Namun, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE tidak terbatas pada batasan utama saja.

SELECT 
  TABLE_NAME, 
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

Hasil:

+--------------+---------------+-------------------------------+
| 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  |
+--------------+---------------+-------------------------------+

Anda dapat menggunakan WHERE klausa untuk mengembalikan hanya tabel atau kolom tertentu:

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

Hasil:

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

Dalam hal ini saya menentukan nama kolom, sehingga mengembalikan semua batasan pada kolom dengan nama itu. Ternyata, database menggunakan nama kolom yang sama di dua tabel yang berbeda. Satu memiliki batasan kunci asing, yang lain kunci utama. Oleh karena itu kedua baris dikembalikan.

Sekali lagi, Anda dapat menggunakan tanda bintang (* ) wildcard untuk mengembalikan semua kolom.

Berikut adalah contoh di mana saya mengembalikan semua data untuk tabel tertentu:

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

Hasil (menggunakan keluaran vertikal):

-[ 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

Contoh 5 – Tampilan Sistem CONSTRAINT_TABLE_USAGE

INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE tampilan sistem mengembalikan satu baris untuk setiap tabel dalam database saat ini yang memiliki batasan yang ditentukan pada tabel.

SELECT 
  TABLE_NAME,
  CONSTRAINT_NAME 
FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;

Hasil:

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

Tampilan ini tidak mengembalikan nama kolom tempat batasan digunakan, jadi mungkin tidak berguna bagi Anda, bergantung pada kebutuhan Anda.

Berikut adalah contoh yang menunjukkan semua data yang dikembalikan oleh tampilan ini untuk Album tabel:

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

Hasil:

-[ 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

Contoh 6 – Tampilan Sistem TABLE_CONSTRAINTS

INFORMATION_SCHEMA.TABLE_CONSTRAINTS tampilan sistem mengembalikan satu baris untuk setiap batasan tabel dalam database saat ini.

SELECT 
  TABLE_NAME,
  CONSTRAINT_NAME,
  CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Hasil:

+--------------+-------------------------------+-------------------+
| 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       |
+--------------+-------------------------------+-------------------+

Tampilan ini tidak memberikan nama kolom, tetapi memberikan jenis batasan. Oleh karena itu, Anda dapat mempersempit hasil menjadi hanya kunci asing:

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

Hasil:

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

Berikut adalah contoh yang menggunakan karakter pengganti (* ) karakter untuk mengembalikan semua data untuk batasan kunci asing yang diterapkan ke Album tabel:

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

Hasil:

-[ 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

Contoh 7 – Tampilan Sistem sys.foreign_keys

sys.foreign_keys tampilan sistem berisi baris per objek yang merupakan FOREIGN KEY kendala, dengan sys.object.type = F (“F” adalah untuk “Kunci Asing”).

Contoh:

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

Hasil:

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

Ini dia saat mengembalikan semua data untuk FK_Albums_Artists kunci asing:

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

Hasil:

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

Contoh 8 – Tampilan Sistem sys.foreign_key_columns

sys.foreign_key_columns tampilan sistem berisi baris untuk setiap kolom, atau kumpulan kolom, yang terdiri dari kunci asing.

Contoh:

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;

Hasil:

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

Dan ini dia saat mengembalikan semua data untuk FK_Albums_Artists kunci asing:

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

Hasil:

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

Contoh 9 – Tampilan Sistem sys.objects

sys.objects tampilan sistem berisi baris untuk setiap objek cakupan skema yang ditentukan pengguna yang dibuat dalam database. Jadi itu termasuk informasi tentang kunci asing kami.

Contoh:

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

Hasil:

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

Dalam contoh ini saya mempersempit hasilnya menjadi hanya kunci asing (ketik F ).

Berikut adalah contoh yang mengembalikan semua data untuk FK_Albums_Artists kunci asing:

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

Hasil (menggunakan keluaran vertikal):

-[ 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

Contoh 10 – Prosedur Tersimpan Sistem sp_helpconstraint

sp_helpconstraint prosedur tersimpan sistem mengembalikan daftar semua jenis batasan, nama yang ditentukan pengguna atau yang disediakan sistem, kolom di mana mereka telah didefinisikan, dan ekspresi yang mendefinisikan batasan (untuk DEFAULT dan CHECK batasan saja).

Oleh karena itu Anda dapat menggunakannya untuk mengembalikan informasi tentang kunci asing di database Anda.

Contoh:

EXEC sp_helpconstraint Albums;

Hasil:

+---------------+
| 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

Contoh 11 – Prosedur Tersimpan Sistem sp_help

sp_help prosedur tersimpan sistem melaporkan informasi tentang objek database (objek apa pun yang terdaftar di sys.sysobjects tampilan kompatibilitas), tipe data yang ditentukan pengguna, atau tipe data. Ini termasuk informasi tentang kunci asing.

Saat Anda menjalankan ini tanpa argumen apa pun, ini memberikan informasi tentang ringkasan informasi objek dari semua jenis yang ada di database saat ini dikembalikan (yaitu lot informasi).

Namun, Anda bisa memberikan nama tabel, dan itu akan mengembalikan informasi tentang tabel itu. Sekali lagi, Anda akan mendapatkan banyak informasi yang dikembalikan, tetapi di antaranya adalah informasi kunci asing.

Contoh:

EXEC sp_help Albums;

Hasil:

+--------+---------+------------+-------------------------+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menemukan Pengaturan ANSI_NULLS Database di SQL Server (T-SQL)

  2. Menghapus daftar login dan kata sandi yang diingat di SQL Server Management Studio

  3. Menggunakan DMV ( Tampilan Manajemen Dinamis ) dan DMF ( Fungsi Manajemen Dinamis ) | Pemecahan Masalah Kinerja SQL Server -4

  4. Temukan nilai maksimal dan tampilkan nilai yang sesuai dari bidang yang berbeda di server SQL

  5. Optimalisasi kueri SQL — Cara menentukan kapan dan jika diperlukan