首頁 > 軟體

MySQL檢視的概念、建立、檢視、刪除和修改詳解

2022-08-16 18:04:45

一、什麼是檢視

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

檢視是從一個或多個表中匯出來的表,是一種虛擬存在的表。檢視就像一個視窗,通過這個視窗可以看到系統專門提供的資料,這樣使用者可以不看整個資料庫表中的資料,而只關心對自己有用的資料。檢視可以使使用者的操作更方便,而且可以保障資料庫系統的安全性。 

二、建立檢視

1.在單表上建立檢視

雖然檢視可以被看成是一種虛擬表,但是其物理上是不存在的,即MySQL並沒有專門的位置為檢視儲存資料。根據檢視的概念可以發現其資料來源於查詢語句,因此建立檢視的基本語法為: 

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

注意! 建立檢視需要登陸使用者有相應的許可權,檢視許可權方法: 

select user,Select_priv,Create_view_priv from mysql.user;

例如在下面學生表上面建立檢視

建立檢視SQL語句範例

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

檢視檢視

通過檢視可以檢索資料

檢視本身相當於一個視窗,通過這個視窗我們也可以修改資料

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

2.在多表上建立檢視

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

例如在下面教師表和學生表之間建立檢視

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中,有許多可以實現檢視檢視的語句,如DESCRIBE、SHOW TABLES、SHOW CREATE VIEW。如果要使用這些語句,首先要確保擁有SHOW VIEW的許可權。 

1.使用DESCRIBE | DESC語句檢視檢視基本資訊

檢視也是一張表,只是這張表比較特殊,是一張虛擬的表,所以同樣可以使用DESCRIBE語句來檢視檢視的基本定義。DESCRIBE語句檢視檢視的語法如下:

DESCRIBE | DESC viewname;

例如檢視上面建立的檢視

2.使用SHOW TABLES語句檢視檢視基本資訊

從MySQL 5.1版本開始,執行SHOW TABLES語句時不僅會顯示錶的名字,同時也會顯示檢視的名字。 

show tables

3.使用 show create view/table 語句檢視檢視建立資訊

SHOW CREATE TABLE|VIEW viewname;

四、更新檢視資料 

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

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

不能更新的情況:

  • 檢視中包含SUM()、COUNT()、MAX()和MIN()等函數;
  • 檢視中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等關鍵字;
  • 檢視對應的表存在沒有預設值的列,而且該列沒有包含在檢視裡;
  • 包含子查詢的檢視;
  • 其他特殊情況;

例如更改view_student_teacher時

五、修改檢視 

修改檢視是指修改資料庫中存在的檢視,當基本表的某些欄位發生變化的時候,可以通過修改檢視來保持與基本表的一致性。ALTER語句來修改檢視。 

ALTER VIEW viewname[columnlist]   
AS SELECT statement

這個語法中的所有關鍵字和引數除了alter 外,其他都和建立檢視是一樣的。

例如修改檢視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;

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

例如,修改了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;

六、刪除檢視 

刪除檢視是指刪除資料庫中已存在的檢視。刪除檢視時,只能刪除檢視的定義,不會刪除資料。

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

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

總結

到此這篇關於MySQL檢視的概念、建立、檢視、刪除和修改的文章就介紹到這了,更多相關MySQL檢視建立 檢視 刪除和修改內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com