Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server 2016:Tạo một dạng xem

Trong SQL Server, bạn có thể truy vấn dưới dạng các dạng xem. Chế độ xem có lợi vì nhiều lý do, bao gồm bảo mật, khả năng sử dụng và sự tiện lợi.

Trong SQL Server, một dạng xem là một bảng ảo có nội dung được xác định bởi một truy vấn. Về cơ bản, nó là một truy vấn viết trước được lưu trữ trên cơ sở dữ liệu.

Một chế độ xem bao gồm một SELECT và khi bạn chạy một truy vấn đối với dạng xem, bạn sẽ thấy kết quả của nó giống như khi mở một bảng. Chế độ xem được gọi là bảng ảo vì chúng có thể tập hợp dữ liệu từ nhiều bảng, cũng như dữ liệu tổng hợp và hiển thị nó như thể nó là một bảng duy nhất.

Lợi ích của Chế độ xem

Một dạng xem có thể hữu ích khi có nhiều người dùng với các cấp độ truy cập khác nhau, tất cả những người này đều cần xem các phần dữ liệu trong cơ sở dữ liệu (nhưng không nhất thiết là tất cả dữ liệu). Chế độ xem có thể thực hiện những việc sau:

  • Hạn chế quyền truy cập vào các hàng cụ thể trong bảng
  • Hạn chế quyền truy cập vào các cột cụ thể trong bảng
  • Nối các cột từ nhiều bảng và trình bày chúng như thể chúng là một phần của một bảng duy nhất
  • Trình bày thông tin tổng hợp (chẳng hạn như kết quả của COUNT() chức năng)

Cách tạo chế độ xem

Bạn tạo chế độ xem bằng cách sử dụng CREATE VIEW , theo sau là SELECT tuyên bố.

CREATE VIEW ViewName 
AS
SELECT ...

Bây giờ chúng tôi sẽ tạo một chế độ xem từ truy vấn trước đó của chúng tôi.

  1. Thiết kế Chế độ xem

    Lấy truy vấn từ ví dụ trước của chúng tôi và tiền tố nó bằng CREATE VIEW RecentAlbums AS .

    Đồng thời xóa ORDER BY mệnh đề, bởi vì các chế độ xem không hỗ trợ mệnh đề này (trừ khi TOP , OFFSET hoặc FOR XML cũng được chỉ định).

    Ngoài ra, hãy thêm dấu chấm phẩy vào cuối câu lệnh, làm dấu chấm dứt câu lệnh (thêm thông tin về điều đó bên dưới).

    Mã mẫu

    Dưới đây là mã từ ví dụ của chúng tôi, với ORDER BY mệnh đề bị xóa và dấu chấm phẩy được thêm vào làm dấu chấm dứt câu lệnh.

    Tôi cũng đã định dạng lại nó một chút để dễ đọc hơn).

    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()));

    Trong ví dụ này, tôi đã thêm dấu chấm phẩy vào cuối dạng xem. Trình thiết kế truy vấn không bao gồm điều này, nhưng bạn nên đưa nó vào.

    Dấu chấm phẩy là một phần của tiêu chuẩn ANSI SQL-92. Nó là một ký tự kết thúc câu lệnh.

    Ngoài ra, Microsoft đã thông báo rằng các câu lệnh Transact-SQL kết thúc bằng dấu chấm phẩy không được dùng trong SQL Server 2016 và chúng sẽ không được hỗ trợ trong phiên bản tương lai (SQL Server trước đây đã sử dụng GO từ khóa dưới dạng dấu chấm dứt câu lệnh thay vì dấu chấm phẩy).

  2. Thực thi Chế độ xem

    Bây giờ thực thi chế độ xem giống như bạn thực hiện bất kỳ truy vấn nào khác.

    Nhấp vào Execute trên thanh công cụ.

    Bây giờ bạn có thể điều hướng đến chế độ xem trong Trình khám phá đối tượng. Mở rộng nó ra và bạn sẽ thấy các cột cũng như kiểu dữ liệu và thuộc tính của chúng - như thể nó là một bảng.

  3. Truy vấn chế độ xem

    Bây giờ chế độ xem đã được tạo, bạn có thể truy vấn chế độ xem bằng cách chạy SELECT tuyên bố chống lại nó.

    Vì vậy, bạn có thể truy vấn chế độ xem mới được tạo của chúng tôi bằng cách sử dụng SELECT * FROM RecentAlbums; .

  4. Lọc Chế độ xem

    Một trong những điều tốt về chế độ xem là bạn có thể áp dụng tiêu chí lọc của riêng mình để chống lại chúng - lọc thêm kết quả.

    Ví dụ:bạn có thể thêm WHERE Genre = 'Pop' , để chế độ xem chỉ trả về pop album trong 10 năm qua.

Thay đổi chế độ xem

Bạn có thể sửa đổi chế độ xem của mình bằng cách sử dụng ALTER VIEW thay cho câu lệnh CREATE VIEW tuyên bố.

  1. Thiết kế Dạng xem Thay đổi

    Ở đây, chúng tôi sẽ sửa đổi quan điểm của mình để trả lại các album trong 20 năm qua thay vì chỉ 10.

    Đó là một bộ sưu tập của trường học khá cũ, vì vậy bất kỳ album nào được phát hành trong vòng 20 năm qua đều được phân loại là "gần đây" :)

    Chúng tôi cũng sẽ trả về một cột khác: Artists.ActiveFrom

    Mã mẫu

    Đây là mã chúng tôi sử dụng cho ví dụ:

    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. Truy vấn chế độ xem

    Bây giờ, truy vấn chế độ xem sẽ trả về giá trị 20 năm của album. Nó cũng sẽ hiển thị ngày nghệ sĩ hoạt động.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Management Studio (SSMS) là gì?

  2. Cách khắc phục lỗi Msg 7325 trong SQL Server:"Đối tượng hiển thị cột có loại CLR không được phép trong truy vấn phân tán"

  3. Máy chủ SQL bị thiếu chỉ mục

  4. Cần trợ giúp trong tính toán bằng cách sử dụng hai Bộ dữ liệu sử dụng SSRS Biểu thức

  5. Khắc phục “Máy chủ SQL bị chặn truy cập vào STATEMENT‘ OpenRowset / OpenDatasource ’của thành phần‘ Truy vấn phân tán Ad Hoc ”