Tutorial Belajar MySQL: Cara Mengcopy Tabel MySQL dan Isi Tabel MySQL

Dalam tutorial belajar MySQL kali ini saya akan membahas query untuk menduplikasi tabel MySQL. Kita akan mempelajari cara mengcopy struktur tabel MySQL berserta isi tabel MySQL.

Tutorial ini menggunakan database mahasiswa yang dibuat pada tutorial Cara Menjalankan Query MySQL dari File Teks.

Cara Mengcopy Struktur Tabel MySQL

Terdapat beberapa cara untuk menduplikasi tabel di dalam MySQL, salah satunya menggunakan perintah mysqldump. Namun kali ini saya akan membahas cara mencopy tabel MySQL menggunakan query dari dalam MySQL.

Untuk membuat struktur tabel baru yang sama persis dengan tabel yang sudah ada, bisa menggunakan format query sebagai berikut:

CREATE TABLE nama_tabel_baru LIKE nama_tabel_lama;

Sebagai contoh, saya akan menduplikasi tabel daftar_dosen menggunakan perintah berikut ini:

mysql> CREATE TABLE daftar_dosen_baru LIKE daftar_dosen;
Query OK, 0 rows affected (0.09 sec)

mysql> DESCRIBE daftar_dosen_baru;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| NIP        | char(10)     | NO   | PRI | NULL    |       |
| nama_dosen | varchar(50)  | NO   |     | NULL    |       |
| no_hp      | char(13)     | YES  |     | NULL    |       |
| alamat     | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
4 rows in set (0.06 sec)
 
mysql> SELECT * FROM daftar_dosen_baru;
Empty set (0.00 sec)

Pada query pertama, saya menggunakan perintah CREATE TABLE daftar_dosen_baru LIKE daftar_dosen untuk membuat tabel daftar_dosen_baru yang akan menggunakan struktur yang sama dengan tabel daftar_dosen.

Perintah DESCRIBE daftar_dosen_baru memperlihatkan bahwa strukur tabel daftar_dosen_baru sama persis dengan struktur tabel aslinya: daftar_dosen.

Bagaimana dengan isi dari tabel ini? Dari query SELECT * FROM daftar_dosen_baru, terlihat bahwa tabel ini tidak berisi data apapun.


Cara Mengcopy Isi Tabel MySQL

Untuk mengcopy isi sebuah tabel ke tabel lain di dalam MySQL kita bisa memanfaatkan gabungan query INSERT dengan query SELECT. Sebagai contoh, untuk menduplikasi isi tabel daftar_dosen ke tabel daftar_dosen_baru, saya bisa menggunakan query berikut:

mysql> INSERT INTO daftar_dosen_baru SELECT * FROM daftar_dosen;
Query OK, 8 rows affected (0.06 sec)
Records: 8  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM daftar_dosen_baru;
+------------+------------------+------------+-----------+
| NIP        | nama_dosen       | no_hp      | alamat    |
+------------+------------------+------------+-----------+
| 0160436012 | Sabrina Sari     | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri   | 0812345234 | Palembang |
| 0275430005 | Susi Indriani    | 0812656532 | Palembang |
| 0480432066 | Tia SariSantrini | 0812451177 | Padang    |
| 0576431001 | M. Siddiq        | 0812979005 | Jakarta   |
| 0770435006 | Rubin Hadi       | 0812567678 | Papua     |
| 0869437003 | Arif Mustalifah  | 0812338877 | Aceh      |
| 1080432007 | Arif Budiman     | 0812456345 | Jakarta   |
+------------+------------------+------------+-----------+
8 rows in set (0.00 sec)

Dengan menggunakan query diatas, seluruh isi tabel daftar_dosen akan dicopy kedalam tabel daftar_dosen_baru.

Bagaimana jika saya hanya butuh sebagian data saja?

Jika kita cuma butuh mengcopy sebagian data dari tabel lama (tidak semua data), cukup memberikan tambahan perintah kondisi seperti WHERE pada query SELECT. Sebagai contoh, jika saya ingin mengcopy hanya dosen yang beralamat di Palembang, saya bisa menggunakan query berikut:

mysql> TRUNCATE daftar_dosen_baru;
Query OK, 0 rows affected (0.14 sec)
 
mysql> SELECT * FROM daftar_dosen_baru;
Empty set (0.00 sec)
 
mysql> INSERT INTO daftar_dosen_baru SELECT * FROM 
daftar_dosen WHERE alamat = 'Palembang';
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM daftar_dosen_baru;
+------------+----------------+------------+-----------+
| NIP        | nama_dosen     | no_hp      | alamat    |
+------------+----------------+------------+-----------+
| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
| 0275430005 | Susi Indriani  | 0812656532 | Palembang |
+------------+----------------+------------+-----------+
2 rows in set (0.00 sec)

Query TRUNCATE daftar_dosen_baru digunakan untuk mengosongkan isi tabel daftar_dosen_baru.

Selanjutnya saya memastikan tabel daftar_dosen_baru sudah kosong dari perintah SELECT * FROM daftar_dosen_baru. Terkahir, saya mengcopy data dari tabel daftar_dosen, namun hanya dosen yang beralamat di Palembang menggunakan kondisi WHERE alamat = 'Palembang'.


Tutorial cara mengcopy atau menduplikasi tabel MySQL ini kadang diperlukan dalam kasus dimana kita butuh membuat tabel yang sama persis. Tabel ini bisa digunakan sebagai tabel 'percobaan' untuk mengamankan tabel asli dari perubahan.

29 Comments

  1. robert
    10 Aug 15
  2. Rizal Rahmad
    08 Sep 15
    • Andre
      10 Sep 15
      • sulaiman
        07 Nov 16
        • Andre
          08 Nov 16
  3. Ajib19
    17 May 16
    • Andre
      18 May 16
  4. ajib
    10 Nov 16
    • Andre
      10 Nov 16
      • Anonymous
        10 Nov 16
        • Andre
          11 Nov 16
  5. ajib
    11 Nov 16
  6. neka fadlika
    11 Dec 16
    • Andre
      13 Dec 16
  7. naiva
    18 Jan 17
    • Ahmad
      02 Feb 17
  8. Ahmad
    02 Feb 17
    • Andre
      02 Feb 17
      • Ahmad
        06 Feb 17
  9. Kinoy
    03 Feb 17
  10. Ahmad
    06 Feb 17
    • Andre
      06 Feb 17
  11. Afif
    18 Feb 17
    • Andre
      19 Feb 17
  12. Aldi
    20 Mar 18
  13. Said Farhan
    30 Apr 18
    • Andre
      01 May 18
  14. witchky
    11 Dec 18
    • Andre
      12 Dec 18

Add Comment

Leave a Reply to Kinoy Cancel reply