国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了【MySQL視圖】視圖的概念、創(chuàng)建、查看、刪除和修改。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

? 一、什么是視圖

? 二、創(chuàng)建視圖

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

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

?? 三、查看視圖?

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

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

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

? 四、更新視圖數據?

? 五、修改視圖?

? 六、刪除視圖?


一、什么是視圖

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

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

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


二、創(chuàng)建視圖

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

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

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

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

select user,Select_priv,Create_view_priv from mysql.user;

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

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

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

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

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

??? 查看視圖

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

? ? 通過視圖可以檢索數據

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

??? 視圖本身相當于一個窗口,通過這個窗口我們也可以修改數據

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

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


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

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

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

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

? ? SQL語句 (視圖不允許有列名重復,所以這里的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;

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


?三、查看視圖?

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

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

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

DESCRIBE | DESC viewname;

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

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

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

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

show tables

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

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

SHOW CREATE TABLE|VIEW   viewname;

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

四、更新視圖數據?

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

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

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

不能更新的情況:

  1. 視圖中包含SUM()、COUNT()、MAX()和MIN()等函數;
  2. 視圖中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等關鍵字;
  3. 視圖對應的表存在沒有默認值的列,而且該列沒有包含在視圖里;
  4. 包含子查詢的視圖;
  5. 其他特殊情況;

??? 例如更改view_student_teacher時

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


五、修改視圖?

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

ALTER VIEW viewname[columnlist]   
AS SELECT statement

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

????? 例如修改視圖view_student_teacher

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

? ? SQL語句示例

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

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

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

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

【MySQL視圖】視圖的概念、創(chuàng)建、查看、刪除和修改???? 這時候就需要將視圖也跟著修改

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

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


六、刪除視圖?

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

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

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

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

??????????????????????文章來源地址http://www.zghlxwxcb.cn/news/detail-472811.html

到了這里,關于【MySQL視圖】視圖的概念、創(chuàng)建、查看、刪除和修改的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包