程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql 復制表數據,表結構的3種方法

mysql 復制表數據,表結構的3種方法

編輯:關於MYSQL數據庫

     什麼時候我們會用到復制表?例如:我現在對一張表進行操作,但是怕誤刪數據,所以在同一個數據庫中建一個表結構一樣,表數據也一樣的表,以作備份。如果用mysqldump比較麻煩,備份.MYD,.MYI這樣的文件呢,操作起來也還是麻煩。

    一,復制表結構

    方法1:

    1. mysql> create table a like users; //復制表結構
    2. Query OK, 0 rows affected (0.50 sec)
    3.  
    4. mysql> show tables;
    5. +—————-+
    6. | Tables_in_test |
    7. +—————-+
    8. | a |
    9. | users |
    10. +—————-+
    11. 2 rows in set (0.00 sec)
    mysql> create table a like users;         //復制表結構
    Query OK, 0 rows affected (0.50 sec)
    
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | a              |
    | users          |
    +----------------+
    2 rows in set (0.00 sec)

    方法2:

    1. mysql> create table b select * from users limit 0; //復制表結構
    2. Query OK, 0 rows affected (0.00 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0
    4.  
    5. mysql> show tables;
    6. +—————-+
    7. | Tables_in_test |
    8. +—————-+
    9. | a |
    10. | b |
    11. | users |
    12. +—————-+
    13. 3 rows in set (0.00 sec)
    mysql> create table b select * from users limit 0;   //復制表結構
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | a              |
    | b              |
    | users          |
    +----------------+
    3 rows in set (0.00 sec)

    方法3:

    1. mysql> show create table usersG; //顯示創表的sql
    2. *************************** 1. row ***************************
    3. Table: users
    4. Create Table: CREATE TABLE `users` ( //改表名
    5. `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    6. `user_name` varchar(60) NOT NULL DEFAULT ”,
    7. `user_pass` varchar(64) NOT NULL DEFAULT ”,
    8. PRIMARY KEY (`ID`)
    9. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 //改auto_increment
    10. 1 row in set (0.00 sec)
    mysql> show create table usersG;          //顯示創表的sql
    *************************** 1. row ***************************
     Table: users
    Create Table: CREATE TABLE `users` (       //改表名
     `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
     `user_name` varchar(60) NOT NULL DEFAULT '',
     `user_pass` varchar(64) NOT NULL DEFAULT '',
     PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8  //改auto_increment
    1 row in set (0.00 sec)

    把sql語句copy出來,改一下表名和atuo_increment,然後在執行一下。

    二,復制表數據,以及表結構

    方法1:

    1. mysql> create table c select * from users; //復制表的sql
    2. Query OK, 4 rows affected (0.00 sec)
    3. Records: 4 Duplicates: 0 Warnings: 0
    mysql> create table c select * from users;      //復制表的sql
    Query OK, 4 rows affected (0.00 sec)
    Records: 4  Duplicates: 0  Warnings: 0

    方法2:

    1. mysql> create table d select user_name,user_pass from users where id=1;
    2. Query OK, 1 row affected (0.00 sec)
    3. Records: 1 Duplicates: 0 Warnings: 0
    mysql> create table d select user_name,user_pass from users where id=1;
    Query OK, 1 row affected (0.00 sec)
    Records: 1  Duplicates: 0  Warnings: 0

    上面的2種方法,方便,快捷,靈活性強。

    方法3:

    先創建一個空表, INSERT INTO 新表 SELECT * FROM 舊表 ,或者

    INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM 舊表

    這種方法不是很方便,也是我以前經常用的。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved