MySQL基本SQL语句(二)数据表高级操作

299 阅读3分钟

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

  • 方法一:通过LIKE方法,复制表的结构生成新的表(可保证新表的数据结构,跟旧表是一致的)
    cerate table 新表 like 旧表;
    insert into 新表 select * from 旧表;

    • 克隆表的结构 image.png

    • 复制表的数据 image.png

  • 方法二:(新表跟旧表的数据是一样的,但新表的结构可能和旧表不一致)
    create table 新表 (select * from 旧表);
    show create table 新表\G
    select * from 新表;
    image.png image.png image.png

    • 此方法的表结构中,key和extra会消失,自增字段的默认值会变为对应位数的0 image.png

清空表,删除表内所有数据

  • 方法一:delete from 表名;,不加where指定,就是删除全部。 image.png

  • 方法二:truncate table 表名; image.png

两种方法各自的特点

  • delete from一行一行的删除数据记录,删除效率较慢,执行完后会返回删除的记录条目数;删完后再插入数据记录,自增字段仍然会以原来的最大记录自增
  • truncate table:直接重建表,清空速度比delete更快,执行完后不会返回记录条目数;清空表后再插入数据,自增字段会重新从1开始递增

创建临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY(主键名)]);

  • 临时表无法用SHOW TABLES看到 image.png

  • 临时表只在当前连接中有效 image.png

  • 临时表可以可执行增删改查等操作 image.png

  • 临时表会在连接退出后被销毁 image.png

外键约束

两张表做级联的时候,用来保证表数据的完整和一致性的。

外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

主键表和外键表的理解

  1. 以公共关键字作主键的表为主键表(父表、主表)
  2. 以公共关键字作外键的表为外键表(从表、外表)

注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

创建外键约束

#创建主表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);
 
#添加外键时必须关联主键(即先要添加主键,再添加外键)
#添加主键和外键时,即使不设置别名,系统也会自动创建一个别名。
  • 创建主从表 image.png

  • 创建主键 image.png

  • 创建外键 image.png image.png

  • 对数据进行修改

    • 插入数据时,先主再外

      • 先插入主键所在表,再插入外键所在表 image.png image.png

      • 如果外键关联的主键并不存在,则会添加失败 image.png

    • 删除数据时,先外再主 image.png

      • 只有外键表中,没有与主键表词条记录相关的记录才能删除(先删除外键表的记录,再删除主键表的记录) image.png

      • 当外键表里仍存在与主键表此记录相关记录,则不能删除 image.png

查看和删除外键约束

查看外键约束
 show create table student;
 desc student;

删除外键约束。
 alter table student drop foreign key FK_CLASSID;   //先删除外键约束
 alter table student drop key FK_CLASSID;           //再删除键(即删除别名)
  • 删除外键约束 image.png image.png

  • 删除别名 image.png