mysql 內置功能 視圖 使用
阿新 • • 發佈:2018-11-13
重復 多表 註意 oot set -- 必須 tables ted
#語法:CREATE VIEW 視圖名稱 AS SQL語句
增加了一張表
mysql> create view course2teacher as select * from course inner join teacher on course.teacher_id=teacher.tid; Query OK, 0 rows affected (0.28 sec) mysql> show tables; +----------------+ | Tables_in_db2 | +----------------+ | class | | course || course2teacher | | score | | student | | teacher | +----------------+ 6 rows in set (0.00 sec)
創建一張表 都會在mysql 指定數據庫目錄裏面添加 表結構文件,表數據文件
而剛才用視圖創建的course2teacher表只有表結構,沒有表數據
因為他的數據來自於其他表,查詢出來的
[root@mysql db2]# pwd /data/mysql/db2 [root@mysql db2]# ll 總用量 612 -rw-rw----. 1 mysql mysql 8594 11月 3 23:33 class.frm-rw-rw----. 1 mysql mysql 98304 11月 3 23:33 class.ibd -rw-rw----. 1 mysql mysql 906 11月 11 02:49 course2teacher.frm -rw-rw----. 1 mysql mysql 8632 11月 3 23:33 course.frm -rw-rw----. 1 mysql mysql 114688 11月 3 23:33 course.ibd -rw-rw----. 1 mysql mysql 61 11月 3 23:33 db.opt -rw-rw----. 1 mysql mysql 8668 11月 3 23:33 score.frm-rw-rw----. 1 mysql mysql 131072 11月 3 23:33 score.ibd -rw-rw----. 1 mysql mysql 8662 11月 3 23:33 student.frm -rw-rw----. 1 mysql mysql 114688 11月 3 23:33 student.ibd -rw-rw----. 1 mysql mysql 8590 11月 3 23:33 teacher.frm -rw-rw----. 1 mysql mysql 98304 11月 3 23:33 teacher.ibd
視圖創建的虛擬表可以當做真正的表來用
mysql> select * from course2teacher; +-----+--------+------------+-----+-----------------+ | cid | cname | teacher_id | tid | tname | +-----+--------+------------+-----+-----------------+ | 1 | 生物 | 1 | 1 | 張磊老師 | | 2 | 物理 | 2 | 2 | 李平老師 | | 4 | 美術 | 2 | 2 | 李平老師 | | 3 | 體育 | 3 | 3 | 劉海燕老師 | +-----+--------+------------+-----+-----------------+ 4 rows in set (0.37 sec)
每次執行select * from course2teacher;語句 都會觸發 select * from course inner join teacher on course.teacher_id=teacher.tid; 運行
把結果當做course2teacher這種虛擬表
不用重復寫表
#!!!註意註意註意:
#1. 使用視圖以後就無需每次都重寫子查詢的sql,但是這麽效率並不高,還不如我們寫子查詢的效率高
#2. 而且有一個致命的問題:視圖是存放到數據庫裏的,如果我們程序中的sql過分依賴於數據庫中存放的視圖,
那麽意味著,一旦sql需要修改且涉及到視圖的部分,則必須去數據庫中進行修改。
視圖是用來方便查的 ,視圖不應該改
單表不用視圖,
多表連接表查詢時候才用到視圖
我們不應該修改視圖中的記錄,而且在涉及多個表的情況下是根本無法修改視圖中的記錄的
刪除視圖
語法:DROP VIEW 視圖名稱 DROP VIEW course2teacher
mysql 內置功能 視圖 使用