视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL约束类型及举例介绍
2020-11-09 20:23:22 责编:小采
文档


约束 

  • 约束保证数据的完整性和一致性
  • 约束分为表级约束和列级约束
  • 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认约束),FOREIGN(外键约束)
  • 1.主键约束

  • PRIMARY KEY
  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性,主键的值不重复
  • 主键自动为 NOT NULL
  • 举例,创建一张student表,将学号设置为主键创建完表之后,通过SHWO COLUMNS FROM student查看表结构

    CREATE TABLE student(
    id int PRIMARY KEY,
    stu_name varchar(20)
    );

    2.唯一约束

  • UNIQUE KEY
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张数据表可以存在多个唯一约束
  • 举例,创建一个teacher表,id字段自增,tea_name唯一

    CREATE TABLE teacher(
    id int AUTO_INCREMENT PRIMARY KEY,
    tea_name varchar(20) NOT NULL UNIQUE KEY
    );

    3.默认约束

  • DEFAULT
  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
  • 举例,创建一张course表,默认上课时间为40分钟

    CREATE TABLE course(
    id int AUTO_INCREMENT PRIMARY KEY,
    cou_name varchar(20) NOT NULL UNIQUE KEY,
    time int DEFAULT 40
    );
    INSERT INTO course(cou_name) values('语文');

    4.非空约束

  • NOT NULL
  • 强制列不能为 NULL 值,约束强制字段始终包含值。
  • 这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
  • 举例,在 "Persons" 表创建时在 Id列、name列创建 not null 约束:

    create table Persons(
    id int not NULL,
    p_name varchar(20) not null, 
    deparment varchar(20),
    address varchar(20),
    telNum varchar(20)
    )
    DESC Persons;

    5.外键约束

  • FOREIGN KEY
  • 保持数据的一致性,完整性
  • 实现1对1或1对n关系
  • 1.父表与子表必须使用相同的存储引擎,而且禁止使用临时表。
    2.数据表的存储引擎只能是InnoDB
    3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
    4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

    CREATE TABLE school(
    id int AUTO_INCREMENT PRIMARY KEY,
    sname varchar(20) NOT NULL
    );
    CREATE TABLE student2(
    id int AUTO_INCREMENT PRIMARY KEY,
    sid int,
    FOREIGN KEY (sid) REFERENCES school(id)
    );

    外键约束的参照操作

  • CASCADE : 从父表删除或更新且自动删除或更新子表中匹配的行
  • 父表中被引用的列删除了某个数据,子表中删除对应数据的行
  • CREATE TABLE student3(
    id int AUTO_INCREMENT PRIMARY KEY,
    sid int,
    FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE
    );
  • SET NULL:从父表删除或更新行,并设置子表的外键列为NULL。如果使用该项,必须保证子表列没有指定NOT NULL
  • 父表中删除数据,将子表中的引用设置为NULL
  • RESTRICT:拒绝对父表的删除或更新操作
  • NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同
  • 总结

    下载本文
    显示全文
    专题