文章目錄
臨時表:內部臨時表和外部臨時表
CREATE TEMPORARY TABLE 表名 (
字段名 字段類型, ...
); -- 通常搭配select使用
跟普通表相比,臨時表有 3 個不同的特征:
臨時表的創建語法需要用到關鍵字 ;臨時表創建完成之后,只有當前連接可見,其他連接是看不到的,具有連接隔離性;臨時表在當前連接結束之后,會被自動刪除.
因為臨時表有連接隔離性,不同連接創建相同名稱的臨時表也不會產生沖突,適合并發程 序的運行。而且,連接結束之后,臨時表會自動刪除,也不用擔心大量無用的中間數據會 殘留在數據庫中。因此,我們就可以利用這些特點,用臨時表來存儲 SQL 查詢的中間結果。
如何用臨時表簡化復雜查詢?
因為創建臨時表就是為了存放某個查詢的中間結果。直接用查詢語句創建臨時表比較快捷sql 視圖中使用臨時表,而且連接結束后臨時表就會被自動刪除sql 視圖中使用臨時表,不需要過多考慮表的結構設計問題(比如冗余、效率等)。
能不能把這 3 個表相互關聯起來,把這些信息都匯總到對應的單品呢?答案是不行的,如果僅僅通過這 3 個表之間的連接進行查詢,我們可能會丟失某些數據。為了解決這個問題, 我們需要把商品信息表的放到左邊,與其他表進行左連接, 確保所以商品都包含在結果集中。
內存臨時表和磁盤臨時表
臨時表也可分為內存臨時表和磁盤臨時表
-- 內存中的臨時表:

create temporary table demo.mytrans
(
itemnumber int,
groupnumber int,
branchnumber int
)engine = memory
;
-- 創建一個同樣結構的臨時表 就是普通的臨時表 MySQL 會默認存儲引擎是 innoDB
create temporary table demo.xx

(
itemnumber int,
groupnumber int,
branchnumber int
);
他們的區別:
小結
在使用臨時表的時候,要從簡化查 詢和擠占資源兩個方面綜合考慮,既不能過度加重系統的負擔,同時又能夠通過存儲中間 結果,最大限度地簡化查詢。
視圖
我們可以把一段查詢語句作為視圖存儲在數據庫中,在需要的時候, 可以把視圖看做一個表,對里面的數據進行查詢。
視圖的創建
-- 創建視圖的語法結構:
CREATE [OR REPLACE]
VIEW 視圖名稱 [(字段列表)]
AS 查詢語句
視圖的操作
-- 修改視圖的語法如下所示

ALTER VIEW 視圖名
AS 查詢語句;
-- 查看視圖的語法是:
DESCRIBE 視圖名;
-- DESCRIBE 視圖名;
DROP VIEW 視圖名;
如何操作視圖中的數據? 視圖的好處 總結