MySQL的学习入门四

一、SQL注释

  1. 单行注释
    -- 注释说明 或 # 注释说明
  2. 多行注释
    /* */

在这里插入图片描述

二、数据完整性

  1. 实体完整性:
    • 主键约束
    • 唯一约束
    • 标识列
  2. 域完整性:
    • 数据类型约束
    • 非空约束
    • 默认值约束
  3. 引用完整性
    • 主外键约束
  4. 自定义完整性
    • 存储过程
    • 触发器

三、主表和从表

  1. 主表中没有的,从表不允许插入。
  2. 从表中有的,主表中不允许删除。
  3. 删除主表中,先删从表。

四、外键

外键只有在nnodb引擎才能支持外键。外键是从表中的公共字段。

  1. 创建主表:
    在这里插入图片描述

  2. 创建从表:
    在这里插入图片描述
    主表中没有的,从表不允许插入:
    在这里插入图片描述
    先插入主表的数据,再插入从表数据:
    在这里插入图片描述
    从表中有的,主表中不允许删除(要先删从表再删主表):
    在这里插入图片描述
    通过修改表的时候添加外键:
    alter table 从表名 add foreign key(公共字段) references 主表名(公共字段)

    删除外键,通过外键的名字删除外键:
    在这里插入图片描述

4.1 三种外键操作

4.1.1 严格限制

  1. 主表中没有的,从表不允许插入。
  2. 从表中有的,主表中不允许删除。
  3. 删除主表中,先删从表。

4.1.2 置空操作(set null)

如果主表记录删除,或关联字段更新,则从表外键字段被设置为null。

4.1.3 级联操作(cascade)

如果主表记录删除,则从表记录也被删除,主表更新,从表外键字段也更新。
语法: foreign key(外键字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作]
一般说删除时置空,更新时级联。

4.1.4 例题与小结

  1. 例题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    现在来试试主表删除和更新,从表是否也会删除和更新:
    更新:
    在这里插入图片描述
    删除:
    在这里插入图片描述

  2. 小结
    置空级联操作中外键不能是从表的主键。

4.2 解决插入数据时主键冲突

创建表:

create table ct(
	id char(4) primary key,
	name varchar(20)
	) engine=innodb;

在这里插入图片描述

插入数据:

insert into ct values ('ct01', 'jack');

在这里插入图片描述
当再次插入数据:
在这里插入图片描述
如果插入的主键重复就会报错。

  1. 解决方法一:如果插入的主键重复就执行替换。
    语法: replace into 表名 values ()
    在这里插入图片描述
    使用此语法如果数据不存在,可以直接插入:
    在这里插入图片描述
  2. 解决方法二:
    语法:on duplicate key update
    当插入的值与主键或唯一键有冲突执行update的操作:
    在这里插入图片描述
    推荐使用方法二。

在学习的MySQL的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

猜你喜欢

转载自blog.csdn.net/weixin_44103733/article/details/106868712