MySQL學習——操作視圖
摘要:本文主要學習了使用DDL陳述句操作視圖的方法,
了解視圖
是什么
視圖是從一個、多個表或者視圖中匯出的表,包含一系列帶有名稱的資料列和若干條資料行,
特點
視圖不是資料庫中真實的表,而是一張虛擬表,其結構和資料是建立在對資料中真實表的查詢基礎上的,
視圖是查看資料表的一種方法,可以查詢資料表中某些列構成的資料,只是一些SQL陳述句的集合,從安全的角度來看,視圖的資料安全性更高,使用視圖的用戶不接觸資料表,不知道表結構,
視圖的建立和洗掉只影響視圖本身,不影響對應的基本表,
使用視圖
查詢視圖資料的陳述句和查詢表的陳述句是一樣的,
修改視圖資料的陳述句實際上是通過修改表的資料實作的,對于可修改的視圖,視圖中的行和基本表的行之間必須具有一對一的關系,
使用注意
視圖不包含資料,所以每次使用視圖時,都必須執行查詢中所需的任何一個檢索操作,如果用多個連接和過濾條件創建了復雜的視圖或嵌套了視圖,可能會發現系統運行性能下降得十分嚴重,因此,在部署大量視圖應用時,應該進行系統測驗,
創建視圖
語法
1 create view 視圖名 (列1, 列2, ..., 列n) as 查詢陳述句;
列名可以任意取名,但數量必須和查詢的列名相等,如果不指明視圖的列名,默認使用查詢陳述句的列名,
實體
創建一個簡單的視圖:
1 mysql> create view score_view as select * from score; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>
創建視圖并指定列:
1 mysql> create view score_view (編號, 學生, 科目, 成績) as select id, student, course, grade from score; 2 Query OK, 0 rows affected (0.00 sec) 3 4 mysql>
查看視圖結構
語法
1 desc 視圖名;
實體
1 mysql> desc score_view; 2 +--------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +--------+-------------+------+-----+---------+-------+ 5 | 編號 | int(10) | NO | | 0 | | 6 | 學生 | varchar(20) | NO | | NULL | | 7 | 科目 | varchar(20) | NO | | NULL | | 8 | 成績 | int(10) | YES | | NULL | | 9 +--------+-------------+------+-----+---------+-------+ 10 4 rows in set (0.00 sec) 11 12 mysql>
說明
Field:列名,
Type:型別,
Null:表示該列是否可以存盤NULL值,
Key:表示該列是否已編制索引,PRI表示該列是主鍵的一部分,UNI表示該列是UNIQUE索引的一部分,MUL表示在列中某個給定值允許出現多次,
Default:表示該列是否有默認值,如果有,值是多少,
Extra:表示可以獲取的與給定列有關的附加資訊,如:AUTO_INCREMENT等,
修改視圖
語法
1 alter view 視圖名 (列1, 列2, ..., 列n) as 查詢陳述句;
實體
1 mysql> alter view score_view (學生, 課程, 成績) as select student, course, grade from score; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>
洗掉視圖
語法
1 drop view 視圖名;
實體
1 mysql> drop view score_view; 2 Query OK, 0 rows affected (0.00 sec) 3 4 mysql>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/125638.html
標籤:MySQL
上一篇:MySQL學習——查詢表里的資料
下一篇:mysql57重新安裝后無法再次啟動mysql57服務“本地計算機上的MySQL服務啟動后停止。某些服務在未由其他服務或程式使用時將自動。”--解決方法
