Home >Database >Mysql Tutorial >在MySQL中拷贝表的几种方式

在MySQL中拷贝表的几种方式

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:57:051581browse

CREATE TABLE IF NOT EXISTS `admin` ( `id` int(6) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL d

假如我们有以下这样一个表:

引用

id      username    password
-----------------------------------
1       admin       *************
2       sameer      *************
3       stewart     *************


CREATE TABLE IF NOT EXISTS `admin` (
  `id` int(6) unsigned NOT NULL auto_increment,
  `username` varchar(50) NOT NULL default '',
  `password` varchar(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)


引用
CREATE TABLE newadmin LIKE admin


2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。


引用

CREATE TABLE newadmin AS
(
    SELECT *
    FROM admin
)


3. 如果你要真正的复制一个表。可以用下面的语句。


引用
CREATE TABLE newadmin LIKE admin;
INSERT INTO newadmin SELECT * FROM admin;


4. 我们可以操作不同的数据库。

引用

CREATE TABLE newadmin LIKE shop.admin;
CREATE TABLE newshop.newadmin LIKE shop.admin;


5. 我们也可以拷贝一个表中其中的一些字段。


引用
CREATE TABLE newadmin AS
(
    SELECT username, password FROM admin
)


6. 我们也可以讲新建的表的字段改名。


引用
CREATE TABLE newadmin AS
(
    SELECT id, username AS uname, password AS pass FROM admin
)


7. 我们也可以拷贝一部分数据。


引用
CREATE TABLE newadmin AS
(
    SELECT * FROM admin WHERE LEFT(username,1) = 's'
)


8. 我们也可以在创建表的同时定义表中的字段信息。


引用
CREATE TABLE newadmin
(
    id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
    SELECT * FROM admin
)

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn