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

Dapatkan Informasi Tampilan dengan Tampilan Skema Informasi VIEWS di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cuplikan Basis Data SQL Server -2

  2. Performa Variabel Tabel di SQL Server

  3. Bagaimana menerapkan aplikasi dengan database sql server pada klien

  4. 3 Cara Mendapatkan Tipe Data Kolom di SQL Server (T-SQL)

  5. Konversi 'datetime2' menjadi 'datetime' di SQL Server (Contoh T-SQL)