ThinkPHP5数据库实例详解 /操作数据表之复制数据表

操作数据表之复制数据表

复制数据表

复制数据表包括二部分信息:表结构和表中的记录

一、复制表结构

表结构字段属性包括

字段属性 说明
基本信息 字段名、类型、默认值、有无符号
约束条件 自增、主键、索引、为空、唯一、补零

1、复制表结构的基本信息

语法:

CREATE TABLE 目标表 AS SELECT * FROM 源表名 WHERE 恒假条件;

CREATE TABLE ...AS SELECT ....WHERE ....本是数据表复制语句,这里将条件设置为恒假,可以确保,只有表结构的基本信息复制到目标表中,而记录不会被复制。

实例:复制tp5_staff表的基本信息到tp5_temp1 表中

语句如下:

#创建tp5_temp1表,基本信息来自 tp5_staff 表 CREATE TABLE tp5_temp1 AS SELECT * FROM `TP5_STAFF` WHERE 1 > 2; #查看tp5_staff表结构信息 DESC `tp5_staff`; #查看tp5_temp1表结构信息 DESC tp5_temp1;

运行结果:

从运行截图看出,源表中的约束条件,如主键、自增、索引等约束条并没有复制到目标表中。

如果想得到一个与源表结构完全一致的新表,请看下一个语句。


2、复制表结构的完整信息

表结构的完整信息包括基本信息和约束条件

语法:

CREATE TABLE 目标表 LIKE 源表 ;

关键字:LIKE 本意就是像什么一样,诠释了这个语句的意思

实例:从tp5_staff中复制完整结构信息到tp5_temp2表中(基本信息+约束条件)

语句:

#创建tp5_temp2表, 全部结构信息来自 tp5_staff 表 CREATE TABLE tp5_temp2 LIKE tp5_staff; #查看tp5_staff表结构信息 DESC `tp5_staff`; #查看tp5_temp1表结构信息 DESC tp5_temp1;

运行结果:


3、创建数据表时,导入已存在数据表记录

1、创建数据表时,数据可以来自一张已经存在的数据表。
2、这也我们在上面的一个案例几乎一致。上例中我们只复制了源表的基本信息,现在我们除要复制表结构基本信息,还要把源表的全部数据复制过来
3、当然,也可以加入过滤条件,只复制部分信息。

语法:

CREATE TABLE 目标表 AS SELECT * FROM 源表名 [ WHERE 条件];

CREATE TABLE ...AS SELECT ....WHERE ....可以将源表中符合条件的记录复制到目标表中,如果目标表不存在,自动创建。

实例:创建tp5_temp3表,数据全部来自tp5_staff表

语句:

#创建tp5_temp3表,数据全部自源于 tp5_staff 子查询 CREATE TABLE tp5_temp3 AS SELECT * FROM `tp5_staff` ; #查询 tp5_staff 表 SELECT * FROM `tp5_staff`; #查询 tp5_staff 表 SELECT * FROM tp5_temp3;

运行效果:

特别提示:

此操作仅复制了表的基本信息和全部记录,适合用于当前表的备份。如果要复制一张与源张完全一致的数据表,请用下面的方法。


4、创建与源数据表完全一样的新表

实例:复制tp5_staff全部数据,包括完整结构信息到新表tp5_temp4中。

思路分析:

有了上面的复制数据表的经验,我们不难总结出:如果要获得二张完全一样的表,可以分二步表:1、获取完整表结构信息;2、导入源表中全部数据。有了这个思路,下面的操作就非常容易理解了。

创建步骤:

  1. 获取与源数据表完全一样的结构属性,包括基本信息和约束条件(LIKE);
  2. 将源数据表全部记录插入到目标数据表(INSERT)

语法:

#获取源表全部属性 CREATE TABLE 目标表 LIKE 源表 ; #将源表全部数据插入到目标表中 INSERT 目标表 SELECT * FROM 源表

代码如下:

# 获取源表完整结构信息 CREATE TABLE tp5_temp4 LIKE tp5_staff ; #将源表tp5_staff中全部记录插入到目标表tp5_temp4中 INSERT tp5_temp4 SELECT * FROM tp5_staff; #查看源表tp5_staff表结构 DESC tp5_staff ; #查目标表tp5_temp表结构 DESC tp5_temp4 ;

运行效果如下:

下面再检查一下源表中的记录是否全部插入成功?

#查看源表 SELECT * FROM tp5_staff; #查看目标表 SELECT * FROM tp5_temp4;

查询结果如下:

可以看出,二张表完全一样,以后可以直接操作复制表,这样可以起到保护原始数据表的作用!
提示:如何仅插入部分记录,只需要设置WHERE条件即可,非常简单,这里不再演示!

该功能非常实用,请同学们,一定要熟悉掌握!