91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL臨時表如何使用

發布時間:2022-09-20 09:55:22 來源:億速云 閱讀:108 作者:iii 欄目:開發技術

這篇文章主要介紹“MySQL臨時表如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL臨時表如何使用”文章能幫助大家解決問題。

    1. 寫在前面的話

    在開發數據庫時,特別是寫存儲過程,遇到比較復雜的需求,使用臨時表可以簡化很多邏輯。曾經在一家互聯網金融公司供職,公司數據組團隊做數據清洗,寫SQL腳本時,一個查詢語句可以套到數層查詢,甚至十幾層。看起來幾百行上千行的腳本,其實他只是一個查詢,就是說是一個select基于另一個select的結果。這樣層層疊疊,同時還包含了聚合、排序、關聯、聯合等,看起來是相當的費勁,頭疼。

    就如下列樣式:

    SELECT
    	T1.A1,
    	T1.A2,
    	T1.A3...
    FROM
    	(
    		SELECT
    			T2.B1,
    			T2.B2,
    			T2.B3...
    		FROM
    			(
    				SELECT
    					...
    				UNION ALL
    					SELECT
    						...)
    					WHERE
    						...
    					GROUP BY
    						...) T1,
    						(
    							SELECT
    								T3.C1,
    								T3.C2,
    								T3.C3...
    							FROM
    								(
    									SELECT
    										...)
    									WHERE
    										...
    									GROUP BY
    										...) T3
    									WHERE
    										T1.A1 = T3.C1...

    如果這里能使用臨時表,那么就會使邏輯清晰很多,查詢效率也會得到提升。比如在多處使用到同一個查詢的結果時,就可以只執行一次查詢,將結果保存為臨時表,在查詢過程中每次使用到時,直接從臨時表查就可以了,不用每次使用都再去查詢一遍原始數據,尤其是對于復雜關聯查詢結果。

    當時數據是來源于呼叫中心,每天都會產生幾百萬行數據,一個月就上億行的數據量,就當時的機器性能基礎上,在這個數據量來做統計操作,如果沒有高效的腳本,是非常耗時間的。同時,數據組職員并沒有專業數據庫設計能力。

    本文以數據庫World為例進行說明。

    2. 臨時表的使用

    World數據庫中數據表country放著全世界國家的相關信息。

    2.1 創建一個只存放亞洲國家信息的臨時表

    2.1.1 創建臨時表

    創建一個只存放亞洲國家信息的臨時表,命名為TempAsiaCountries
    這里臨時只取四個字段Code,Name,SufaceArea,Population,那么創建臨時表的腳本如下:

    # 創建臨時表
    CREATE TEMPORARY TABLE TempAsiaCountries (
    	`Code` VARCHAR (10),
    	`name` VARCHAR (30),
    	`SufaceArea` NUMERIC,
    	`Population` NUMERIC
    );

    創建完之后,會發現在數據庫的表目錄下并沒有這個表,因為表是臨時的,所以不會出現在表目錄里。

    MySQL臨時表如何使用

    2.1.2 向臨時表里寫數據

    如同寫實體表數據一樣,可以通過INSERT INTO 關鍵字進行表插入數據操作。

    # 寫數據到臨時表
    INSERT INTO TempAsiaCountries
    SELECT
    	`Code`,
    	`Name`,
    	`SurfaceArea`,
    	`Population`
    FROM
    	country
    WHERE
    	`Continent` = 'Asia';

    此時,可以通過SELECT操作查詢臨時表里的數據。

    2.2 在查詢過程中直接創建臨時表

    在實際使用臨時表時,可以更快速便捷的創建臨時表,如下腳本,直接以查詢結果創建臨時表的方法。

    CREATE TEMPORARY TABLE TempAsiaCountries 
    SELECT
    	`Code`,
    	`Name`,
    	`SurfaceArea`,
    	`Population`
    FROM
    	country
    WHERE
    	`Continent` = 'Asia';

    2.3 查詢臨時表中的數據

    對臨時表的查詢操作與實體表一樣,如下是查詢前文中所創建的臨時表中的數據

    # 查詢臨時表
    SELECT *
    FROM TempAsiaCountries;

    可以看到查詢結果

    MySQL臨時表如何使用

    2.4 刪除臨時表

    # 刪除臨時表
    DROP TABLE TempAsiaCountries;

    此時再查,就會返回表不存在的結果

    MySQL臨時表如何使用

    3. 以上操作的全部代碼

    # 創建臨時表
    CREATE TEMPORARY TABLE TempAsiaCountries (
    	`Code` VARCHAR (10),
    	`name` VARCHAR (30),
    	`SufaceArea` NUMERIC,
    	`Population` NUMERIC
    );
    
    # 第一種
    # 寫數據到臨時表
    INSERT INTO TempAsiaCountries
    SELECT
    	`Code`,
    	`Name`,
    	`SurfaceArea`,
    	`Population`
    FROM
    	country
    WHERE
    	`Continent` = 'Asia';
    
    # 查詢臨時表
    SELECT *
    FROM TempAsiaCountries;
    
    # 第二種
    # 查詢數據并寫到臨時表中
    CREATE TEMPORARY TABLE TempAsiaCountries 
    SELECT
    	`Code`,
    	`Name`,
    	`SurfaceArea`,
    	`Population`
    FROM
    	country
    WHERE
    	`Continent` = 'Asia';
    
    # 刪除臨時表
    DROP TABLE TempAsiaCountries;

    關于“MySQL臨時表如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    定州市| 达拉特旗| 虹口区| 广水市| 九龙城区| 南通市| 宁阳县| 韩城市| 乌拉特后旗| 宣城市| 松阳县| 拜泉县| 桓台县| 依兰县| 甘孜| 中江县| 瑞金市| 广平县| 西畴县| 辽源市| 胶州市| 盐亭县| 徐水县| 威信县| 永顺县| 柯坪县| 霍林郭勒市| 句容市| 筠连县| 叶城县| 肥乡县| 太白县| 马关县| 错那县| 日土县| 永宁县| 南木林县| 阿拉善右旗| 东丰县| 阳城县| 扶余县|