کلون (Clone) کردن جدول ها در MySQL — راهنمای جامع

آخرین به‌روزرسانی: ۶ آبان ۱۳۹۷
زمان مطالعه: ۲ دقیقه

احتمالاً تاکنون با مواردی برخورد کرده‌اید که می‌بایست یک کپی دقیق از یک جدول داشته باشید و دستور CREATE TABLE … SELECT نیز به این منظور مناسب نیست، زیرا کپی باید شامل همان اندیس‌ها، مقادیر پیش‌فرض و موارد دیگر باشد. در این وضعیت می‌توان از مراحل زیر استفاده کرد:

  • استفاده از SHOW CREATE TABLE برای دریافت یک عبارت CREATE TABLE که ساختار جدول منبع، اندیس‌ها و همه موارد دیگر را نشان می‌دهد.
  • اصلاح عبارت برای تغییر دادن نام جدول به نام جدول کلون و اجرای عبارت. بدین ترتیب جدول کلون شده دقیقی خواهید داشت.
  • به طور اختیاری در صورتی که به محتویات جدول هم نیاز داشته باشید، می‌توانید محتوای آن را نیز با یک عبارت INSERT INTO … SELECT کپی کنید.

مثال

مثال زیر را برای ایجاد یک کلون از جدول tutorials_tbl بررسی کنید:

گام 1 – ساختار کامل جدول را دریافت کنید:

mysql> SHOW CREATE TABLE tutorials_tbl \G;
*************************** 1. row ***************************
      Table: tutorials_tbl
Create Table: CREATE TABLE `tutorials_tbl` (
   `tutorial_id` int(11) NOT NULL auto_increment,
   `tutorial_title` varchar(100) NOT NULL default '',
   `tutorial_author` varchar(40) NOT NULL default '',
   `submission_date` date default NULL,
   PRIMARY KEY  (`tutorial_id`),
   UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) TYPE = MyISAM
1 row in set (0.00 sec)

ERROR:
No query specified

گام 2 – این جدول را تغییر نام دهید و جدول دیگری ایجاد کنید:

mysql> CREATE TABLE clone_tbl (
   -> tutorial_id int(11) NOT NULL auto_increment,
   -> tutorial_title varchar(100) NOT NULL default '',
   -> tutorial_author varchar(40) NOT NULL default '',
   -> submission_date date default NULL,
   -> PRIMARY KEY  (tutorial_id),
   -> UNIQUE KEY AUTHOR_INDEX (tutorial_author)
-> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)

گام 3 – پس از اجرای گام 2 یک جدول کلون شده در پایگاه داده خواهیم داشت. اگر می‌خواهید یک کپی از داده‌های جدول قبلی را در این جدول داشته باشید، در این صورت باید از عبارت INSERT INTO… SELECT استفاده کنید:

mysql> INSERT INTO clone_tbl (tutorial_id,
   ->                        tutorial_title,
   ->                        tutorial_author,
   ->                        submission_date)
   -> SELECT tutorial_id,tutorial_title,
   ->        tutorial_author,submission_date
   -> FROM tutorials_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *