<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Mysql基礎篇之視圖

        來源:懂視網 責編:小采 時間:2020-11-09 15:57:23
        文檔

        Mysql基礎篇之視圖

        Mysql基礎篇之視圖:視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。 視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。 這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。 數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些
        推薦度:
        導讀Mysql基礎篇之視圖:視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。 視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。 這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。 數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些

        視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。 視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。 這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。 數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些

        視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。

        視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。

        這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。

        數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些數據存放在原來的表中。

        使用視圖查詢數據時,數據庫系統會從原來的表中取出對應的數據。

        視圖中的數據依賴于原來表中的數據,一旦表中數據發生改變,顯示在視圖中的數據也會發生改變。

        視圖的作用

        1.使操作簡單化,可以對經常使用的查詢定義一個視圖,使用戶不必為同樣的查詢操作指定條件

        2.增加數據的安全性,通過視圖,用戶只能查詢和修改指定的數據。

        3.提高表的邏輯獨立性,視圖可以屏蔽原有表結構變化帶來的影響。

        總而言之,使用視圖的大部分情況是為了保障數據安全性,提高查詢效率

        參考表:

        創建視圖的語法

        代碼如下:


        CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]
        VIEW 視圖名 [(屬性清單)]
        AS SELECT 語句
        [WITH [CASCADED|LOCAL] CHECK OPTION];


        ALGORITHM表示視圖選擇的算法(可選參數)

          UNDEFINED:MySQL將自動選擇所要使用的算法
          MERGE:將視圖的語句與視圖定義合并起來,使得視圖定義的某一部分取代語句的對應部分
          TEMPTABLE:將視圖的結果存入臨時表,然后使用臨時表執行語句

        視圖名表示要創建的視圖的名稱

        屬性清單表示視圖中的列名,默認與SELECT查詢結果中的列名相同(可選參數)

        WITH CHECK OPTION表示更新視圖時要保證在該試圖的權限范圍之內(可選參數)

          CASCADED:更新視圖時要滿足所有相關視圖和表的條件
          LOCAL:更新視圖時,要滿足該視圖本身定義的條件即可

        tips:創建試圖時最好加上WITH CASCADED CHECK OPTION參數,這種方式比較嚴格

           可以保證數據的安全性


        視圖操作
        在單表上創建視圖

        代碼如下:


        mysql> CREATE VIEW work_view(ID,NAME,ADDR) AS SELECT id,name,address FROM work;
        Query OK, 0 rows affected (0.05 sec)


        此處work_view為視圖名,后面括號內的參數代表視圖中的列

        AS表示將后面SELECT 語句中的查詢結果賦給前面的視圖中

        在多表上創建視圖

        代碼如下:


        mysql> 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;
        Query OK, 0 rows affected (0.02 sec)


        在多表中創建視圖需要兩表有指定聯系,如上面的work.id=salary.id


        SELECT查詢視圖

        代碼如下:


        mysql> SELECT * FROM work_view;
        +----+--------+--------+
        | ID | NAME | ADDR |
        +----+--------+--------+
        | 1 | 張三 | 北京 |
        | 2 | 李四 | 上海 |
        | 3 | 王五 | 湖南 |
        | 4 | 趙六 | 重慶 |
        +----+--------+--------+
        rows in set (0.00 sec)


        此處的SELECT語句用法和其他表中的用法一樣

        別忘了,視圖也是一張表,只不過它是虛擬的


        DESCRIBE查看視圖基本信息

        代碼如下:


        mysql> DESCRIBE work_view;
        +-------+-------------+------+-----+---------+-------+
        | Field | Type | Null | Key | Default | Extra |
        +-------+-------------+------+-----+---------+-------+
        | ID | int(10) | NO | | NULL | |
        | NAME | varchar(20) | NO | | NULL | |
        | ADDR | varchar(50) | YES | | NULL | |
        +-------+-------------+------+-----+---------+-------+
        rows in set (0.00 sec)


        與以往一樣,此處的DESCRIBE可以簡寫為DESC


        SHOW TABLE STATUS查看視圖基本信息

        代碼如下:


        mysql> SHOW TABLE STATUS LIKE 'work_view'\G
        *************************** 1. row ***************************
        Name: work_view
        Engine: NULL
        Version: NULL
        Row_format: NULL
        Rows: NULL
        Avg_row_length: NULL
        Data_length: NULL
        Max_data_length: NULL
        Index_length: NULL
        Data_free: NULL
        Auto_increment: NULL
        Create_time: NULL
        Update_time: NULL
        Check_time: NULL
        Collation: NULL
        Checksum: NULL
        Create_options: NULL
        Comment: VIEW
        row in set (0.00 sec)


        此處大部分信息顯示為NULL,更加說明了視圖只是一張虛擬表

        如果使用SHOW TABLE STATUS查看一張真實表,結果就不會如此

        SHOW CREATE VIEW查看視圖詳細信息

        代碼如下:


        mysql> SHOW CREATE VIEW work_view\G
        *************************** 1. row ***************************
        View: work_view
        Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `work_view` AS select `work`.`id` AS `ID`,`work`.`name` AS `NAME`,`work`.`address` AS `ADDR` from `work`
        character_set_client: utf8
        collation_connection: utf8_general_ci
        row in set (0.00 sec)


        尼瑪好復雜,這里包含了視圖的各個屬性

        在views表中查看視圖詳細信息

        代碼如下:


        mysql> SELECT * FROM information_schema.views\G
        *************************** 1. row ***************************
        TABLE_CATALOG: def
        TABLE_SCHEMA: person
        TABLE_NAME: work_view
        VIEW_DEFINITION: select `person`.`work`.`id` AS `ID`,`person`.`work`.`name` AS `NAME`,`person`.`work`.`address` AS `ADDR` from `person`.`work`
        CHECK_OPTION: NONE
        IS_UPDATABLE: YES
        DEFINER: root@localhost
        SECURITY_TYPE: DEFINER
        CHARACTER_SET_CLIENT: utf8
        COLLATION_CONNECTION: utf8_general_ci
        *************************** 2. row ***************************
        TABLE_CATALOG: def
        TABLE_SCHEMA: person
        TABLE_NAME: work_view2


        information_schema.views表內包含了所有的視圖定義信息

        不過,通常使用SHOW CREATE VIEW 更加方便

        這里信息太長,沒有完全列舉……


        修改視圖

        修改視圖是指修改數據庫中已存在的表的定義,當基本表的某些字段發生改變時,可以通過修改視圖來保持視圖和基本表之間一致
        CREATE OR REPLACE VIEW語句修改視圖

        代碼如下:


        mysql> CREATE OR REPLACE ALGORITHM=TEMPTABLE
        -> VIEW work_view(ID,NAME)
        -> AS SELECT id,name FROM work;
        Query OK, 0 rows affected (0.03 sec)


        話說,CREATE OR REPLACE語句非常靈活

        在視圖存在的情況下可對視圖進行修改,視圖不在的情況下可創建視圖

        其基本用法和CREATE VIEW 幾乎一致


        ALTER語句修改視圖

        代碼如下:


        mysql> ALTER VIEW work_view2(NAME,SALARY,ADDR)
        -> AS SELECT name,salary,address FROM work,salary
        -> WHERE work.id=salary.id;
        Query OK, 0 rows affected (0.03 sec)


        我這把名字、工資和地址當做字段修改了視圖

        如果是真實的話,對小偷來說極為方便

        更新視圖

        更新視圖是指通過視圖來插入、更新和刪除表中的數據,以為視圖是一個虛擬表,其中木有數據

        通過視圖更新時,都是轉換到基本表來更新

        代碼如下:


        mysql> UPDATE work_view2 SET SALARY=5899.00 WHERE NAME='張三';
        Query OK, 1 row affected (0.03 sec)
        Rows matched: 1 Changed: 1 Warnings: 0


        此處語句等價于

        代碼如下:


        mysql> UPDATE salary SET salary=5899.00 WHERE id=1;


        tips:視圖中雖然可以更新數據,但是有很多限制

           一般情況下,最好將視圖作為查詢數據的虛擬表,而不要通過視圖更新數據


        刪除視圖

        刪除視圖是指刪除數據庫中已存在的視圖,刪除視圖時,只能刪除視圖的定義,不會刪除數據

        代碼如下:


        mysql> DROP VIEW IF EXISTS work_view;
        Query OK, 0 rows affected (0.00 sec)

        mysql> DROP VIEW work_view2;
        Query OK, 0 rows affected (0.01 sec)


        這里的IF EXIST參數用來判斷視圖是否存在,也可以不寫

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Mysql基礎篇之視圖

        Mysql基礎篇之視圖:視圖是從一個或多個表中導出來的表,是一種虛擬存在的表。 視圖就像一個窗口,通過這個窗口可以看到系統專門提供的數據。 這樣,用戶可以不用看到整個數據庫中的數據,而之關心對自己有用的數據。 數據庫中只存放了視圖的定義,而沒有存放視圖中的數據,這些
        推薦度:
        標簽: 一個 多個 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产精品免费看久久久久| 国产成人免费爽爽爽视频| 亚洲精品99久久久久中文字幕 | 免费羞羞视频网站| 亚洲国产亚洲综合在线尤物| 99精品一区二区免费视频| 亚洲综合区图片小说区| 国产精品免费精品自在线观看| 久久精品国产亚洲av麻豆色欲| 国产黄色免费网站| 亚洲综合激情五月丁香六月| 最好免费观看韩国+日本| 色婷婷亚洲一区二区三区| 亚洲免费无码在线| 久久免费视频99| 亚洲国产成人在线视频| 女人被弄到高潮的免费视频| 国产成人va亚洲电影| 国产成人综合亚洲亚洲国产第一页| 国产一级片免费看| 亚洲国产模特在线播放| 日韩免费无砖专区2020狼| 免费一级毛片在线播放视频免费观看永久 | 亚洲看片无码在线视频| 四虎永久成人免费影院域名| 国产日韩精品无码区免费专区国产| 亚洲日韩精品无码专区网址| 131美女爱做免费毛片| 亚洲欧美熟妇综合久久久久| 亚洲色偷偷狠狠综合网| 久久九九AV免费精品| 亚洲中文字幕久久精品蜜桃| 亚洲精品国产高清嫩草影院| 精品一区二区三区免费毛片爱| 国产精品亚洲自在线播放页码| 四虎永久成人免费| 美丽姑娘免费观看在线观看中文版 | 久久夜色精品国产噜噜噜亚洲AV| 在线免费视频一区| 国产中文字幕在线免费观看| 亚洲熟妇AV乱码在线观看|