一、克隆表,将旧表的数据记录生成到新的表中
方法一,先克隆表,再克隆表里的数据
create table 新表 like 旧表: #通过like方法复制旧表的表结构
insert into 新表 select * from 旧表: #向新表插入旧表查询的数据
可以保证新表的表结构和表数据和旧表是一致的
方法二,创建新表的同时导入旧表的数值
create table 新表 (select * from 旧表);
#在创建表的时候直接引用旧表查询的结构和数据
可能会出现,新表的表数据和旧表是一样的,但是新表的表结构和旧表的不一致
二.清空表,删除表内的所有数据
方法一 delete
delete from 表名; #一行一行删除,删除比较慢
#delete 清楚表后,返回的结果内有删除的记录条目,delete工作时是一行地删除记录的,
如果表中有自增长字段,使用delete from 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录
方法二 truncate
truncate table 表名;
#TRUNCATE 清空表后,没有返回被删除的条目;
truncate 工作时是将表结构按照原样重新建立,因此在速度上turncate 会比 delete 清空表快;
执行完后不会返回记录条目数,清空表后再插入数据,自增字段会重新从1开的递增
三、创建临时表TEMPORARY
- 临时表创建成功之后,使用show tables命令是考不到创建的临时表的,临时表会在链接退出后被销毁,
- 如果在退出连接之前,也可以可执行增删改查等操作,比如使用drop table 语句手动直接删除临时表
- 临时表一般用于测试使用,只有当前连接的用户才能看到,相同用户换个终端登录也看不到。退出当前连接(退出数据库)之后临时表会被销毁。
格式
create temporary table 表名 (字段 数据类型.....)
四、创建外键约束,保证数据的完整性和一致性
外键的定义
如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键
外键约束
两张表做级联得时候,用来保证表数据得完整和一致性的
主键表和外键表的理解
- (1)以公共关键字作主键的表为主键表(主键表、父表、主表)
- (2)以公共关键字作外键的表为外键表(外键表、外表、从表)
注意事项
- 与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
- 添加外键时必须关联主键(即主表先要添加主键,之后从表再添加外键)
4.1创建主键表和外键表
#创建主表hhh
create table hhh (nid int,cname varchar(10));
#创建从表ggg
create table ggg (id int,name varchar(10),adress varchar(50));
#为主表hhh的cid字段添加一个主键约束。constraint为主键创建别名,主键名建议以“PK_”开头。
alter table hhh ADD constraint PK_nid primary key(cid);
#为从表ggg的id字段添加外键,并将ggg表的id字段和hhh表的nid字段建立外键关联。外键名建议以"FK_”开头。 #references关联主键表中的字段。
alter table hhh ADD constraint FK_id foreign key(id) references class(nid);
为两个表加入数值
INSERT INTO hhh values(1,'李四'); #为主表插入数据
INSERT INTO ggg values(1,'张三','南京'); #为从表插入数据
删除主键表中的数据记录
注意:删除数据记录时,要先删从表再删主表。也就是说删除主键表的记录时,必须先删其他与之关联的表中记录
delete from ggg where id=1; //先删从表的数据
delete from hhh where nid=1; //再删主表的数据