成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL數(shù)據(jù)庫視圖的作用是什么

這篇文章主要講解了“MySQL數(shù)據(jù)庫視圖的作用是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“MySQL數(shù)據(jù)庫視圖的作用是什么”吧!

沙灣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

MySQL數(shù)據(jù)庫視圖的作用是什么

1 視圖的介紹與作用

視圖的介紹:

  • 視圖 view 是一個虛擬表,非真實存在,其 本質(zhì)是根據(jù)SQL語句獲取動態(tài)的數(shù)據(jù)集,并為其命名,用戶使用時只需要使用視圖名稱即可獲取結(jié)果集,并可以將其當(dāng)作表來使用。

  • 數(shù)據(jù)庫中只存放了視圖的定義,而并沒有存放視圖中的數(shù)據(jù)。數(shù)據(jù)還存在于原來的數(shù)據(jù)表中。

  • 使用視圖查詢數(shù)據(jù)時,數(shù)據(jù)庫系統(tǒng)會從原來的表中取出對應(yīng)的數(shù)據(jù)。因此, 視圖中的數(shù)據(jù)是依賴于原來表中數(shù)據(jù)的。當(dāng)表的數(shù)據(jù)發(fā)生改變,視圖中的數(shù)據(jù)也會隨之改變。

視圖的作用:

  • 簡化代碼,我們可以把重復(fù)使用的查詢封裝成視圖重復(fù)使用,同時可以 使復(fù)雜的查詢易于理解;

  • 更加安全,比如,如果有一張表中有很多數(shù)據(jù),很多信息不希望被其他人看到,這時就可以使用到視圖,對不同的用戶使用不同的視圖。


2 視圖的創(chuàng)建

創(chuàng)建視圖的語法如下:

create [or replace] [algorithm = {undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option]

參數(shù)說明:

  1. algorithm:表示視圖選擇的算法,可選;

  2. view_name:創(chuàng)建的視圖名稱;

  3. column_list:指定視圖中各個屬性的名詞,默認(rèn)情況下與SELECT語句中查詢的屬性相同;

  4. select_statement:表示一個完整的查詢語句,將查詢記錄導(dǎo)入視圖中;

  5. [with [cascaded | local] check option]:表示更新視圖時要保證該視圖在權(quán)限范圍之內(nèi)。


3 視圖的修改

修改視圖是指修改數(shù)據(jù)庫中已存在的表的定義。當(dāng)基本表中的某些字段發(fā)生改變時,可以通過修改視圖來保持視圖和基本表之間的一致。

語法格式:

alter view 視圖名 as select語句;

4 視圖的更新

并不是所有的視圖都可以更新??梢栽赨PDATE、DELETE或INSERT等語句中使用視圖,以更新基本表的內(nèi)容。對于可更新的視圖,在視圖中的行和基本表中的行之間必須具有一對一的關(guān)系,如果視圖包含下述結(jié)構(gòu)中的任何一種,則該視圖不可更新:

  • 聚合函數(shù)(SUM()、MIN()、MAX()等);

  • DISTINCT;

  • HAVING;

  • UNION或者UNION ALL;

  • 位于選擇列表中的子查詢;

  • JOIN;

  • FROM子句中的不可更新視圖;

  • WHERE子句中的子查詢,引用FROM子句中的表;

  • 僅使用文字值(在該情況下,沒有要更新的基本表)。

注意:
視圖中雖然可以更新數(shù)據(jù),但是有很多限制。一般情況下,最好將視圖作為查詢數(shù)據(jù)的虛擬表,而不要通過視圖更新數(shù)據(jù)。
當(dāng)真實表中修改了某個存在視圖中的字段時,視圖需要更新,否則該視圖就會變成無效視圖!


5 視圖的重命名與刪除

重命名視圖:

rename table 視圖名 to 新視圖名;

刪除視圖:

drop view if exists 視圖名;

刪除視圖時,只刪除了視圖的定義,而并不會刪除真實表中的數(shù)據(jù)

如果想同時刪除多個視圖,則使用下面的語法格式:

drop view if exists 視圖名1, 視圖名2, 視圖名3...;

6 視圖的練習(xí)

6.1 數(shù)據(jù)準(zhǔn)備

在進(jìn)行練習(xí)時可以先根據(jù)下面代碼創(chuàng)建用于練習(xí)的兩個基本表:

create table college(
    cno   int         null,
    cname varchar(20) null);
create table student(
    sid     int         null,
    name    varchar(20) null,
    gender  varchar(20) null,
    age     int         null,
    birth   date        null,
    address varchar(20) null,
    score   double      null);

兩表的基本數(shù)據(jù)如下圖所示:

MySQL數(shù)據(jù)庫視圖的作用是什么

6.2 查詢平均分最高的學(xué)校名稱

結(jié)合之前學(xué)過的知識可以 嘗試使用子查詢和連接查詢來實現(xiàn),參考代碼如下:

SELECT cname
FROM (SELECT cname, rank() over (order by avg_score desc ) item
      FROM (SELECT cname, avg(score) avg_score
            FROM student
                     JOIN college ON sid = cno
            GROUP BY cname) t) tt
WHERE item = 1;

在上述代碼中,先將student 與 college兩表關(guān)聯(lián),將關(guān)聯(lián)的查詢作為子表,并根據(jù)子表進(jìn)行平均數(shù)的排序,平均數(shù)序號為1的平均分?jǐn)?shù)最高,再以此為子表進(jìn)行子查詢,查詢出了平均分最高的學(xué)校。具體結(jié)果如下:
MySQL數(shù)據(jù)庫視圖的作用是什么

這種方式雖然能夠解決問題,但是相對復(fù)雜,不容易看懂,為了簡化代碼,我們可以將每一個子查詢創(chuàng)建為一個視圖

視圖解決方式代碼:

-- 1 視圖一,連接兩表并計算平均數(shù)
CREATE VIEW t_view AS
SELECT cname, avg(score) avg_score
FROM student
         JOIN college ON sid = cno
GROUP BY cname;

-- 2 視圖二,利用視圖一對平均分?jǐn)?shù)進(jìn)行排序標(biāo)號
CREATE VIEW tt_view AS
SELECT cname, rank() over (order by avg_score desc ) item
FROM (t_view);

-- 3 利用視圖查詢
SELECT cname
FROM (tt_view)
WHERE item = 1;

在創(chuàng)建完視圖后,如果想要查詢平均分前三名學(xué)校,則方便很多,創(chuàng)建好的視圖可以直接使用!

參考代碼及結(jié)果:

SELECT cnameFROM (tt_view)WHERE item = 1
   OR item = 2
   OR item = 3;

MySQL數(shù)據(jù)庫視圖的作用是什么

感謝各位的閱讀,以上就是“MySQL數(shù)據(jù)庫視圖的作用是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對MySQL數(shù)據(jù)庫視圖的作用是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站名稱:MySQL數(shù)據(jù)庫視圖的作用是什么
地址分享:http://jinyejixie.com/article16/pdcsdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、動態(tài)網(wǎng)站電子商務(wù)、網(wǎng)站改版網(wǎng)站營銷、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
牡丹江市| 包头市| 都兰县| 龙游县| 浮山县| 新蔡县| 措美县| 青阳县| 宁阳县| 商水县| 银川市| 贵南县| 浦北县| 河源市| 青浦区| 依安县| 新巴尔虎右旗| 南开区| 贺兰县| 河池市| 东安县| 江门市| 彩票| 泉州市| 徐水县| 防城港市| 阳朔县| 龙井市| 漾濞| 长宁区| 大埔区| 青州市| 报价| 阳江市| 陇川县| 太仆寺旗| 平罗县| 永德县| 都安| 东乌| 多伦县|