MYSQL的高级操作

169 阅读3分钟

一、克隆表,将旧表的数据记录生成到新的表中

方法一,先克隆表,再克隆表里的数据

create table 新表 like 旧表: #通过like方法复制旧表的表结构
insert into  新表 select * from 旧表: #向新表插入旧表查询的数据

可以保证新表的表结构和表数据和旧表是一致的

image.png

方法二,创建新表的同时导入旧表的数值

create table 新表 (select * from 旧表); 
#在创建表的时候直接引用旧表查询的结构和数据


可能会出现,新表的表数据和旧表是一样的,但是新表的表结构和旧表的不一致

image.png

二.清空表,删除表内的所有数据

方法一 delete

delete from 表名; #一行一行删除,删除比较慢

#delete 清楚表后,返回的结果内有删除的记录条目,delete工作时是一行地删除记录的,
如果表中有自增长字段,使用delete from 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录

image.png

方法二 truncate

truncate table 表名;
#TRUNCATE 清空表后,没有返回被删除的条目;
truncate 工作时是将表结构按照原样重新建立,因此在速度上turncate 会比 delete 清空表快;
执行完后不会返回记录条目数,清空表后再插入数据,自增字段会重新从1开的递增

image.png

三、创建临时表TEMPORARY

  • 临时表创建成功之后,使用show tables命令是考不到创建的临时表的,临时表会在链接退出后被销毁,
  • 如果在退出连接之前,也可以可执行增删改查等操作,比如使用drop table 语句手动直接删除临时表
  • 临时表一般用于测试使用,只有当前连接的用户才能看到,相同用户换个终端登录也看不到。退出当前连接(退出数据库)之后临时表会被销毁。

格式

create temporary table 表名 (字段 数据类型.....)

image.png

image.png

image.png

image.png

四、创建外键约束,保证数据的完整性和一致性

外键的定义

如果同一个属性字段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);

image.png image.png image.png image.png 为两个表加入数值

INSERT INTO hhh values(1,'李四');     #为主表插入数据 
INSERT INTO ggg values(1,'张三','南京');   #为从表插入数据 

image.png 删除主键表中的数据记录

注意:删除数据记录时,要先删从表再删主表。也就是说删除主键表的记录时,必须先删其他与之关联的表中记录
delete from ggg where id=1; //先删从表的数据  
delete from hhh where nid=1; //再删主表的数据

image.png