視圖
視圖是一個虛擬表(非真實(shí)存在),其本質(zhì)是根據(jù)SQL語句獲取動態(tài)的數(shù)據(jù)集,并為其命名,用戶使用時只需使用名稱即可獲取結(jié)果集,并可以將其當(dāng)作表來使用。
創(chuàng)建視圖
創(chuàng)建一個名稱為v1的視圖,其功能就是查詢color表中的所有數(shù)據(jù)
CREATE VIEW v1 AS SELECT * FROM color;
查看視圖
使用視圖時,將其當(dāng)作表進(jìn)行操作即可,由于視圖是虛擬表,所以無法使用其對真實(shí)表進(jìn)行創(chuàng)建、更新和刪除操作,僅能做查詢用。
select * from v1; -- 等于執(zhí)行SELECT * FROM color
輸出結(jié)果
+-----+--------+| nid | title |+-----+--------+| 1 | red || 2 | yellow |+-----+--------+2 rows in set (0.00 sec)
修改視圖
ALTER VIEW v1 AS SELECT * FROM color WHERE nid = 1;
刪除視圖
DROP VIEW v1;
引用
navicat是mysql可視化工具中最棒的,但是,在處理視圖的導(dǎo)入導(dǎo)出方面,它是按照視圖名稱的字母順序來處理的,若視圖存在依賴,在導(dǎo)入過程中就會報錯。這個問題一直困繞我,一度因?yàn)槲沂褂胐ocker來部署mysql而繞過了這個問題。最近不得不直面這個問題,因此,寫了一個小工具來解決它。
整體思路
在mysql很容易查出所有視圖和其定義,因此可以寫一個視圖導(dǎo)出工具,存儲時對各視圖的保存位置進(jìn)行調(diào)整,處理好它們之間的依賴關(guān)系,被依賴的放前面,這樣就解決了導(dǎo)入時的依賴問題。
獲取視圖信息
運(yùn)行以下查詢語句,就能獲得該數(shù)據(jù)庫中所有視圖的信息。
select * from information_schema.VIEWS where TABLE_SCHEMA = DatabaseName
查詢結(jié)果字段說明:
TABLE_NAME : 數(shù)所庫中視圖名稱 VIEW_DEFINITION : 視圖的定義代碼,只有查詢語句部分 DEFINER : 視圖定義(建立)者名稱 SECURITY : 安全級別總之,所有視圖的信息都在這個表中保存,我要完成任務(wù),只需要TABLE_NAME和VIEW_DEFINITION就可以了。
算法描述
process_rely函數(shù)算法描述:
第一層循環(huán),從rely_old中取一個視圖名稱
第二層循環(huán),從dict中取出一個鍵值
若鍵值被第一層元素的定義所依賴
新聞熱點(diǎn)
疑難解答
圖片精選