MySQL - ตารางชั่วคราว
ตารางชั่วคราวอาจมีประโยชน์มากในบางกรณีเพื่อเก็บข้อมูลชั่วคราว สิ่งที่สำคัญที่สุดที่ควรทราบสำหรับตารางชั่วคราวคือตารางเหล่านั้นจะถูกลบเมื่อเซสชันไคลเอ็นต์ปัจจุบันสิ้นสุดลง
ตารางชั่วคราวคืออะไร?
มีการเพิ่มตารางชั่วคราวใน MySQL เวอร์ชัน 3.23 หากคุณใช้ MySQL เวอร์ชันเก่ากว่า 3.23 คุณจะไม่สามารถใช้ตารางชั่วคราวได้ แต่คุณสามารถใช้ได้Heap Tables.
ตามที่ระบุไว้ก่อนหน้านี้ตารางชั่วคราวจะคงอยู่ตราบเท่าที่เซสชันยังมีชีวิตอยู่ หากคุณรันโค้ดในสคริปต์ PHP ตารางชั่วคราวจะถูกทำลายโดยอัตโนมัติเมื่อสคริปต์ทำงานเสร็จสิ้น หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล MySQL ผ่านโปรแกรมไคลเอนต์ MySQL ตารางชั่วคราวจะมีอยู่จนกว่าคุณจะปิดไคลเอนต์หรือทำลายตารางด้วยตนเอง
ตัวอย่าง
โปรแกรมต่อไปนี้เป็นตัวอย่างที่แสดงการใช้งานตารางชั่วคราว สามารถใช้รหัสเดียวกันในสคริปต์ PHP โดยใช้ไฟล์mysql_query() ฟังก์ชัน
mysql> CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
เมื่อคุณออกไฟล์ SHOW TABLESจากนั้นตารางชั่วคราวของคุณจะไม่ปรากฏในรายการ ตอนนี้ถ้าคุณจะออกจากเซสชัน MySQL จากนั้นคุณจะออกไฟล์SELECTจากนั้นคุณจะพบว่าไม่มีข้อมูลในฐานข้อมูล แม้แต่โต๊ะชั่วคราวของคุณก็ไม่มีอยู่จริง
การวางตารางชั่วคราว
ตามค่าเริ่มต้นตารางชั่วคราวทั้งหมดจะถูกลบโดย MySQL เมื่อการเชื่อมต่อฐานข้อมูลของคุณถูกยกเลิก หากคุณต้องการลบระหว่างนั้นคุณสามารถทำได้โดยการออกไฟล์DROP TABLE คำสั่ง
โปรแกรมต่อไปนี้เป็นตัวอย่างในการวางตารางชั่วคราว -
mysql> CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SalesSummary;
mysql> SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist