mysql 表的复制

6.1 表的准备工作
6.1.1 创建表:
    mysql> create table student(id int,name varchar(30),sex varchar(10));
    Query OK, 0 rows affected (0.01 sec)

    mysql> create table student1(id int,name varchar(30),sex varchar(10));
    Query OK, 0 rows affected (0.01 sec)

    mysql> create table student2(id int,name varchar(30));
    Query OK, 0 rows affected (0.00 sec)
6.1.2 查看表结构:
    mysql> desc student;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | sex   | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)

    mysql> desc student1;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | sex   | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)

    mysql> desc student2;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
6.1.3 student表中插入数据:
    mysql> insert into student values(1,'aa','female');
    Query OK, 1 row affected (0.01 sec)

    mysql> insert into student values(2,'bb','male');
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from student;
    +------+------+--------+
    | id   | name | sex    |
    +------+------+--------+
    |    1 | aa   | female |
    |    2 | bb   | male   |
    +------+------+--------+
    2 rows in set (0.00 sec)
6.2 mysql复制表数据
    sql语句: insert into
    表结构完全一样的时候可以使用 insert into table1 select * from table2;
    如果表结构不相同的时候需要指定列名。
实验一:将表student 表中的数据 复制到student1表中
    mysql> select * from student1;
    Empty set (0.00 sec)

    mysql> insert into student1 select * from student where id='1'; 
    Query OK, 1 row affected (0.00 sec)
    Records: 1  Duplicates: 0  Warnings: 0

    mysql> select * from student1;
    +------+------+--------+
    | id   | name | sex    |
    +------+------+--------+
    |    1 | aa   | female |
    +------+------+--------+
    1 row in set (0.00 sec)
实验二:将student 表指定列的数据插入student1到指定位置
    mysql> insert into student1(name) select name from student where id='1';
    Query OK, 1 row affected (0.00 sec)
    Records: 1  Duplicates: 0  Warnings: 0

    mysql> select * from student1;
    +------+------+--------+
    | id   | name | sex    |
    +------+------+--------+
    |    1 | aa   | female |
    | NULL | aa   | NULL   |
    +------+------+--------+
    2 rows in set (0.00 sec)
实验三:将表student 表中的数据 复制到student2表中
    mysql> insert into student2 select * from student where id='1';
    ERROR 1136 (21S01): Column count doesn't match value count at row 1

    结论:字段多的表不能直接插入到字段少的表
实验四:将student 表指定列的数据插入student2到指定位置
    mysql> insert into student2(id,name) select id,sex from student; 
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0

    mysql> select * from student2;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    1 | female |
    |    2 | male   |
    +------+--------+
    2 rows in set (0.00 sec)

    注意:为了实验,故意将字段错开
实验五:将student2 表的数据插入student
    mysql> insert into student select * from student2 ;
    ERROR 1136 (21S01): Column count doesn't match value count at row 1

    结论:字段少的表不能直接插入字段多的表
实验六:将student2 表指定列的数据插入student
    mysql> insert into student(name,sex) select 'aa',name from student2;
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0

    mysql> select * from student;
    +------+------+--------+
    | id   | name | sex    |
    +------+------+--------+
    |    1 | aa   | female |
    |    2 | bb   | male   |
    | NULL | aa   | female |
    | NULL | aa   | male   |
    +------+------+--------+
    4 rows in set (0.00 sec)

    注意:为了实验,故意将字段错开
6.3 mysql复制表结构
    create table 目标表名 like 原表名
6.3.1 实验
    mysql> create table student3 like student;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show tables;
    +--------------------+
    | Tables_in_shanTest |
    +--------------------+         |
    | student            |
    | student1           |
    | student2           |
    | student3           |
    | user1              |
    +--------------------+
    7 rows in set (0.00 sec)

    mysql> desc student;\
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | sex   | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)

    mysql> desc student3;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    | sex   | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)

    mysql> select * from student;
    +------+------+--------+
    | id   | name | sex    |
    +------+------+--------+
    |    1 | aa   | female |
    |    2 | bb   | male   |
    | NULL | aa   | female |
    | NULL | aa   | male   |
    +------+------+--------+
    4 rows in set (0.00 sec)

    mysql> select * from student3;
    Empty set (0.00 sec)

    结论:create table table1 like table2,只能够复制表结构,不能够复制表内容。

猜你喜欢

转载自blog.csdn.net/shan_zhi_jun/article/details/79320801
今日推荐