Di SQL Server, Anda dapat menggunakan Transact-SQL VIEWS tampilan skema informasi sistem untuk mengembalikan informasi tentang satu atau lebih tampilan dalam database saat ini. Ini mengembalikan satu baris untuk tampilan yang dapat diakses oleh pengguna saat ini di database saat ini.
Untuk menggunakan tampilan ini, tentukan nama lengkap INFORMATION_SCHEMA.VIEWS .
Contoh 1 – Mengembalikan Informasi tentang Tampilan Tertentu
Berikut adalah contoh pengembalian informasi tentang semua tampilan yang dapat diakses oleh pengguna saat ini di database saat ini.
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CHECK_OPTION, IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS;
Hasil:
+-----------------+----------------+--------------+----------------+----------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | CHECK_OPTION | IS_UPDATABLE | |-----------------+----------------+--------------+----------------+----------------| | Music | dbo | RockAlbums | NONE | NO | | Music | dbo | JazzAlbums | NONE | NO | | Music | dbo | BluesAlbums | NONE | NO | +-----------------+----------------+--------------+----------------+----------------+
Saya sengaja menghilangkan kolom dalam contoh ini. Saya menghilangkan VIEW_DEFINITION kolom. Saya meninggalkannya karena mengacaukan output saat menggunakan alat baris perintah saya. Anda dapat melihat contoh yang menyertakan kolom ini di bawah.
Perhatikan bahwa dokumentasi Microsoft memperingatkan bahwa Anda tidak boleh menggunakan INFORMATION_SCHEMA view untuk menentukan skema suatu objek. Satu-satunya cara yang dapat diandalkan untuk menemukan skema suatu objek adalah dengan menanyakan sys.objects tampilan katalog.
Contoh 2 – Mengembalikan Informasi tentang Tampilan Tertentu
Berikut ini contoh pengembalian informasi tentang tampilan tertentu.
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CHECK_OPTION, IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-----------------+----------------+--------------+----------------+----------------+ | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | CHECK_OPTION | IS_UPDATABLE | |-----------------+----------------+--------------+----------------+----------------| | Music | dbo | RockAlbums | NONE | NO | +-----------------+----------------+--------------+----------------+----------------+
Ini dia lagi dengan VIEW_DEFINITION kolom termasuk:
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-----------------+----------------+--------------+-------------------+----------------+----------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | VIEW_DEFINITION | CHECK_OPTION | IS_UPDATABLE |
|-----------------+----------------+--------------+-------------------+----------------+----------------|
| Music | dbo | RockAlbums | CREATE VIEW RockAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Rock'; | NONE | NO |
+-----------------+----------------+--------------+-------------------+----------------+----------------+
Contoh 3 – Mengembalikan Hanya Definisi Tampilan
Terlepas dari kelemahan definisi tampilan yang mengacaukan tata letak saya, kolom ini dapat berguna jika Anda hanya mencari definisi tampilan:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-------------------+
| VIEW_DEFINITION |
|-------------------|
| CREATE VIEW RockAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Rock'; |
+-------------------+
Contoh 4 – Mengembalikan Definisi Tampilan dari Beberapa Tampilan
VIEW_DEFINITION kolom bisa sangat berguna jika ingin membuat daftar definisi tampilan untuk beberapa tampilan sekaligus:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+-------------------+
| VIEW_DEFINITION |
|-------------------|
| CREATE VIEW RockAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Rock'; |
| CREATE VIEW JazzAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Jazz'; |
| CREATE VIEW BluesAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Blues'; |
+-------------------+
(3 rows affected)
Contoh 5 – Mengembalikan Definisi Tampilan Besar
VIEW_DEFINITION kolom memiliki panjang maksimum nvarchar(4000) . Untuk definisi tampilan yang lebih besar dari ini, Anda dapat menggunakan OBJECT_DEFINITION() fungsi (bersama dengan OBJECT_ID() function) untuk mengembalikan definisi lengkap.
Nilai kembalian OBJECT_DEFINITION() fungsinya adalah nvarchar(maks) , sehingga tidak memiliki batasan karakter VIEW_DEFINITION kolom (seperti yang disebutkan, adalah nvarchar(4000) ).
Contoh:
SELECT OBJECT_DEFINITION(OBJECT_ID(TABLE_NAME)) FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'RockAlbums';
Hasil:
+--------------------+
| (No column name) |
|--------------------|
| CREATE VIEW RockAlbums
AS
SELECT AlbumName, ArtistName
FROM Albums
INNER JOIN Artists
ON Albums.ArtistId = Artists.ArtistId
INNER JOIN Genres
ON Albums.GenreId = Genres.GenreId
WHERE Genres.Genre = 'Rock'; |
+--------------------+
Jelas, contoh ini tidak menunjukkan manfaat menggunakan OBJECT_DEFINITION() fungsi, karena definisi tampilan terlalu kecil, tetapi jika Anda memiliki definisi tampilan ekstra besar, semoga contoh ini membantu.