CREATE TABLE ... LIKE सिंटैक्स
MySQL में किसी मौजूदा टेबल की **सटीक संरचना** (कॉलम, इंडेक्स, डेटा प्रकार, डिफ़ॉल्ट मान) कॉपी करके नई टेबल बनाने के लिए LIKE क्लॉज का उपयोग करें। यह डेटा **कॉपी नहीं करता**, केवल स्कीमा कॉपी करता है।
सिंटैक्स
CREATE TABLE newTableName LIKE existingTableName;
चरण-दर-चरण उदाहरण
1. मूल टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE Employee (
-> EmployeeId INT,
-> EmployeeName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO Employee VALUES(1, 'Carol');
mysql> INSERT INTO Employee VALUES(2, 'John');
mysql> INSERT INTO Employee VALUES(3, 'Johnson');
2. LIKE से नई टेबल बनाएं
mysql> CREATE TABLE StudentModifyTableDemo LIKE Employee;
Query OK, 0 rows affected (0.50 sec)
3. संरचना जांचें
mysql> DESC StudentModifyTableDemo;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| EmployeeId | int(11) | YES | | NULL | |
| EmployeeName | varchar(100) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.12 sec)
संरचना **समान** है (कॉलम नाम, प्रकार, NULL, डिफ़ॉल्ट)।
4. डेटा कॉपी करें (अलग क्वेरी)
mysql> INSERT INTO StudentModifyTableDemo SELECT * FROM Employee;
Query OK, 3 rows affected (0.16 sec)
Records: 3 Duplicates: 0 Warnings: 0
5. डेटा पुष्टि करें
mysql> SELECT * FROM StudentModifyTableDemo;
+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 1 | Carol |
| 2 | John |
| 3 | Johnson |
+------------+--------------+
3 rows in set (0.00 sec)
LIKE क्या कॉपी करता है / नहीं करता
| कॉपी होता है | कॉपी नहीं होता |
|---|---|
| कॉलम परिभाषा (नाम, प्रकार, आकार) | डेटा (पंक्तियाँ) |
| इंडेक्स (PRIMARY, UNIQUE, INDEX) | AUTO_INCREMENT मान (रीसेट होता है) |
| डिफ़ॉल्ट मान | ट्रिगर |
| कॉलम टिप्पणियाँ | विदेशी कुंजी बाधाएँ (कुछ संस्करणों में) |
| कैरेक्टर सेट / कॉलेशन | पार्टीशन परिभाषा |
वैकल्पिक: CREATE TABLE ... AS SELECT
संरचना **और** डेटा दोनों कॉपी करने के लिए:
CREATE TABLE newTable AS SELECT * FROM oldTable;
यह इंडेक्स/कंस्ट्रेंट **नहीं** कॉपी करता, केवल कॉलम और डेटा।