mysql 复制表结构、表数据的方法

From: http://blog.163.com/[email protected]/blog/static/109463675201191173221759/

MySQL 添加列,修改列,删除列的sql语句写法

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

  • 查看列:desc 表名;

  • 修改表名:alter table t_book rename to bbb;
  • 添加列:alter table 表名 add column 列名 varchar(30);
  • 删除列:alter table 表名 drop column 列名;
  • 修改列名: alter table bbb change nnnnn hh int;
  • 修改列属性:alter table t_book modify name varchar(22);

一,复制表结构
方法1:
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) 
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:
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) 
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:
mysql> show create table users\G;          //显示创表的sql  这里也可以用 desc users;显示表的结构
*************************** 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) 
mysql> show create table users\G;          //显示创表的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:
mysql> create table c select * from users;      //复制表的sql 
Query OK, 4 rows affected (0.00 sec)  
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:
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 
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 旧表
这种方法不是很方便,也是我以前经常用的。

时间: 09-21

mysql 复制表结构、表数据的方法的相关文章

复制表结构和数据SQL语句

select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 以上两句都是将 源表 的数据插入到 目标表,但两句又有区别的: 第一句(select into from)要求目标表不存在,因为在插入时会自动创建. 第二句(insert into select from)要求目标表存在,由于目标表已经存在,所以我们除了插入源表的字段外,还可以插入常量,如例中的:5. 1:复制表结构及数据到新表 sel

Mysql 导入导出表结构与数据

1.导出整个数据库 mysqldump -u用户名 -p密码  数据库名 > 导出的文件名  C:\Users\jack> mysqldump -uroot -pmysql account  > e:\account.sql 2.导出一个表,包括表结构和数据 mysqldump -u用户名 -p 密码  数据库名 表名> 导出的文件名  C:\Users\jack> mysqldump -uroot -pmysql ch_zhongyue_drg account> e:

CACTI表结构和数据被动获取

cacti我们也用了很久了,但是它的表结构一直都没有去关心过,得空抽了半个晚上的时间,把它的库表结构大概看了下,某些字段的含义跟大家分享下:cacti的数据都是存放在rrdtool中的,数据库存放的其实只是配置数据,cacti的逻辑对象主要分为三种,data(数据).graph(图片).host(设备),这在它的表设计中也能很容易的看出来.所以,就分三个大类来讨论了. 一.Hostcacti的host一般是要使用模板的,每个host自己的信息,只存放在host表中,其余的就都是模板的信息,模板的

Activiti数据库表结构(表详细版)

http://blog.csdn.net/hj7jay/article/details/51302829 1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头. 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配. u  ACT_GE_* : “GE”代表“General”(通用),用在各种情况下: u  ACT_HI_* : “HI”代表“History”(历史)

mysql表结构表空间和索引的查询

1.查询表的结构信息 Sql代码 desc tableName; show columns from tableName; describe tableName 上面的结果返回的结果是一样的. 2 查询表的列信息. Sql代码 select * from information_schema.columns where table_name='tableName'; 3 查看库中所有的库 Sql代码 SELECT LOWER(schema_name) schema_name FROM infor

MySQL复制表结构,表数据。

1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错. 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2

mysql 复制表结构,表数据

1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错. 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2

【SQL 代码】SQL复制数据表及表结构

select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 以上两句都是将'源表'的数据插入到'目标表',但两句又有区别的: 第一句(select into from)要求目标表不存在,因为在插入时会自动创建. 第二句(insert into select from)要求目标表存在,由于目标表已经存在,所以我们除了插入源表的字段外,还可以插入常量,如例中的:5. 示例 目前有数据如下: 现在要将

mysql从一个表中拷贝数据到另一个表中sql语句

这一段在找新的工作,今天面试时,要做一套题,其中遇到这么一句话,从一个表中拷贝所有的数据到另一个表中的sql是什么? 原来我很少用到,也没注意过这个问题,面试后我上网查查,回来自己亲手写了写,测试了下,确实有的.现在我记录下. 这个语句是:insert into A select * from B;这个语句根据需要变化,字段一定要一致: 另一种是MySQL复制表结构及数据到新表:CREATE TABLE 新表 SELECT * FROM 旧表;例子sql语句:CREATE TABLE new_t

oracle 学习笔记 复制表结构

1.复制表结构以及数据 create table d_table_name as select * from s_table_name;  ---注意并不会创建索引 2.只复制表结构 create table d_table_name as select * from s_table_name where 1=2; 3.只复制数据 (1).两个表结构一样 insert into d_table_name select * from s_table_name; (2).两个表的结构不一样,只复制部