亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中數據視圖操作詳解

 更新時間:2022年08月05日 08:33:53   作者:遇安.112  
視圖是從一個或多個表(或視圖)導出的表。視圖一經定義,就可以像表一樣被查詢、修改、刪除和更新。本文就來和大家講講MySQL數據視圖的一些基本操作,需要的可以參考一下

1.視圖概述

視圖是從一個或多個表(或視圖)導出的表。視圖與表(有時為與視圖區(qū)別,也稱表為基本表)不同,視圖是一個虛表,即視圖所對應的數據不進行實際存儲,數據庫中只存儲視圖的定義,對視圖的數據進行操作時,系統根據視圖的定義去操作與視圖相關聯的基本表。

視圖一經定義,就可以像表一樣被查詢、修改、刪除和更新。使用視圖有下列優(yōu)點:

1、為用戶集中數據,簡化用戶的數據查詢和處理。有時用戶所需要的數據分散在多個表中,定義視圖可將它們集中在一起,從而方便用戶的數據查詢和處理。

2、屏蔽數據庫的復雜性。用戶不必了解復雜的數據庫中的表結構,并且數據庫表的更改也不影響用戶對數據庫的使用。

3、簡化用戶權限的管理。只須授予用戶使用視圖的權限,而不必指定用戶只能使用表的特定列,也增加了安全性。

4、便于數據共享。各用戶不必都定義和存儲自己所需的數據,可共享數據庫的數據,這樣同樣的數據只需存儲一次。

5、可以重新組織數據以便輸出到其他應用程序中。

使用視圖時,要注意下列事項:

1、 在默認情況下,將在當前數據庫創(chuàng)建新視圖。要想在給定數據庫中明確創(chuàng)建視圖,創(chuàng)建時應將名稱指定為db_name.view_name

2、視圖的命名必須遵循標志符命名規(guī)則,不能與表同名,且對每個用戶視圖名必須是唯一的,即對不同用戶,即使是定義相同的視圖,也必須使用不同的名字。

3、不能把規(guī)則、默認值或觸發(fā)器與視圖相關聯

4、不能在視圖上建立任何索引,包括全文索引

5、視圖中使用SELECT語句有以下的限制:

5.1、定義視圖的用戶必須對所參照的表或視圖有查詢(即可執(zhí)行SELECT語句)的權限,在定義中引用的表或視圖必須存在

5.2、不能包含FROM子句中的子查詢,不能引用系統或用戶變量,不能引用預處理語句參數

5.3、在視圖定義中允許使用ORDER BY子句,但是,如果從特定視圖進行了選擇,而該視圖使用了具有自己ORDER BY的語句,則視圖定義中的ORDER BY將被忽略。

1.1創(chuàng)建視圖

視圖的創(chuàng)建語法格式:

CREATE [ OR REPLACE ] VIEW 視圖名 [ ( 列名列表 ) ]
AS SELECT 語句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

例:創(chuàng)建Bookstore數據庫上的jsj_sell視圖,包括計算機類圖書銷售的訂單號、圖書編號、書名等情況。其中要保證對該視圖的訂單修改都要符合計算機類這個條件 

CREATE OR REPLACE VIEW jsj_sell
AS
SELECT 訂單號,Sell.圖書編號,書名
FROM Book,Sell
WHERE Book.圖書編號=Sell.圖書編號
AND Book.圖書類別='計算機'
WITH CHECK OPTION;

例:創(chuàng)建Bookstore數據庫中計算機類圖書銷售視圖sale_avg,包括書名(在視圖中列名為name)和該圖書的平均訂購冊數(在視圖中列名為sale_avg) 

CREATE VIEW sale_avg(name,sale_avg)
AS 
SELECT 書名,avg(訂購冊數)
FROM jsj_sell
GROUP BY 書名;

上面創(chuàng)建了計算機類圖書銷售視圖jsj_sell,可以直接從jsj_sell視圖中查詢信息生成新視圖。

1.2視圖的查詢

視圖定義后,就可以像查詢基本表那樣對視圖進行查詢

例:在視圖jsj_sell中查找計算機類圖書的訂單號和訂購冊數

SELECT 訂單號,訂購冊數
FROM jsj_sell;

例:查找平均訂購冊數大于5本的訂購客戶的身份證號和平均訂購冊數

1、創(chuàng)建客戶平均訂購視圖kh_avg,包括客戶身份證號和平均訂購冊數

CREATE VIEW kh_avg(sfz,order_avg)
AS
SELECT 身份證號,AVG(訂購冊數)
FROM Sell
GROUP BY 身份證號;

2、對kh_avg視圖進行查詢

SELECT *
FROM kh_avg
WHERE order_avg>5;

注意:使用視圖查詢時,若其關聯的基本表中添加了新字段,則該視圖將不包含新字段。如果與視圖相關聯的表或視圖被刪除,則該視圖將不能再使用。

2.操作視圖

2.1通過視圖操作數據

2.1.1可更新視圖

要通過視圖更新基本表數據,必須保證視圖是可更新視圖,即可以在INSET、UPDATE或DELETE等語句中使用它們。對于可更新的視圖,在視圖中的行和基表中的行之間必須具有一對一的關系。有一些特定的其他結構,這類結構會使得視圖不可更新。若視圖包含以下結構中的任何一種,其就是不可更新的:

1、聚合函數

2、DISTINCT關鍵字

3、GROUP BY子句

4、ORDER BY子句

5、HAVING子句

6、UNION運算符

7、位于選擇列表中的子查詢

8、FROM子句中包含多個表

9、SELECT語句中引用了不可更新視圖

10、WHERE子句中的子查詢,引用FROM子句中的表

MySQL在多表上創(chuàng)建視圖方法

2.1.2插入數據

當使用視圖插入數據時,如果在創(chuàng)建視圖時加上WITH CHECK OPTION子句,WITH CHECK OPTION子句會在更新數據時檢查新數據是否符合視圖定義中WHERE子句的條件。

WITH CHECK OPTION子句只能和可更新視圖一起使用。

例:創(chuàng)建視圖jsj_book,視圖中包含計算機類圖書的信息,并向jsj_book視圖中插入一條記錄:('IS-01','計算機','計算機基礎')

1、創(chuàng)建視圖jsj_book 

CREATE OR REPLACE VIEW jsj_book
AS
SELECT *
FROM Book
WHERE 圖書類別='計算機'
WITH CHECK OPTION;

2、插入記錄 

INSERT INTO jsj_book
VALUES('IS-01','計算機','計算機基礎');

當視圖所依賴的基本表有多個時,不能向該視圖插入數據,因為這將會影響多個基本表。

對INSERT語句還有一個限制:SELECT語句中必須包含FROM子句中指定表的所有不能為空的列。例如,若jsj_book視圖定義時不加上“書名”字段,則插入數據時會出錯。

2.1.3修改數據

使用UPDATE語句可以實現通過視圖修改基本表數據。

例:將jsj_sell視圖中的圖書編號為IS-01的書名改為“MySQL基礎”

UPDATE jsj_sell
SET 書名='MySQL基礎'
WHERE 圖書編號='IS-01';

2.1.4刪除數據

如果視圖來源于單個基本表,可以使用DELETE語句通過視圖來刪除基本表數據,對于依賴多個基本表的視圖,不能使用DELETE語句。

例:刪除jsj_book中“中國青年出版社”的記錄

DELETE FROM jsj_book
WHERE 出版社='中國青年出版社';

2.2修改視圖定義

可以使用ALTER VIEW語句對已有視圖的定義進行修改

語法格式:

ALTER VIEW 視圖名[ ( 列名列表 ) ]
AS select語句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

例:將jsj_book視圖修改為只包含計算機類圖書的圖書編號、書名和單價

ALTER VIEW jsj_book
AS
SELECT 圖書編號,書名,單價
FROM Book
WHERE 圖書類別='計算機';

2.3刪除視圖

語法格式:DROP VIEW [ IF EXISTS ] 視圖名1 [, 視圖名2 ]...

若聲明了IF EXISTS,則視圖不存在的話也不會報錯。使用DROP VIEW 一次可以刪除多個視圖。例:一次性刪除jsj_book和jsj_sell

DROP VIEW jsj_book,jsj_sell;

到此這篇關于MySQL中數據視圖操作詳解的文章就介紹到這了,更多相關MySQL數據視圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Windows(x86,64bit)升級MySQL 5.7.17免安裝版的詳細教程

    Windows(x86,64bit)升級MySQL 5.7.17免安裝版的詳細教程

    這篇文章主要介紹了Windows(x86,64bit)升級MySQL 5.7.17免安裝版的詳細教程,需要的朋友可以參考下
    2017-02-02
  • MySQL日志設置及查看方法

    MySQL日志設置及查看方法

    這篇文章主要介紹了MySQL日志設置及查看方法,需要的朋友可以參考下
    2017-05-05
  • MySQL之存儲引擎使用及說明

    MySQL之存儲引擎使用及說明

    這篇文章主要介紹了MySQL之存儲引擎使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解mysql解壓縮版安裝步驟

    詳解mysql解壓縮版安裝步驟

    這篇文章主要介紹了mysql解壓縮版安裝步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • DBeaver連接本地MySQL并創(chuàng)建數據庫/表的基礎操作教程

    DBeaver連接本地MySQL并創(chuàng)建數據庫/表的基礎操作教程

    DBeaver是一款功能強大的數據庫管理工具,支持創(chuàng)建多種數據庫,包括達夢數據庫,這篇文章主要給大家介紹了關于DBeaver連接本地MySQL并創(chuàng)建數據庫/表的基礎操作教程,需要的朋友可以參考下
    2024-02-02
  • MYSQL將表名稱修改成大寫的存儲過程

    MYSQL將表名稱修改成大寫的存儲過程

    這篇文章主要為大家詳細介紹了MYSQL將表名稱修改成大寫的存儲過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • MySQL中WITH用法小結

    MySQL中WITH用法小結

    WITH子句是MySQL中的一種SQL結構,本文主要介紹了MySQL中WITH用法小結,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 解決MYSQL連接端口被占引入文件路徑錯誤的問題

    解決MYSQL連接端口被占引入文件路徑錯誤的問題

    下面小編就為大家?guī)硪黄鉀QMYSQL連接端口被占引入文件路徑錯誤的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • MySQL?Flink實時流處理的核心技術之窗口機制

    MySQL?Flink實時流處理的核心技術之窗口機制

    Flink是一款流處理框架,窗口機制是其核心技術之一。Flink的窗口機制可以將無限的數據流劃分為有限的窗口,并對窗口內的數據進行處理。Flink的窗口機制支持時間、計數、會話等多種窗口類型,并且可以在不同的窗口之間進行流轉換和數據聚合,是實時流處理中非常重要的技術
    2023-05-05
  • sqlite3遷移mysql可能遇到的問題集合

    sqlite3遷移mysql可能遇到的問題集合

    這篇文章主要給大家介紹了關于sqlite3遷移mysql可能遇到的問題集合,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07

最新評論