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、导入源表中全部数据。有了这个思路,下面的操作就非常容易理解了。
创建步骤:
- 获取与源数据表完全一样的结构属性,包括基本信息和约束条件(LIKE);
- 将源数据表全部记录插入到目标数据表(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条件即可,非常简单,这里不再演示!
该功能非常实用,请同学们,一定要熟悉掌握!