Fungsi table temporary biasanya digunakan sebagai table penampung sementara. Misalkan untuk melakukan perhitungan aritmatika, sebelum hasilnya di simpan dalam actual table (table sebenarnya).
Table temporary ini hanya ada untuk MySQL versi 3.2.3 keatas.
Untuk membuat sebuah table temporary, Anda dapat menggunakan perintah CREATE TEMPORARY TABLE.
Sintak Dasar
Di bawah ini adalah sintak dasar dari perintah CREATE TEMPORARY TABLE di MySQL:
CREATE TEMPORARY TABLE temporary_table_name( column_name1 data_type [NOT NULL] [AUTO INCREMENT], column_name2 data_type [NOT NULL], column_name3 data_type [NOT NULL], ... column_nameN data_type [NOT NULL], PRIMARY KEY(one or more column) );
Atau Anda juga bisa membuat table temporary dengan mengcopy dari table aktual, menggunakan sintak berikut:
CREATE TEMPORARY TABLE temporary_table_name AS SELECT * FROM table_name;
Penjelasan sintak:
- temporary_table_name adalah nama untuk table temporary yang akan Anda buat.
- Sedangkan table_name adalah actual table yang akan dicopy stuktur dan data-datanya.
Contoh
Sebagai contoh, coba Anda tampilkan daftar table yang terdapat di database dengan menjalankan perintah berikut ini:
mysql> SHOW TABLES; +----------------+ | Tables_in_hris | +----------------+ | employee | | employee_clone | +----------------+ 2 rows in set (0.00 sec)
Dari kedua table diatas, coba Anda buat sebuah table temporary dengan nama "employee_temp" yang struktur dan data-datanya diambil dari table "employee"?
Untuk melakukannya, Anda dapat menjalankan perintah berikut ini:
mysql> CREATE TEMPORARY TABLE employee_temp -> AS SELECT * FROM employee; Query OK, 5 rows affected (0.28 sec) Records: 5 Duplicates: 0 Warnings: 0
Apabila keluar pesan "Query OK", berarti Anda telah sukses membuat sebuah table temporary. Coba Anda tampilkan kembali daftar table dengan menggunkana perintah berikut:
mysql> SHOW TABLES; +----------------+ | Tables_in_hris | +----------------+ | employee | | employee_clone | +----------------+ 2 rows in set (0.00 sec)
Dan ternyata, table temporary yang telah Anda buat tidak ada di daftar table. Itu karena perintah SHOW TABLES hanya menampilkan table-table yang actual bukan temporer.
Sekarang coba Anda tampilkan struktur dan data-data dari table temporary dengan menjalankan perintah berikut ini:
mysql> DESC employee_temp; +---------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+-------+ | employee_id | varchar(5) | NO | | NULL | | | employee_name | varchar(20) | NO | | NULL | | | gender | char(1) | NO | | NULL | | | address | varchar(20) | YES | | NULL | | | salary | decimal(10,0) | YES | | NULL | | | departemen | varchar(5) | NO | | NULL | | +---------------+---------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
mysql> SELECT * FROM employee_temp; +-------------+---------------+--------+----------+---------+------------+ | employee_id | employee_name | gender | address | salary | departemen | +-------------+---------------+--------+----------+---------+------------+ | 001 | Nursalim | L | Jakarta | 3000000 | IT | | 002 | Naura | P | Bandung | 2000000 | HRD | | 003 | Ahmad | L | Semarang | 5000000 | ACC | | 004 | Nani | P | Surabaya | 2500000 | FIN | | 005 | Nurul | P | Tegal | 4500000 | FIN | +-------------+---------------+--------+----------+---------+------------+ 5 rows in set (0.00 sec)
Sekarang coba Anda keluar dari MySQL console dengan mengetikan perintah 'quit' seperti berikut ini:
mysql> quit Bye
Coba Anda masuk ke MySQL console kembali dan tampilkan data dari table temporary diatas.
# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.5.36 MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use hris; Database changed mysql> SELECT * FROM employee_temp; ERROR 1146 (42S02): Table 'hris.employee_temp' doesn't exist
Dan ternyata, table temporary yang telah Anda buat sudah tidak ada..hehehe..