最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL視圖的概念、創(chuàng)建、查看、刪除和修改詳解

 更新時間:2022年08月16日 14:30:15   作者:霸道小明  
視圖是指計算機數(shù)據(jù)庫中的視圖,是一個虛擬表,其內(nèi)容由查詢定義,下面這篇文章主要給大家介紹了關(guān)于MySQL視圖的概念、創(chuàng)建、查看、刪除和修改的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一、什么是視圖

小學(xué)的時候,每年都會舉辦一次抽考活動,意思是從每一個班級里面篩選出幾個優(yōu)秀的同學(xué)去參加考試。這時候很多班級篩選出來的這些同學(xué)就可以臨時組成一個班級,如果我們把每一個班級都當(dāng)做是一張真實的表,這個臨時的班級在數(shù)據(jù)庫里就可以當(dāng)做一個視圖,也就是說,這個臨時的班級其實不是真實存在的,當(dāng)考試過后,這些學(xué)生還是各回各家各找各媽。。。。 

視圖是從一個或多個表中導(dǎo)出來的表,是一種虛擬存在的表。視圖就像一個窗口,通過這個窗口可以看到系統(tǒng)專門提供的數(shù)據(jù),這樣用戶可以不看整個數(shù)據(jù)庫表中的數(shù)據(jù),而只關(guān)心對自己有用的數(shù)據(jù)。視圖可以使用戶的操作更方便,而且可以保障數(shù)據(jù)庫系統(tǒng)的安全性。 

二、創(chuàng)建視圖

1.在單表上創(chuàng)建視圖

雖然視圖可以被看成是一種虛擬表,但是其物理上是不存在的,即MySQL并沒有專門的位置為視圖存儲數(shù)據(jù)。根據(jù)視圖的概念可以發(fā)現(xiàn)其數(shù)據(jù)來源于查詢語句,因此創(chuàng)建視圖的基本語法為: 

 CREATE[OR REPLACE] VIEW viewname[(columnlist)]   
    AS SELECT statement  
CREATE表示創(chuàng)建新的視圖;REPLACE表示替換已經(jīng)創(chuàng)建的視圖;[(columnlist)]表示可以顯示的指出視圖中有哪些列(必須和select語句對應(yīng));viewname為視圖的名稱;columnlist為屬性列;SELECT statement表示SELECT語句; 

注意! 創(chuàng)建視圖需要登陸用戶有相應(yīng)的權(quán)限,查看權(quán)限方法: 

select user,Select_priv,Create_view_priv from mysql.user;

例如在下面學(xué)生表上面創(chuàng)建視圖

創(chuàng)建視圖SQL語句示例

create view view_student 
    as select id,name ,class_id,sex from student;

查看視圖

通過視圖可以檢索數(shù)據(jù)

視圖本身相當(dāng)于一個窗口,通過這個窗口我們也可以修改數(shù)據(jù)

update view_student set name='小王王' where name='小王';

2.在多表上創(chuàng)建視圖

CREATE[OR REPLACE] VIEW viewname[columnlist]   
    AS SELECT statement 
  • CREATE表示創(chuàng)建新的視圖;
  • REPLACE表示替換已經(jīng)創(chuàng)建的視圖;
  • viewname為視圖的名稱;
  • columnlist為屬性列;
  • SELECT statement表示SELECT語句。與單表上創(chuàng)建視圖不同的是,SELECT子句是涉及到多表的聯(lián)合查詢語句。 

例如在下面教師表和學(xué)生表之間創(chuàng)建視圖

SQL語句 (視圖不允許有列名重復(fù),所以這里的class.id和student.id要起別名

create view view_student_teacher 
    as select class.id as teacher_id,teacher,class,student.id,student.name,sex 
    from class 
        left join student on class.id=student.class_id;

三、查看視圖 

創(chuàng)建完視圖后,像表一樣,我們經(jīng)常需要查看視圖信息。在MySQL中,有許多可以實現(xiàn)查看視圖的語句,如DESCRIBE、SHOW TABLES、SHOW CREATE VIEW。如果要使用這些語句,首先要確保擁有SHOW VIEW的權(quán)限。 

1.使用DESCRIBE | DESC語句查看視圖基本信息

視圖也是一張表,只是這張表比較特殊,是一張?zhí)摂M的表,所以同樣可以使用DESCRIBE語句來查看視圖的基本定義。DESCRIBE語句查看視圖的語法如下:

DESCRIBE | DESC viewname;

例如查看上面創(chuàng)建的視圖

2.使用SHOW TABLES語句查看視圖基本信息

從MySQL 5.1版本開始,執(zhí)行SHOW TABLES語句時不僅會顯示表的名字,同時也會顯示視圖的名字。 

show tables

3.使用 show create view/table 語句查看視圖創(chuàng)建信息

SHOW CREATE TABLE|VIEW viewname;

四、更新視圖數(shù)據(jù) 

更新視圖是指通過視圖來插入(INSERT)、更新(UPDATE)和刪除(DELETE)表中的數(shù)據(jù)。因為視圖實質(zhì)是一個虛擬表,其中沒有數(shù)據(jù),通過視圖更新時都是轉(zhuǎn)換到基本表更新。更新視圖時,只能更新權(quán)限范圍內(nèi)的數(shù)據(jù),超出范圍就不能更新了。

update view_student set name='小王' where name='小王王';

不能更新的情況:

  • 視圖中包含SUM()、COUNT()、MAX()和MIN()等函數(shù);
  • 視圖中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等關(guān)鍵字;
  • 視圖對應(yīng)的表存在沒有默認值的列,而且該列沒有包含在視圖里;
  • 包含子查詢的視圖;
  • 其他特殊情況;

例如更改view_student_teacher時

五、修改視圖 

修改視圖是指修改數(shù)據(jù)庫中存在的視圖,當(dāng)基本表的某些字段發(fā)生變化的時候,可以通過修改視圖來保持與基本表的一致性。ALTER語句來修改視圖。 

ALTER VIEW viewname[columnlist]   
AS SELECT statement

這個語法中的所有關(guān)鍵字和參數(shù)除了alter 外,其他都和創(chuàng)建視圖是一樣的。

例如修改視圖view_student_teacher

SQL語句示例

alter view view_student_teacher 
as select teacher,class,name,sex 
    from class 
        left join student on class.id=student.class_id;

注意,當(dāng)真實表中修改了某個存在視圖中的字段時,這個視圖也需要跟著變,否則會變成無效的視圖

例如,修改了student表中的name字段

alter table student change column name name1 varchar(64);
select * from view_student_teaccher;

這時候就需要將視圖也跟著修改

alter view view_student_teacher as select teacher,class,name1,sex 
    from class 
        left join student on class.id=student.class_id;

六、刪除視圖 

刪除視圖是指刪除數(shù)據(jù)庫中已存在的視圖。刪除視圖時,只能刪除視圖的定義,不會刪除數(shù)據(jù)。

在MySQL中,可使用DROP VIEW語句來刪除視圖,但是用戶必須擁有DROP權(quán)限。刪除視圖的語法如下:

DROP VIEW viewname [,viewnamen];
參數(shù)viewname表示所要刪除視圖的名稱,可同時指定刪除多個視圖。 

總結(jié)

到此這篇關(guān)于MySQL視圖的概念、創(chuàng)建、查看、刪除和修改的文章就介紹到這了,更多相關(guān)MySQL視圖創(chuàng)建 查看 刪除和修改內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • mysql 時間轉(zhuǎn)換函數(shù)的使用方法

    mysql 時間轉(zhuǎn)換函數(shù)的使用方法

    都是實例,大家可以參考一一寫一下
    2008-07-07
  • MySql死鎖怎么排查的方法實現(xiàn)

    MySql死鎖怎么排查的方法實現(xiàn)

    本文主要介紹了MySql死鎖怎么排查的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • windows下安裝mysql8.0.18的教程(社區(qū)版)

    windows下安裝mysql8.0.18的教程(社區(qū)版)

    本文章簡單介紹一下mysql在windows下的安裝方式,主要介紹了mysql社區(qū)版8.0.18版本,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2020-01-01
  • Sql Server數(shù)據(jù)庫遠程連接訪問設(shè)置詳情

    Sql Server數(shù)據(jù)庫遠程連接訪問設(shè)置詳情

    這篇文章主要介紹了Sql Server數(shù)據(jù)庫遠程連接訪問設(shè)置詳情,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • SQL IDENTITY_INSERT作用案例詳解

    SQL IDENTITY_INSERT作用案例詳解

    這篇文章主要介紹了SQL IDENTITY_INSERT作用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用

    MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用

    這篇文章介紹了MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • MySQL ERROR 2013 (HY000)錯誤解決方法

    MySQL ERROR 2013 (HY000)錯誤解決方法

    這篇文章主要介紹了MySQL ERROR 2013 (HY000)錯誤解決方法,錯誤提示全文ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104,需要的朋友可以參考下
    2015-01-01
  • MySQL數(shù)據(jù)庫卸載的完整步驟

    MySQL數(shù)據(jù)庫卸載的完整步驟

    這篇文章主要為大家詳細介紹了MySQL數(shù)據(jù)庫卸載的完整步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MySQL5.7更改密碼時出現(xiàn)ERROR 1054 (42S22)的解決方法

    MySQL5.7更改密碼時出現(xiàn)ERROR 1054 (42S22)的解決方法

    這篇文章主要為大家詳細介紹了MySQL5.7更改密碼時出現(xiàn)ERROR 1054 (42S22)的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Mysql中基本語句優(yōu)化的十個原則小結(jié)

    Mysql中基本語句優(yōu)化的十個原則小結(jié)

    這篇文章主要給大家總結(jié)介紹了Mysql中基本語句優(yōu)化的十個原則,通過學(xué)習(xí)與記住它們,在構(gòu)造sql時可以養(yǎng)成良好的習(xí)慣,文中介紹的相對比較詳細與簡單明了,需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-06-06

最新評論

翼城县| 陵川县| 嫩江县| 信阳市| 同仁县| 百色市| 广德县| 沾益县| 津南区| 南靖县| 德州市| 黔江区| 嘉善县| 曲水县| 新宁县| 锡林郭勒盟| 平南县| 杭州市| 化德县| 疏附县| 开封市| 辽宁省| 博白县| 清涧县| 尼玛县| 兴仁县| 海盐县| 枣阳市| 噶尔县| 盐山县| 万全县| 承德市| 五寨县| 闵行区| 翁源县| 翁牛特旗| 临高县| 惠东县| 从江县| 临漳县| 白城市|