Terkadang Anda mungkin perlu menyalin data dari satu tabel ke tabel lainnya di MySQL atau menyalin tabel di MySQL. Berikut cara menduplikasi tabel di MySQL. Anda dapat menggunakannya untuk mengkloning tabel di MySQL atau menyalin struktur tabel, atau bahkan menyalin tabel dari satu database ke database lainnya.
Cara Menggandakan Tabel di MySQL
Berikut adalah langkah-langkah untuk menduplikasi tabel di MySQL. Ada kasus penggunaan yang berbeda untuk menyalin data dari satu tabel ke tabel lainnya. Kami akan melihat masing-masing secara detail.
MySQL Menyalin data dari satu tabel ke tabel baru
Jika Anda perlu menduplikasi tabel di MySQL ke tabel baru, Anda perlu menggunakan pernyataan CREATE TABLE dan SELECT seperti yang ditunjukkan di bawah ini
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Katakanlah Anda memiliki tabel produk
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Berikut kueri SQL untuk menyalin produk tabel menjadi tabel baru yang disebut produk_baru
mysql> create table new_products select * from products; mysql> select * from new_products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Penting untuk dicatat bahwa tabel baru akan dibuat hanya jika tidak ada. Jika tidak, Anda akan mendapatkan kesalahan. Untuk menghindari kesalahan saat Anda menggandakan tabel di MySQL, Anda dapat menggunakan IF NOT EXIST dalam pernyataan CREATE TABLE, seperti yang ditunjukkan di bawah ini.
mysql> create table if not exist new_products select * from products;
Bonus Baca :Prosedur Tersimpan MySQL Dengan Parameter
Untuk menyalin hanya sebagian data dari satu tabel ke tabel baru, Anda dapat menggunakan kondisi WHERE dalam pernyataan SELECT Anda seperti yang ditunjukkan
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Berikut kueri SQL untuk menyalin sebagian data dari produk tabel menjadi tabel baru bernama new_products2
mysql> create table new_products2 select * from products where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Bonus Baca :Cara Membuat Composite Primary Key di MySQL
MySQL Salin Struktur Tabel ke Tabel Baru
Kueri di atas hanya menyalin tabel dan data. Mereka tidak akan menyalin objek tabel seperti kunci utama, indeks, batasan, pemicu. Untuk menyalin struktur dan data tabel, Anda perlu menggunakan pernyataan CREATE TABLE dengan kata kunci LIKE, seperti yang ditunjukkan di bawah ini
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Katakanlah Anda memiliki pesanan tabel dengan kunci utama
mysql> describe orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
dan Anda ingin menyalin struktur pesanan untuk pesanan_baru meja. Berikut query SQL untuk menyalin struktur tabel ke tabel baru.
mysql> create table new_orders like orders; mysql> describe new_orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
Bonus Baca :Cara Memotong Tabel di MySQL
MySQL Salin Data dari satu tabel ke tabel yang ada
Pernyataan di atas akan membuat tabel baru dengan struktur tabel lama. Maka Anda perlu menggunakan pernyataan INSERT untuk menyalin data dari tabel lama ke tabel baru.
INSERT new_table SELECT * FROM existing_table;
Berikut kueri SQL untuk menyalin data dari pesanan ke tabel yang ada new_orders
mysql> insert new_orders select * from orders; mysql> select * from orders; +----+--------------+------------+-------+-------------+---------------------+ | id | product_name | order_date | price | description | created_at | +----+--------------+------------+-------+-------------+---------------------+ | 1 | A | 2020-07-01 | 150 | New product | 2020-06-01 00:00:00 | | 2 | B | 2020-07-01 | 235 | Old product | 2020-06-15 00:00:00 | +----+--------------+------------+-------+-------------+---------------------+
Bonus Baca :MySQL DROP VIEW
Menyalin Tabel MySQL dari Satu database ke database lain
Jika Anda ingin menduplikasi tabel di MySQL dari database ke database lain, maka cukup sertakan nama database di nama tabel Anda, seperti yang ditunjukkan di bawah ini dalam huruf tebal
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Pernyataan pertama akan menduplikasi struktur tabel di MySQL dari database sumber (misalnya source_db) ke yang lain (misalnya destination_db). Pernyataan kedua akan menyalin data dari satu tabel ke tabel lainnya.
Ganti source_db dan destination_db dalam kueri di atas dengan basis data sumber dan tujuan masing-masing.
Semoga artikel ini dapat membantu Anda menggandakan tabel di MySQL. Harap berhati-hati saat Anda menduplikasi tabel di MySQL, dengan jumlah record yang banyak, karena dapat memakan banyak waktu &sumber daya.
Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!