جدول های موقت (Temporary Tables) در MySQL — راهنمای جامع

۱۷۰ بازدید
آخرین به‌روزرسانی: ۲۶ شهریور ۱۴۰۲
زمان مطالعه: ۲ دقیقه
جدول های موقت (Temporary Tables) در MySQL — راهنمای جامع

جدول‌های موقت در برخی موارد که می‌خواهید داده‌های موقتی را در پایگاه داده ذخیره کنید، می‌توانند بسیار مفید باشند. مهم‌ترین نکته که باید در مورد استفاده از جدول‌های موقت بدانید، این است که این جدول‌ها زمانی که نشست کنونی کلاینت خاتمه یابد، حذف خواهند شد.

جدول موقت چیست؟

جدول‌های موقت در نسخه 3.23 MySQL به آن اضافه شده‌اند. اگر از نسخه‌های قدیمی‌تر MySQL استفاده می‌کنید، نمی‌توانید جدول‌های موقت ایجاد کنید؛ اما می‌توانید از جدول‌های هیپ (Heap Tables) بهره بگیرید.

همان طور که پیش‌تر اشاره کردیم، جدول‌های موقت تنها تا زمانی دوام می‌آورند که نشست کنونی باز باشد. اگر کدی را در یک اسکریپت PHP اجرا می‌کنید، در این صورت جدول موقت به طور خودکار زمانی که اجرای اسکریپت پایان یافت تخریب می‌شود. اگر از طریق برنامه کلاینت MySQL به آن وصل شده‌اید، در این صورت جدول‌های موقت تا زمان بستن کلاینت یا تخریب دستی جدول باقی می‌مانند.

مثال

برنامه زیر نمونه‌ای است که کاربرد جدول‌های موقت را نمایش می‌دهد. همین کد را می‌توان با استفاده از تابع ()mysql_qyery در زبان برنامه‌نویسی PHP نیز مورد استفاده قرار داد:

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

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *