相關mysql視頻教程推薦:《mysql教程》
視圖:
視圖的定義:從一個或多個表(或視圖)導出的表。
視圖與表的不同之處:視圖是一個虛表,即視圖所對應的數據不進行實際存儲,數據庫只存儲視圖的定義,對視圖的數據進行操作時,系統根據視圖的定義去操作與視圖相關聯的基本表。
上面小段其實已經講出了視圖的本質特征。
視圖主要用于系統的安全、查詢和效率,在安全方面,舉個例子:例如,你只想讓用戶看到某一表的某幾個字段,有些字段想不讓用戶看見,這是用視圖解決會很好,當然在select時也可以實現。第在查詢方面,對于比較復雜的查詢,可以大大減少頻繁編寫sql語句的煩惱。同時,在效率上,數據分布在多臺服務器上,視圖一定會帶來效率上的好處。
臨時表:
臨時表與永久表相似,但臨時表存儲在 tempdb 中,當不再使用時會自動刪除。
臨時表有兩種類型:本地和全局。它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字符號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。全局臨時表的名稱以兩個數字符號 (##) 打頭,創建后對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。
例如,如果創建了 employees 表,則任何在數據庫中有使用該表的安全權限的用戶都可以使用該表,除非已將其刪除。如果數據庫會話創建了本地臨時表 #employees,則僅會話可以使用該表,會話斷開連接后就將該表刪除。如果創建了 ##employees 全局臨時表,則數據庫中的任何用戶均可使用該表。如果該表在您創建后沒有其他用戶使用,則當您斷開連接時該表刪除。如果您創建該表后另一個用戶在使用該表,則 SQL Server 將在您斷開連接并且所有其他會話不再使用該表時將其刪除。
臨時表主要用來提高效率。
二者區別:
空間分配:物理空間的分配不一樣,試圖不分配空間, 臨時表會分配空間
虛實:視圖是一條預編譯的SQL語句,并不保存實際數據,而臨時表是保存在tempdb中的實際的表。即視圖是一個快照,是一個虛表,而臨時表是客觀存在的表類型對象。它們的結構一個是表、一個快照。可以把視圖想象成聯合表的快捷方式。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com