جدول های موقت (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
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای پایگاه داده و سیستم های مدیریت اطلاعات
- مجموعه آموزشهای علوم کامپیوتر
- مجموعه آموزشهای مهندسی نرمافزار
- مدیریت اجرا یا توقف در پایگاه داده MySQL — راهنمای جامع
- آموزش مهارتهای اساسی کامپیوتر
- ساختار PHP و نحوه اتصال به پایگاه داده MySQL — به زبان ساده
- بند WHERE در دستورات MySQL — راهنمای جامع
==