1. 克隆表,将数据表的数据记录生成到新的表中
方法1:
create table 新表 like 旧表; #通过LIKE方法,复制旧表的结构生成新表
insert into 新表 select * from 旧表 #将旧表数据导入新表
方法2:创建新表的同时,导入旧表数据。
create table 新表 (select * from 旧表)
次方法创建的新表的表结构和旧表是一样的,但可能会出现新表的表结构和旧表不一致
1.3 自增长配置以后从0开始
2. 查看表结构的三种方法
方法一:
desc 表名; #以表格形式显示表结构
方法二:
show create table 表名; #以创建表的命令形式显示表结构
方法三:
desc 表名\G #如果字段较多,也可以使用"desc 表名\G"的方式竖向显示表结构
3. 清空表,删除表内的所有数据
方法一: delete
delete from 表名;
#DELETE清空表后,返回的结果内有删除的记录条目;
DELETE 工作时是一行一行的删除记录数据的,删除时速度较慢;
如果表中有自增长字段,使用"DELETE FROM"删除所有记录后,新添加的记录会从原来最大的记录ID后面继续自增写入记录。
方法二: truncate
truncate table 表名; #相当于格式化,速度很快
#TRUNCATE清空表后,没有返回被删除的条目。
TRUNCATE 工作时是将表结构按原样重新建立,因此在速度方面 TRUNCATE 会比DELETE清空表快。
使用TRUNCATE TABLE清空表内数据后,ID会从1开始重新记录。
4. 创建临时表
-
临时表创建成功之后,使用"SHOW TABLES"命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
-
如果在退出连接之前,也可以执行增删改查等操作,比如使用"DROP TABLE"语句手动直接删除临时表。
-
临时表一般用于测试使用,只有当前连接的用户才能看到,相同用户换个终端登录也看不到。退出当前连接(退出数据库)之后临时表会被销毁。
create temporary table 表名(字段1 数据类型, 字段2 数据类型[,....] [, primary key (主键名)];
5. 创建外键约束,保证数据的完整性和一致性
外键的定义: 如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
外键的作用:
- 为了一张表记录的数据不要太过冗余。
- 保持数据的一致性、完整性。
主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:
- 与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
- 添加外键时必须关联主键(即主表先要添加主键,之后从表再添加外键)
5.1 创建主键表和外键表
创建主表
create table profession (proid int, proname char(5));
创建从表
create table student (id int primary key, name char(10), age int, pid int);
为主表的ProID添加一个主键约束,
alter table profession add primary key(proid);
为从表的pid添加外键
alter table student add constraint FK_pro foreign key(pid) references profession (proid);
#添加外键时必须关联主键(即先要添加主键,再添加外键)
#添加主键和外键时,即使不设置别名,系统也会自动创建一个别名。
5.2 插入数据
给主表插入数据
insert into profession values (1, '云计算'),(2, '大数据'),(3, 'java'),(4, '测试');
给从表插入数据
insert into student values (1, 'aa', 22, 1),(2, 'cc', 24, 3),(3, 'dd', 19, 2);
5.3 删除主键表中的数据记录
如果想删除主键表中的某条记录,必须先删除外键表中相关联的字段记录。
#删除数据记录时,要先删从表再删主表。也就是说删除主键表的记录时,必须先删除其他与之关联的表中的记录。
delete from student where name='aa'; #先删除从表数据
delete from profession where proid=1; #再删除主表数据
5.4 查看和删除外键约束
#查看外键约束
show create table student;
desc student;
alter table student drop foreign key FK_pro; 先删除外键约束
alter table student drop key FK_pro; 再删除键
6 总结
克隆表
create table 新表 like 旧表; 通过like方法复制旧表的表结构
insert into 新表 select * from 旧表; 向新表插入旧表查询的数据
可以保证 新表的表结构和表数据 跟就表示一致的
create table 新表 (select * from 旧表); 再创建新表的时候直接引用旧表查询的结构和数据
新表的数据和旧表是一样的,但可能会出现新表的表结构和旧表不一致
查看表结构
desc 表名; 以表格格式展示表结构
show create table 表名; 以SQ命令格式展示表结构,还能显示表的其他信息
清空表数据
delete from 表名;
一行一行的删除数据记录,删除效率较慢,执行完成后会返回删除的记录条目数,删完后在插入数据记录,自增字段任然会以原来的最大记录自增
truncate table 表名;
直接重建表,清空速度比delete更快,执行完后不会返回记录条目数,清空表后在插入数据,祖增字段会重1开始递增
临时表 临时保存表结构 表数据 测试场景
create temporary table 表名 (字段 数据类型, .....);
临时表只能在当前连接中有效,能正常被增删改查,但是show tables是看不到的,并且换一个或者退出当前后临时表会都失效