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

SQL Server 2016:Buat Tampilan

Di SQL Server, Anda dapat membuat kueri sebagai tampilan. Tampilan bermanfaat karena berbagai alasan, termasuk keamanan, kegunaan, dan kenyamanan.

Di SQL Server, tampilan adalah tabel virtual yang isinya ditentukan oleh kueri. Ini pada dasarnya adalah kueri yang telah ditulis sebelumnya yang disimpan di database.

Tampilan terdiri dari SELECT pernyataan, dan saat Anda menjalankan kueri terhadap tampilan, Anda melihat hasilnya seperti saat membuka tabel. Tampilan disebut sebagai tabel virtual karena dapat mengumpulkan data dari beberapa tabel, serta data agregat, dan menyajikannya seolah-olah itu adalah satu tabel.

Manfaat Tampilan

Tampilan dapat berguna ketika ada beberapa pengguna dengan tingkat akses yang berbeda, yang semuanya perlu melihat sebagian data dalam database (tetapi tidak harus semua data). Tampilan dapat melakukan hal berikut:

  • Batasi akses ke baris tertentu dalam tabel
  • Batasi akses ke kolom tertentu dalam tabel
  • Gabung kolom dari beberapa tabel dan tampilkan seolah-olah mereka adalah bagian dari satu tabel
  • Menyajikan informasi agregat (seperti hasil COUNT() fungsi)

Cara Membuat Tampilan

Anda membuat tampilan dengan menggunakan CREATE VIEW pernyataan, diikuti oleh SELECT pernyataan.

CREATE VIEW ViewName 
AS
SELECT ...

Sekarang kita akan membuat tampilan dari kueri sebelumnya.

  1. Desain Tampilan

    Ambil kueri dari contoh kami sebelumnya, dan awali dengan CREATE VIEW RecentAlbums AS .

    Hapus juga ORDER BY klausa, karena tampilan tidak mendukung klausa ini (kecuali TOP , OFFSET atau FOR XML juga ditentukan).

    Tambahkan juga titik koma di akhir pernyataan, sebagai terminator pernyataan (lebih lanjut tentang itu di bawah).

    Contoh Kode

    Di bawah ini adalah kode dari contoh kita, dengan ORDER BY klausa dihapus, dan titik koma ditambahkan sebagai terminator pernyataan.

    Saya juga telah memformat ulang sedikit agar lebih mudah dibaca).

    CREATE VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));

    Dalam contoh ini saya menambahkan titik koma ke akhir tampilan. Perancang Kueri tidak menyertakan ini, tetapi praktik yang baik adalah menyertakannya.

    Titik koma adalah bagian dari standar ANSI SQL-92. Ini adalah karakter terminator pernyataan.

    Selain itu, Microsoft telah mengumumkan bahwa pernyataan Transact-SQL yang diakhiri dengan titik koma tidak digunakan lagi di SQL Server 2016, dan pernyataan tersebut tidak akan didukung di versi mendatang (SQL Server secara historis menggunakan GO kata kunci sebagai terminator pernyataan, bukan titik koma).

  2. Jalankan Tampilan

    Sekarang jalankan tampilan sama seperti Anda menjalankan kueri lainnya.

    Klik Jalankan pada bilah alat.

    Anda sekarang dapat menavigasi ke tampilan di Object Explorer. Perluas dan Anda akan melihat kolom serta tipe data dan propertinya — seolah-olah itu adalah tabel.

  3. Kueri Tampilan

    Sekarang setelah tampilan dibuat, Anda dapat mengkueri tampilan dengan menjalankan SELECT pernyataan menentangnya.

    Jadi Anda dapat menanyakan tampilan baru kami yang dibuat dengan menggunakan SELECT * FROM RecentAlbums; .

  4. Filter Tampilan

    Salah satu hal baik tentang tampilan adalah, Anda dapat menerapkan kriteria pemfilteran Anda sendiri terhadapnya — memfilter hasil lebih lanjut.

    Misalnya, Anda dapat menambahkan WHERE Genre = 'Pop' , sehingga tampilan hanya mengembalikan pop album dari 10 tahun terakhir.

Mengubah Tampilan

Anda dapat mengubah tampilan Anda dengan menggunakan ALTER VIEW pernyataan alih-alih CREATE VIEW pernyataan.

  1. Desain Tampilan yang Diubah

    Di sini kami akan mengubah pandangan kami untuk mengembalikan album selama 20 tahun terakhir, bukan hanya 10.

    Ini adalah koleksi sekolah yang cukup tua, jadi album apa pun yang dirilis dalam 20 tahun terakhir diklasifikasikan sebagai "baru-baru ini" :)

    Kami juga akan mengembalikan kolom lain:Artists.ActiveFrom

    Contoh Kode

    Berikut kode yang kami gunakan untuk contoh:

    ALTER VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName,
            Artists.ActiveFrom
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
  2. Kueri Tampilan

    Sekarang, menanyakan tampilan akan mengembalikan album senilai 20 tahun. Ini juga akan menampilkan tanggal artis tersebut aktif.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dilema Penamaan Tabel:Nama Tunggal vs. Nama Jamak

  2. DateDiff untuk menampilkan jam dan menit

  3. Tentang Perintah GO di SQL Server

  4. Mengapa EF menghasilkan kueri SQL dengan pemeriksaan nol yang tidak perlu?

  5. Bagaimana Fungsi STR() Bekerja di SQL Server (T-SQL)