翻譯|使用教程|編輯:莫成敏|2019-11-04 17:08:49.597|閱讀 1119 次
概述:Navicat Premium 是一套數據庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數據庫。在今天的文章中,我們將學習一種視圖以及如何使用Navicat Premium作為客戶端為MySQL 8創建視圖。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
數據庫視圖是一個虛擬表或邏輯表,由SELECT查詢組成。與數據庫表非常相似,視圖也包含可以查詢的行和列。包括MySQL在內的大多數數據庫管理系統,甚至都允許您通過視圖更新基礎表中的數據,但有一些需要注意的事項。在今天的文章中,我們將學習一種視圖以及如何使用Navicat Premium作為客戶端為MySQL 8創建視圖。
Navicat Premium 是一套數據庫管理工具,讓你使用一個程序即可同時連接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 數據庫。
基本語法
在MySQL中,您可以使用CREATE VIEW語句創建一個新視圖。這是基本語法:
CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW view_name [(column_list)] AS select-statement;
現在,讓我們更詳細地檢查語法。
視圖處理算法
ALGORITHM屬性告訴MySQL創建視圖時使用哪種機制。MySQL提供了三種算法:MERGE、TEMPTABLE和UNDEFINED:
MERGE算法將輸入查詢與定義視圖的SELECT語句組合為一個查詢。然后,MySQL執行組合查詢以返回合并的結果集。MERGE算法不能應用于包含聚合函數(例如MIN、MAX、SUM、COUNT、AVG或DISTINCT、GROUP BY、HAVING、LIMIT、UNION和UNION ALL)的SELECT語句。如果無法應用MERGE算法,MySQL會自動將算法更改為UNDEFINED。
TEMPTABLE算法首先基于定義視圖的SELECT語句創建一個臨時表,然后針對該臨時表執行輸入查詢。因為MySQL必須創建一個臨時表來存儲結果集并將數據從基表移到臨時表,所以TEMPTABLE算法的效率不如MERGE算法。
創建視圖而不指定顯式算法時,UNDEFINED是默認算法。UNDEFINED算法使MySQL可以選擇使用MERGE還是TEMPTABLE算法。由于效率更高,MySQL首先選擇了MERGE算法,但如果不能采用MERGE,則會選擇TEMPTABLE算法。
視圖名稱
只要遵循與表相同的命名規則,就可以為視圖選擇任何名稱。此外,視圖和表在數據庫中共享相同的名稱空間,因此您不能為視圖指定與任何現有視圖相同的名稱。
SELECT語句
在SELECT語句中,您可以從數據庫中存在的任何表或視圖中查詢數據。但是,SELECT語句遵循一些規則:
SELECT語句可以在WHERE子句中包含子查詢,但不能在FROM子句中包含子查詢。
SELECT語句不能引用任何變量,包括局部變量、用戶變量和會話變量。
SELECT語句不能引用準備好的語句的參數。
在Navicat中創建視圖
在Navicat中,可以通過單擊主工具欄上的“視圖”按鈕,然后單擊“對象”工具欄上的“新視圖”來創建新視圖:
“定義”選項卡是您編寫SQL的地方。您甚至可以使用View Builder來幫助編寫語句!
可以在“高級”選項卡上找到“算法”,以及其他一些選項:
完成后,您可以使用“預覽”按鈕測試您的“視圖”,然后單擊“保存”將其保存。
結論
視圖是將一個或多個表的數據以可查詢的格式組合在一起的好方法,但請記住,使用數據庫視圖存在一些缺點。首先,從數據庫視圖查詢數據可能會很慢——特別是如果該視圖是基于其他視圖創建的。此外,每當更改視圖引用的表的結構時,都必須記住要更改視圖。
想要購買Navicat Premium正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: