Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyalin Tabel di MySQL

Terkadang Anda mungkin perlu menyalin tabel di MySQL. Ada banyak cara berbeda untuk menyalin tabel di MySQL. Berikut adalah langkah-langkah untuk menyalin tabel di MySQL. Anda dapat menggunakannya untuk menyalin tabel ke tabel lain, menyalin tabel dari satu database ke database lain, menyalin struktur tabel, menyalin tabel dengan data, menyalin struktur tabel dengan indeks, atau menyalin tabel dari satu server ke server lainnya.

Cara Menyalin Tabel di MySQL

Berikut cara menyalin tabel di MySQL. Ada kasus penggunaan yang berbeda untuk menyalin tabel di MySQL. Kami akan melihat masing-masing secara detail.

MySQL Menyalin data dari satu tabel ke tabel baru

Biasanya, Anda perlu menyalin tabel di MySQL ke tabel baru. Dalam hal ini, 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;

Dalam kueri di atas, Anda perlu menentukan nama tabel yang ada bersama dengan kolom yang ingin Anda salin, dan juga nama tabel baru. MySQL akan mengisi tabel baru Anda dengan hasil pernyataan SELECT Anda.

Katakanlah Anda sudah memiliki tabel product_list

mysql> select * from product_list;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Berikut kueri SQL untuk menyalin daftar_produk tabel menjadi tabel baru yang disebut new_product_list

mysql> create table new_product_list
       select *
       from product_list;

mysql> select * from new_product_list;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Harap 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 klausa IF NOT EXIST dalam pernyataan CREATE TABLE, seperti yang ditunjukkan di bawah ini.

mysql> create table if not exist new_product_list
       select *
       from product_list;

Bonus Baca :Cara Menambahkan batasan NOT NULL di MySQL

Jika Anda hanya ingin menyalin sebagian data dari satu tabel ke tabel baru, yaitu beberapa baris tetapi tidak semua, 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 daftar_produk tabel menjadi tabel baru bernama new_products2

mysql> create table new_products2
       select *
       from product_list
       where product_id=1;

mysql> select * from new_products2;
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

Bonus Baca :Cara Menambahkan Batasan Default di MySQL

MySQL Salin Struktur Tabel ke Tabel Baru

Kueri SQL 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 (id)

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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

Seperti yang Anda lihat, tabel new_orders juga memiliki bidang kunci utama id. Pernyataan di atas hanya akan menyalin struktur tabel tetapi tidak data. Anda perlu menyalin data secara terpisah, seperti yang ditunjukkan di bagian berikutnya.

Bonus Baca :MySQL Pilih N Baris Teratas Per Grup

MySQL Salin Data dari satu tabel ke tabel yang ada

Pernyataan di atas akan membuat tabel baru dengan struktur tabel lama, tetapi akan menjadi tabel kosong. 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 Copy Database

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 saat menggunakan kueri SQL di atas, 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 SQL pertama di atas akan menduplikasi struktur tabel di MySQL dari database sumber (mis. source_db ) ke yang lain (mis. 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 menyalin tabel di MySQL. Harap berhati-hati saat menyalin 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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi peringkat di MySQL

  2. Cara Gagal atau Hancurkan Instans MySQL Anda untuk Pengujian

  3. menggunakan nulls dalam pernyataan yang disiapkan mysqli

  4. Cara Mengimpor CSV ke MySQL Workbench

  5. Meningkatkan Kinerja MySQL dengan Pengaturan InnoDB Tingkat Lanjut