mysql 內建功能 檢視介紹
阿新 • • 發佈:2018-11-13
之前的多表查詢本質是把多張有關係的表連線在一起組成一張虛擬表,從而進行查詢
檢視
檢視是一個虛擬表(非真實存在),其本質是【根據SQL語句獲取動態的資料集,併為其命名】,
使用者使用時只需使用【名稱】即可獲取結果集,可以將該結果集當做表來使用。
使用檢視我們可以把查詢過程中的臨時表摘出來,用檢視去實現,這樣以後再想操作該臨時表的資料時就無需重寫複雜的sql了,直接去檢視中查詢即可,但檢視有明顯地效率問題,並且檢視是存放在資料庫中的,如果我們程式中使用的sql過分依賴資料庫中的檢視,即強耦合,那就意味著擴充套件sql極為不便,因此並不推薦使用
#兩張有關係的表
mysql> use db2; mysql> show tables; +---------------+ | Tables_in_db2 | +---------------+ | class | | course | | score | | student | | teacher | +---------------+ 5 rows in set (0.00 sec)
mysql> select * from course;+-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 體育 | 3 | | 4 | 美術 | 2 | +-----+--------+------------+ 4 rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+| tid | tname | +-----+-----------------+ | 1 | 張磊老師 | | 2 | 李平老師 | | 3 | 劉海燕老師 | | 4 | 朱雲海老師 | | 5 | 李傑老師 | +-----+-----------------+ 5 rows in set (0.00 sec)
這是一張虛擬表 臨時的表 但是要重複寫虛擬寫
mysql> select * from course inner join teacher on course.teacher_id=teacher.tid; +-----+--------+------------+-----+-----------------+ | cid | cname | teacher_id | tid | tname | +-----+--------+------------+-----+-----------------+ | 1 | 生物 | 1 | 1 | 張磊老師 | | 2 | 物理 | 2 | 2 | 李平老師 | | 4 | 美術 | 2 | 2 | 李平老師 | | 3 | 體育 | 3 | 3 | 劉海燕老師 | +-----+--------+------------+-----+-----------------+ 4 rows in set (0.16 sec)
如果想虛擬表重複使用,檢視就是把sql語句查詢出來的虛擬表儲存起來,以後再使用
類似於python的變數 把查詢的結果就是一張虛擬表 賦值給一個變數 ,然後可以直接呼叫這個變數顯示查詢的虛擬表結果