1.視圖: 就是一張虛擬表,本質上存儲的是一對SQL的集合 -- 視圖 是一張虛擬的表 01.表示一張表的部分數據或者是多張表的綜合數據! 02.結構和數據都是建立在對真表的查詢基礎之上的! 03.視圖中存放的數據其實就是對真實表的引用! 對視圖中的數據進行添加,更新刪除都會影響到真實的表! 04. ...
1.視圖: 就是一張虛擬表,本質上存儲的是一對SQL的集合
-- 視圖 是一張虛擬的表
01.表示一張表的部分數據或者是多張表的綜合數據!
02.結構和數據都是建立在對真表的查詢基礎之上的!
03.視圖中存放的數據其實就是對真實表的引用!
對視圖中的數據進行添加,更新刪除都會影響到真實的表!
04.一個真實的表可以創建N個視圖!
05.如果視圖關聯了多表,不允許增 刪!單表可以增刪改
06.視圖一般都是使用查詢!
2.定義視圖的語法:
create view VW_stulist(VW_視圖的功能)
as
sql語句
小Tip:當多表中有同名列的時候,在視圖這個虛擬表中,只能有一列。手工指定該列是哪個表的
3.視圖的使用 和檢索基本表一樣,直接通過select
select * from VW_stulist
4.刪除視圖
drop view 視圖名
drop table
drop database
drop index
drop constraint
歸根結底:drop 刪除是結構 delete 刪除數據
5.查看所有庫所有視圖
5.1.切換到系統資料庫
use information_schema
5.2.select * from views \G;
6.查看當前庫的所有視圖
show tables status where comment='view'
7.視圖註意事項
1)視圖可以查詢多表數據
2)視圖可以嵌套
3)update,insert,delete不能封裝成視圖內容,通過圖形化界面可以操作數據(操作視圖數據,影響的是基本表)。
4)刪除視圖數據的時候,有一定的限定,數據結果來源於多表的時候,不能刪除
-- 創建一個視圖 只獲取 學生姓名 編號 以及考試成績
CREATE VIEW view_student_result
AS
SELECT s.studentNo 學生編號,studentName 學生姓名,
studentResult 考試成績
FROM student s,result r
WHERE s.`studentNo`=r.`studentNo`
-- 查詢視圖中的內容
SELECT * FROM view_student_result
-- 查詢mysql資料庫中所有的視圖
SELECT * FROM information_schema.views;
-- 刪除視圖
DROP VIEW view_student_result;
-- 創建一個表的視圖 學生姓名,地址,手機號
CREATE VIEW view_student
AS
SELECT studentName 學生姓名,address 地址,phone 手機號
FROM student
-- 查詢視圖
SELECT * FROM view_student