鍍金池/ 教程/ 數(shù)據(jù)庫/ SQL 克隆數(shù)據(jù)表
SQL AND 和 OR 連接運(yùn)算符
SQL 刪除數(shù)據(jù)庫
SQL 使用序列
SQL CONCAT 函數(shù)
SQL 使用視圖
SQL SELECT 語句
SQL 別名
SQL MAX 函數(shù)
SQL 創(chuàng)建表
SQL NULL 值
SQL 數(shù)據(jù)類型
SQL RAND 函數(shù)
SQL 臨時(shí)表
SQL INSERT 語句
SQL ALTER TABLE 命令
SQL 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
SQL SUM 函數(shù)
SQL 子查詢
SQL UPDATE 語句
SQL 表達(dá)式
SQL 操作符
SQL ORDER BY 子句
SQL WHERE 子句
SQL 對(duì)結(jié)果進(jìn)行排序
SQL 注入
SQL AVG 函數(shù)
SQL 選擇數(shù)據(jù)庫,USE 語句
SQL 克隆數(shù)據(jù)表
SQL COUNT 函數(shù)
SQL 語法
SQL DELETE 語句
SQL 約束
SQL 刪除表
SQL TOP、LIMIT 和 ROWNUM 子句
SQL 日期函數(shù)
SQL TRUNCATE TABLE 命令
SQL DISTINCT 關(guān)鍵字
SQL 處理重復(fù)數(shù)據(jù)
SQL 使用連接
SQL 索引
SQL 事務(wù)
SQL GROUP BY 子句
SQL HAVING 子句
SQL MIN 函數(shù)
SQL 概覽
SQL SQRT 函數(shù)
SQL LIKE 子句
SQL 通配符
SQL UNION 子句
SQL 數(shù)據(jù)庫
SQL 創(chuàng)建數(shù)據(jù)庫

SQL 克隆數(shù)據(jù)表

有些情況下,你可能需要原樣拷貝某張數(shù)據(jù)表。但是,CREATE TABEL 卻不能滿足你的需要,因?yàn)閺?fù)制表必須和原表擁有一樣的索引、默認(rèn)值等等。

如果你在使用 MySQL 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的話,下面幾個(gè)步驟可以幫你解決這個(gè)問題:

  • 使用 SHOW CREATE TABLE 命令來獲取一條指定了原表的結(jié)構(gòu)、索引等信息的 CREATE TABLE 語句。
  • 將語句中的表名修改為克隆表的名字,然后執(zhí)行該語句。這樣你就可以得到一張與原表完全相同的克隆表了。
  • 如果你還想要復(fù)制表中的數(shù)據(jù)的話,請(qǐng)執(zhí)行 INSERT INTO ... SELECT 語句。

示例:

請(qǐng)嘗試下面的示例,為 TUTORIALS_TBL 創(chuàng)建一張克隆表,其結(jié)構(gòu)如下所示:

步驟一:

獲取數(shù)據(jù)表的完整結(jié)構(gòu):

SQL> 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)

步驟二:

改變表名,創(chuàng)建新表:

SQL> 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)

步驟三:

執(zhí)行完步驟二之后,數(shù)據(jù)庫就會(huì)有克隆表了。如果你還想要復(fù)制舊表中的數(shù)據(jù)的話,可以執(zhí)行 INSERT INTO... SELECT 語句。

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

最終,你將如期擁有一張完全相同的克隆表。