本文實例講述了mysql視圖功能與用法。分享給大家供大家參考,具體如下:
通俗的講,視圖就是一條SELECT語句執行后返回的結果集。
//單表視圖 CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句 [WITH [CASCADED|LOCAL] CHECK OPTION]; //將查詢到的結果返回為一個虛擬表,會根據數據庫變化而變化 CREATE VIEW work_view(ID, Name, Addr) AS SELECT id,name,address FROM work; //多表上創建視圖 //ALGORITHM=MERGE ALGORITHM有三個參數分別是:merge、TEMPTABLE、UNDEFINED(merge合并表,temptable無法更新信息,undefined) CREATE ALGORITHM=MERGE VIEW work_view2(ID,NAME,SALARY) AS SELECT work.id,name,salary FROM work,salary WHERE work.id=salary.id WITH LOCAL CHECK OPTION;
方便操作,特別是查詢操作,減少復雜的SQL語句,增強可讀性;
視圖與表是一對一關系情況:如果沒有其它約束(如視圖中沒有的字段,在基本表中是必填字段情況),是可以進行增刪改數據操作;
視圖與表是一對多關系情況:如果只修改一張表的數據,且沒有其它約束(如視圖中沒有的字段,在基本表中是必填字段情況),是可以進行改數據操作,如以下語句,操作成功;
視圖和臨時表的區別
- 視圖只是一條預編譯的SQL語句,并不保存實際數據
- 臨時表是保存在tempdb中的實際的表
- 物理空間的分配不一樣,試圖不分配空間, 臨時表會分配空間
- 視圖是一個快照,是一個虛表
- 臨時表是客觀存在的表類型對象Create TEMPORARY table
- 它們的結構一個是表、一個快照。可以把視圖像象成聯合表的快捷方式
創建臨時表
CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL)
直接將查詢結果導入臨時表
CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name
臨時表只在當前連接可見,當這個連接關閉的時候,會自動drop。在同一個query語句中,你只能查找一次臨時表。show tables 語句不會列舉臨時表,但是會列出內存表。你不能用rename來重命名一個臨時表。但是,你可以alter table代替:
內存表:表結構建在磁盤里,數據在內存里 ,當停止服務后,表中的數據丟失,而表的結構不會丟失。內存表也可以被看作是臨時表的一種。
內存表的建立:
CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL ) TYPE = HEAP
注意: TYPE = HEAP必須要有。
內存表必須使用memory存儲引擎
更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數據庫鎖相關技巧匯總》及《MySQL常用函數大匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
標簽:鄂爾多斯 昌都 梅河口 陜西 荊門 北京 黔西 駐馬店
巨人網絡通訊聲明:本文標題《mysql視圖功能與用法實例分析》,本文關鍵詞 mysql,視圖,功能,與,用法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。下一篇:mysql show操作簡單示例