SQL 中的視圖類型 | SQL 中的視圖 [2022]
已發表: 2021-01-02編寫複雜的 SQL 查詢和保護數據庫訪問是數據庫管理員和用戶一直面臨的挑戰,這些查詢可能會變得非常複雜。 在原始表上使用代理有助於簡化此類查詢。 此外,在某些情況下,管理員希望限制對數據庫的直接訪問。 對於這兩種情況,都可以使用視圖。
目錄
什麼是視圖?
SQL 有一個特殊版本的表,稱為 View,它是在運行時編譯的虛擬表。 視圖只是一條 SQL 語句,與它相關的數據並沒有物理存儲在視圖中,而是存儲在視圖的基表中。
學習構建 Swiggy、Quora、IMDB 等應用程序如果需要限制訪問,它可以包含表的所有行和列,或者僅包含少數選定的行和列。 根據用於創建視圖的書面 SQL 查詢,可以從一個或多個表創建它。
視圖可用於以用戶自然的方式構建數據、簡化複雜的查詢、限制對數據的訪問以及匯總多個表中的數據以創建報告。
管理視圖
有與管理視圖相關的不同方面,在此處定義。
創建視圖:可以使用“create view”語句創建視圖。 視圖由引用物化視圖、表或其他視圖的查詢定義。

重命名視圖:可以重命名視圖,並且應該確保所有引用視圖舊名稱的對象現在都應該有一個新名稱。
列出視圖:可以通過查詢系統目錄視圖列出 SQL Server 數據庫中的所有視圖。
刪除視圖:使用“drop view”語句,可以刪除現有視圖。
閱讀: SQL 與 PlSQL
報名參加世界頂尖大學的在線軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
SQL 中的視圖類型
SQL Server 中有兩種視圖,即係統定義視圖和用戶定義視圖。 本節包含對這兩種類型的描述。
系統定義的視圖
系統定義視圖是 SQL Server 數據庫中已經存在的預定義視圖,例如 Tempdb、Master 和 temp。 每個數據庫都有自己的屬性和功能。
所有用戶定義視圖的模板數據庫都來自主數據庫。 它包含許多預定義視圖,這些視圖是表和其他數據庫的模板。 它包含近 230 個預定義視圖。
系統定義的視圖將自動附加到所有用戶定義的數據庫。 這些提供有關數據庫、表以及數據庫和表的所有屬性的信息。 共有三種類型的系統定義視圖,信息模式、目錄視圖和動態管理視圖。
信息模式
SQL 服務器中有二十種不同的模式視圖。 它們用於顯示數據庫的物理信息,例如表、約束、列和視圖。 此視圖以 INFORMATION_SCHEMA 開頭,後跟視圖名稱。 INFORMATION_SCHEMA.CHECK_CONSTRAINTS 用於接收有關數據庫中任何可用約束的信息。

約束用於表中的特定列,以確保該列遵循某些數據規則。 INFORMATION_SCHEMA.COLUMNS 用於接收有關表列的信息,例如表名、列名、列的位置、默認值等。要返回當前數據庫中存在的視圖,使用 INFORMATION_SCHEMA.VIEWS。
目錄視圖
這些用於返回 SQL 服務器使用的信息。 目錄視圖提供了一種有效的方式來獲取、呈現和轉換自定義形式的信息。 但它們不包括任何關於備份、複製或維護計劃等的信息。這些視圖用於訪問數據庫的元數據,名稱和列名是描述性的,幫助用戶查詢預期的內容。
動態管理視圖
這些是 2005 年在 SQL Server 中引入的。管理員可以獲取有關服務器狀態的信息以診斷問題、監控服務器實例的運行狀況並通過這些視圖調整性能。 服務器範圍的動態管理視圖僅存儲在主數據庫中,而數據庫範圍的動態管理視圖存儲在每個數據庫中。
用戶定義的視圖
這些是用戶定義的視圖類型。 用戶定義視圖下有兩種類型,簡單視圖和復雜視圖。
簡單視圖
這些視圖只能包含一個基表或只能從一個表創建。 這裡不能使用MAX()、COUNT()等分組函數,也不包含分組數據。
通過使用 Simple View,可以執行 DML 操作。 插入、刪除和更新是直接可以的,但簡單視圖不包含分組依據、偽列如rownum、distinct、由表達式定義的列。 簡單視圖也不包括基表中的 NOT NULL 列。
複雜視圖
這些視圖可以包含多個基表或可以在多個基表上構建,並且它們包含 group by 子句、連接條件和 order by 子句。 這裡可以使用組函數,它包含數據組。 複雜視圖不能總是用於執行 DML 操作。
插入、刪除和更新不能直接應用於復雜視圖。 但與簡單視圖不同的是,複雜視圖可以包含 group by、偽列(如 rownum、distinct、由表達式定義的列)。 NOT NULL 列可以包含在復雜視圖中,而它們不被簡單視圖選中。

還有其他視圖,例如 Inline View 和 Materialized View。 內聯視圖基於 FROM 子句中的子查詢,子查詢創建一個臨時表,這簡化了複雜的查詢。
這些視圖用於編寫複雜的 SQL 查詢,而不需要連接和子查詢操作。 物化視圖存儲定義甚至數據。 數據的副本是通過物理存儲來創建的。 此視圖減少了重新生成整個數據的處理時間。
閱讀:令人興奮的 SQL 項目想法和主題
結論
本文介紹SQL 中的視圖類型。 SQL 中的 View 被定義和詳細解釋,並且還定義了 Views 的不同管理方式。 SQL 中不同類型的視圖,如係統定義視圖和用戶定義視圖,以及每種類型下的各種子類型都進行了詳細描述。
如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
