Mysql数据表和表数据复制

数据表复制

使用下面的写法复制时候会把db2的结构和索引复制过来,但是数据是不会复制过来的
CREATE TABLE  IF NOT EXISTS db1.a
LIKE db2.a

使用下面的写法复制时候会把db2的结构数据都复制过来,但是索引不会复制过来
CREATE TABLE  db1.a  
SELECT  *  FROM  db2.a

赋值数据可以在后面加条件过滤复制
CREATE TABLE  db1.a  
SELECT  *  FROM  db2.a where 条件

表数据复制插入

有的操作是导出成SQL文件再导入,如果字段名字不一致也好处理。
下面就讲解一下数据表数据导入的不同情况的SQL

1.表结构都一致
按照上面新建数据表那数据结构肯定一致了,就可以用一下的写法
INSERT INTO db1.a 
SELECT  *  FROM  db2.a

2.表结构不一致
INSERT INTO db1.a('id','name','age')
SELECT c.id,c.user_name,c.age FROM  db2.a as c

但是每一个字段数据的类型是要一致的哦
举一个栗子:
INSERT INTO `person`.`student` (
    `name_x`,
    `emp_no`,
    `mobile`,
    `age`,
    `id_card`,
    `hk_address`,
    `culture_degree`,
    `exam_result`,
    `sex`,
    `type_x`,
    `password`,
    `link_man`,
    `master_flag`,
    `create_by`,
    `create_by_name`,
    `create_date`,
    `update_by`,
    `update_by_name`,
    `last_update`,
    `ext_info`,
    `in_service`
)
SELECT
        s.principal,
        NULL,
        s.phone,
        sc.principal_age,
        s.id_card,
        s.address,
        s.education,
        NULL,
        s.sex,
        NULL,
        NULL,
        NULL,
        'owner',
        NULL,
        NULL,
        NULL,
        NULL,
        NULL,
        NULL,
        s.station_id,
        NULL
from user.student s
LEFT JOIN user.course sc on sc.id = d.course_id

可以根据例子发现可以联表并且加入条件,其实后面的就是查询,想怎么拼接都可以,但是结果数据类型和插入表字段数据类型要一一致,
以上操作都是在同一个mysql环境下操作的。不足的后面加入,记录一下。

 

《………………………………………………菜鸟起飞中,请各位走过路过的多多指教……………………………………》

                                                                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值