好程式設計師Java教程:SQL語言之檢視
好程式設計師 Java 教程: SQL 語言之檢視, 前言:
本章我們將學習 MySQL 中的檢視,檢視是資料庫中的重要元件,本文將從檢視是什麼,檢視的作用,建立和使用檢視以及修改檢視這些方面講解檢視。
檢視是什麼
檢視 View 是一種虛擬的表,本身不儲存資料,內部封裝了一條 SELECT 語句,資料來源於查詢的一張或多張實際資料的表。
檢視的結構和真實的表相同,也是有行和列組成,在檢視上也可以進行增刪改查的操作。
檢視的作用
檢視主要用於查詢,使用檢視的優點是:
1) 簡單
檢視可以將複雜的查詢語句進行封裝,使用者使用時不需要關心表的結構、連線關係、篩選條件、分組和排序等等,只需要對檢視進行簡單的查詢。
2) 安全
建立檢視時,可以篩選掉一些不希望使用者看到的行和列,也可以給檢視設定訪問許可權,讓不同級別的使用者看到不同的檢視,從而提高資料庫的資料安全性。
檢視的語法
建立檢視
create view 檢視名
as
select 語句 ;
刪除檢視
drop view 檢視名 ;
修改檢視
replace view 檢視名
as
select 語句 ;
使用檢視
selec * from 檢視名 [where 條件 ];
程式碼案例:
- -- 在單表上建立檢視 查詢女同學的檢視
- create view view_female_stu
- as
- select * from tb_student where stu_gender = ' 女 ';
- -- 使用檢視
- select * from view_female_stu
- -- 使用連線查詢建立檢視,查詢學生姓名、課程和分數
- create view view_stu_score
- as
- select s.stu_id 學號 , s.stu_name 姓名 ,c.course_name 課程 ,sc.score 分數
- from tb_student s left join tb_score sc on s.stu_id = sc.stu_id
- left join tb_course c on c.course_id = sc.course_id;
- -- 使用檢視
- select * from view_stu_score where 分數 > 80;
注意:在建立檢視時,查詢語句中的別名會作為檢視的列名
檢視的修改
檢視主要用於查詢,但是也可以執行 insert 、 update 和 delete 語句,結果會對映到檢視關聯的實際表中。
- -- 更新學生的年齡
- update view_female_stu set stu_age = stu_age + 3 where stu_id = 4;
執行上面程式碼的結果是,實際的 tb_student 表被更新了。
- -- 更新學生分數
- update view_stu_score set 分數 = 83 where 學號 = 1;
執行上面程式碼的結果是,更新失敗,出現錯誤:
為什麼有的檢視可以更新,而有的會失敗呢?
下面情況的檢視不可以執行insert 、 update 和 delete 操作:
1)多表連線
2) 包含 distinct
3)包含聚合函式
4) 包含 group by
5) 包含 order by
6) 包含 union 、 union all
7)包含子查詢等
所以對檢視執行 DML 操作的限制條件還是很多的,大多數情況下我們還是對檢視進行查詢,如果需要 DML 操作還是建議對實際表進行操作。
總結
檢視是一種虛擬的表,資料來源於從實際表中查詢的結果,它可以簡化查詢操作,以及提高資料庫的安全性,本章學習了檢視的建立和使用語法,檢視可以修改但是有比較多的限制條件,一般還是用於查詢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2648337/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java分享SQL語言之索引程式設計師JavaSQL索引
- 好程式設計師Java教程分享Java語法程式設計師Java
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師Java教程分享Java的兩種跳轉語句程式設計師Java
- 好程式設計師Java教程分享List介面程式設計師Java
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Java教程分享Java開發主流框架程式設計師Java框架
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- 好程式設計師Java教程分享Jmeter效能測試程式設計師JavaJMeter
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 好程式設計師分享MyBatis之動態SQL語句程式設計師MyBatisSQL
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- 好程式設計師Java教程分享Java中this的幾種用法程式設計師Java
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java教程之Java面試寶典Java IO篇程式設計師Java面試
- 好程式設計師Java教程分享SQL資料庫不同的最佳化方法程式設計師JavaSQL資料庫
- 好程式設計師Java教程分享Java物件導向與程式導向程式設計師Java物件
- 好程式設計師Java分享MySQL之SQL入門(一)程式設計師JavaMySql
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 好程式設計師Java教程系列之異常定義程式設計師Java
- 好程式設計師Java教程分享XML常見面試題程式設計師JavaXML面試題
- 好程式設計師Java教程分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java教程解讀JDBC是什麼程式設計師JavaJDBC
- 好程式設計師雲端計算學習路線分享檢視程式process程式設計師
- 好程式設計師Java教程分享Java實習生面試題集錦程式設計師Java面試題
- 好程式設計師Java教程分享Java的4大核心基礎程式設計師Java
- 好程式設計師Java教程Java動態代理機制詳解程式設計師Java
- 好程式設計師Java教程分享如何系統的學習Java程式設計師Java
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- 好程式設計師Java教程分享Java的五大特點程式設計師Java
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- 好程式設計師教程分享Java註解和運用註解程式設計程式設計師Java
- 好程式設計師web前端教程:字串程式設計師Web前端字串
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java