MySQL复制表的常用的两种方法

MySQL服务的默认引擎是 InnoDB
mysql> show engines;
+------------+---------+--------------
|Engine    | Support | Comment
+------------+---------+--------------
| EXAMPLE    |YES    | Example stora
|CSV       |YES    | CSV storage e
|MyISAM    |YES    | Default engin
| BLACKHOLE |YES    | /dev/null sto
| MRG_MYISAM |YES    | Collection of
| InnoDB    | DEFAULT | Supports tran
| ARCHIVE    |YES    | Archive stora
|MEMORY    |YES    | Hash based, s
| FEDERATED |YES    | Federated MyS
+------------+---------+--------------
原表的结构:
mysql> show create table cs;
+-------+-----------------------------------------------------------------------------
| Table | Create Table
+-------+-----------------------------------------------------------------------------
| cs    | CREATETABLE `cs` (
`cs_id` int(8) NOT NULL AUTO_INCREMENT COMMENT 'id of thestudent''s course.',
`stu_id` int(8) NOT NULL,
`cs_name` varchar(50) DEFAULT 'vkebb',
PRIMARY KEY (`cs_id`),
KEY `stu_id` (`stu_id`),
CONSTRAINT `cs_ibfk_1` FOREIGN KEY (`stu_id`) REFERENCES `stu`(`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------
(1)说明
我通过下面这条SQL语句快速的建立一个备份表,注意这种做法表的存储引擎也会采用服务器默认的存储引擎而不是源表的存储引擎,此种复制方法把表的内容也一起复制过来了。
注:as与()可以忽略,但建议使用,因为很其他的SQL产要求使用它们。
mysql> create table cs_bak1 as
   -> (select *
   -> from cs)
   -> ;
mysql> show createtable cs_bak1;
+---------+-------------------------------------------------------------------------
| Table   | Create Table
+---------+--------------------------------------------------------------------------
| cs_bak1 | CREATE TABLE `cs_bak1` (
`cs_id` int(8) NOT NULL DEFAULT '0' COMMENT 'id of the student''scourse.',
`stu_id` int(8) NOT NULL,
`cs_name` varchar(50) DEFAULT 'vkebb'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |//服务器默认的存储引擎等
+---------+--------------------------------------------------------------------------
(2)说明
使用和cs_bak表相同的结构来创建一个新表,列名、数据类型、空指和索引也将复制,但是表的内容不会被复制。外键和专用的权限也没有被复制。
mysql> create tablecs_bak
   -> like cs;
mysql> show createtable cs_bak;
+--------+---------------------------------------------------------------------------
| Table | Create Table
+--------+---------------------------------------------------------------------------
| cs_bak | CREATE TABLE `cs_bak` (
`cs_id` int(8) NOT NULL AUTO_INCREMENT COMMENT 'id of thestudent''s course.',
`stu_id` int(8) NOT NULL,
`cs_name` varchar(50) DEFAULT 'vkebb',
PRIMARY KEY (`cs_id`),
KEY `stu_id` (`stu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |

+--------+---------------------------------------------------------------------------


复制myisam速度是innodb到N倍,想了解到朋友请查看两种引擎的区别


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值