日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 視圖概念

簡單來說,視圖就是一個預定義的查詢語句。視圖在許多情況下可以當作表來使用,因此也被稱為虛擬表(Virtual Table)。

視圖與表最大的區(qū)別在于它不包含數(shù)據(jù),數(shù)據(jù)庫中只存儲視圖的定義語句。


視圖提供了一種 MySQLSELECT 語句層次的封裝,可用來簡化數(shù)據(jù)處理以及重新格式化基礎數(shù)據(jù)或保護基礎數(shù)據(jù)。

2. 視圖優(yōu)缺點

2.1 優(yōu)點

  1. 替代復雜查詢,減少復雜性。
    將復雜的查詢語句定義為視圖,然后使用視圖進行查詢,可以隱藏具體的實現(xiàn);

  2. 提供一致性接口,實現(xiàn)業(yè)務規(guī)則。
    在視圖的定義中增加業(yè)務邏輯,對外提供統(tǒng)一的接口;當?shù)讓颖斫Y(jié)構(gòu)發(fā)生變化時,只需要修改視圖接口,而不需要修改外部應用,可以簡化代碼的維護并減少錯誤;

  3. 控制對于表的訪問,提高安全性。通過視圖為用戶提供數(shù)據(jù)訪問,而不是直接訪問表;同時可以限制允許訪問某些敏感信息,例如身份證號、工資等。

2.2 缺點

  1. 不當?shù)氖褂每赡軙е滦阅軉栴}
    視圖的定義中可能包含了復雜的查詢,例如嵌套的子查詢和多個表的連接查詢,可能導致使用視圖進行查詢時性能不佳;

  2. 視圖通常用于查詢操作,可更新視圖(Updatable View)需要滿足許多限制條件。可更新視圖可以支持通過視圖對底層表進行增刪改的操作。

3. 創(chuàng)建視圖

CREATE VIEW 視圖名稱 (視圖列名1,視圖列名2AS 
SELECT語句

eg:

CREATE VIEW product_sum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*) FROM product GROUP BY product_type;

使用視圖

SELECT product_type, cnt_product FROM product_sum;

應該避免在視圖的基礎上創(chuàng)建視圖,因為多重視圖會降低 SQL 的性能;定義視圖時不要使用 ORDER BY 子句。

建議最好不要在視圖的定義中使用 ORDER BY,因為這種排序并不能保證最終結(jié)果的順序;而且可能由于不必要的排序降低查詢的性能。

4. 修改視圖

如果需要修改視圖的定義,可以刪除并重新創(chuàng)建視圖。除此之外,各種數(shù)據(jù)庫也提供了直接替換視圖定義的命令:

-- Oracle、MySQL 以及 PostgreSQL 實現(xiàn)
CREATE OR REPLACE VIEW view_nameAS select_statement;-- SQL Server 實現(xiàn)
CREATE OR ALTER VIEW view_nameAS select_statement;

其中 CREATE OR REPLACE VIEW 表示如果視圖不存在,創(chuàng)建視圖;如果視圖已經(jīng)存在,替換視圖。SQL Server 使用 CREATE OR ALTER VIEW 實現(xiàn)相同的功能。

MySQLSQL Server 還支持使用 ALTER VIEW view_name AS select_statement; 命令修改視圖的定義。
OraclePostgreSQL 中的 ALTER VIEW 命令用于修改視圖的其他屬性。

5. 刪除視圖

使用 DROP VIEW 命令可以刪除一個視圖:

DROP VIEW [IF EXISTS] view_name;

指定 IF EXISTS 選項后,刪除一個不存在的視圖時也不會產(chǎn)生錯誤。Oracle 不支持 IF EXISTS 選項。

6. 可更新視圖

可更新視圖是指通過視圖更新底層表,對于視圖的 INSERTUPDATEDELETE 等操作最終會轉(zhuǎn)換為針對底層基礎表的相應操作。可更新視圖的定義需要滿足許多限制條件,包括:

  • 不能使用聚合函數(shù)或窗口函數(shù),例如 AVGSUMCOUNT 等;
  • 不能使用 DISTINCTGROUP BYHAVING 子句;
  • 不能使用集合運算符,例如 UNIONINTERSECT 等;
  • 修改操作只能涉及單個表中的字段,不能同時修改多個表;
  • 不同數(shù)據(jù)庫實現(xiàn)的其他限制條件。

總之,對視圖的修改只有在能夠映射為對基礎表的修改時,數(shù)據(jù)庫才能執(zhí)行視圖的修改操作。

總結(jié)

以上是生活随笔為你收集整理的MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。