克隆表,将数据表中的记录生成到新的表中
-
方法一:通过LIKE方法,复制表的结构生成新的表(可保证新表的数据结构,跟旧表是一致的)
cerate table 新表 like 旧表;
insert into 新表 select * from 旧表;-
克隆表的结构
-
复制表的数据
-
-
方法二:(新表跟旧表的数据是一样的,但新表的结构可能和旧表不一致)
create table 新表 (select * from 旧表);
show create table 新表\G
select * from 新表;
- 此方法的表结构中,key和extra会消失,自增字段的默认值会变为对应位数的0
- 此方法的表结构中,key和extra会消失,自增字段的默认值会变为对应位数的0
清空表,删除表内所有数据
-
方法一:
delete from 表名;,不加where指定,就是删除全部。 -
方法二:
truncate table 表名;
两种方法各自的特点
- delete from:一行一行的删除数据记录,删除效率较慢,执行完后会返回删除的记录条目数;删完后再插入数据记录,自增字段仍然会以原来的最大记录自增。
- truncate table:直接重建表,清空速度比delete更快,执行完后不会返回记录条目数;清空表后再插入数据,自增字段会重新从1开始递增。
创建临时表
临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY(主键名)]);
-
临时表无法用SHOW TABLES看到
-
临时表只在当前连接中有效
-
临时表可以可执行增删改查等操作
-
临时表会在连接退出后被销毁
外键约束
两张表做级联的时候,用来保证表数据的完整和一致性的。
外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。
主键表和外键表的理解
- 以公共关键字作主键的表为主键表(父表、主表)
- 以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
创建外键约束
#创建主表class
create table class (cid int,cname varchar(10));
#创建从表student
create table student (id int,name varchar(10),age int,classid int);
#为主表class的cid字段添加一个主键约束。constraint为主键创建别名,主键名建议以“PK_”开头。
alter table class ADD constraint PK_CID primary key (cid);
#为从表student的classid字段添加外键,并将student 表的classid字段和class 表的cid字段建立外键关联。外键名建议以"FK_”开头。
#references关联主键表中的字段。
alter table student ADD constraint FK_CLASSID foreign key (classid) references class(cid);
#添加外键时必须关联主键(即先要添加主键,再添加外键)
#添加主键和外键时,即使不设置别名,系统也会自动创建一个别名。
-
创建主从表
-
创建主键
-
创建外键
-
对数据进行修改
-
插入数据时,先主再外
-
先插入主键所在表,再插入外键所在表
-
如果外键关联的主键并不存在,则会添加失败
-
-
删除数据时,先外再主
-
只有外键表中,没有与主键表词条记录相关的记录才能删除(先删除外键表的记录,再删除主键表的记录)
-
当外键表里仍存在与主键表此记录相关记录,则不能删除
-
-
查看和删除外键约束
查看外键约束
show create table student;
desc student;
删除外键约束。
alter table student drop foreign key FK_CLASSID; //先删除外键约束
alter table student drop key FK_CLASSID; //再删除键(即删除别名)
-
删除外键约束
-
删除别名