MySQL - Geçici Tablolar

Geçici tablolar, bazı durumlarda geçici verileri saklamak için çok yararlı olabilir. Geçici tablolar için bilinmesi gereken en önemli şey, mevcut istemci oturumu sona erdiğinde silinecek olmalarıdır.

Geçici Tablolar nelerdir?

MySQL Sürüm 3.23'e geçici tablolar eklendi. MySQL'in 3.23'ten daha eski bir sürümünü kullanıyorsanız, geçici tabloları kullanamazsınız, ancak kullanabilirsinizHeap Tables.

Daha önce de belirtildiği gibi, geçici tablolar yalnızca oturum canlı olduğu sürece devam edecektir. Kodu bir PHP betiğinde çalıştırırsanız, betik yürütmeyi bitirdiğinde geçici tablo otomatik olarak yok edilir. MySQL veritabanı sunucusuna MySQL istemci programı aracılığıyla bağlanırsanız, geçici tablo siz istemciyi kapatana veya tabloyu manuel olarak yok edene kadar var olacaktır.

Misal

Aşağıdaki program size geçici tablonun kullanımını gösteren bir örnektir. Aynı kod, PHP betiklerinde de kullanılabilir.mysql_query() işlevi.

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)

Bir yayınladığınızda SHOW TABLESkomutunu kullanırsanız, geçici tablonuz listede listelenmeyecektir. Şimdi, MySQL oturumunu kapatırsanız ve sonra birSELECTkomutunu kullanırsanız, veritabanında hiçbir veri bulamazsınız. Geçici masanız bile olmayacak.

Geçici Tabloları Kaldırmak

Varsayılan olarak, veritabanı bağlantınız sonlandırıldığında tüm geçici tablolar MySQL tarafından silinir. Yine de bunları arada silmek istiyorsanız, bunuDROP TABLE komut.

Aşağıdaki program geçici bir tabloyu düşürmeye bir örnektir -

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