Skip to content

[!quote] 约束

约束 是处理数据库的规则

  • NOT NULL 非空约束:限制字段不能为 NULL
  • UNIQUE 唯一约束:保证字段所有数据唯一
  • PRIMARY KEY 主键约束
  • FOREIGN KEY 外键约束
  • DEFAULT 默认值约束:如果未指定字段的值,则采用默认值

主键

[!quote] 主键 主键 是用于唯一标识数据库表中每一行数据的字段/字段组合

[!hint] 对于主键的约束

  • 每个表都需要有主键【因为这便于以后的数据操作和管理】
  • 主键列不允许 null值
  • 包含主键值的列从不修改或更新
  • 主键值不能重用【如果从表中删除某一行,其主键值不分配给新行
sql
CREATE TABLE Vendors  
(                          //并且还定义了该字段不能为空
    vend_id      CHAR(10) NOT NULL PRIMARY KEY auto increment, //定义了vend_id字段为主键
    vend_name    CHAR(50) NOT NULL,             //此属性可以自动自增该字段的值
    vend_address CHAR(50) NULL
);
sql
ALTER TABLE Vendors  //表示需要修改的表是Vendors
    ADD CONSTRAINT PRIMARY KEY (vend_id);     //给该表添加一个主键 vend_id

外键

[!quote] 外键

外键 定义了一个表中的一个或多个字段,而这些字段来源于另一个表中的主键

  • 缺点
    • 影响增删改的效率【需要检查外键关系】
    • 容易引发数据库的死锁问题

如何创建外键

  • 在创建表时指定

    sql
    CREATE TABLE(
    	字段名 数据类型,
    	……
    	FOREIGN KEY(外键字段名) REFERENCES 主表(字段名)
    );
  • 在建表之后指定

    sql
    ALTER TABLE 表名 
    add constraint
    FOREIGN KEY(外键字段名) REFERENCES 主表(字段名);

唯一约束

[!quote] 唯一约束 唯一约束 用于确保表中的某个列/一组列值是唯一的

[!hint] 在唯一约束的列中,允许 NULL 值,且可以有多个 NULL 值

如何创建唯一约束

  • 在创建表时指定

    sql
    CREATE TABLE 表名 (
        字段名 数据类型 UNIQUE,   //使用UNIQUE关键字
        ...
    );
  • 在建表之后指定

    sql
    ALTER TABLE 表名
    ADD CONSTRAINT [约束名称] UNIQUE (字段名);

检查约束

检查约束是一种用于限制表中列值的条件约束,可以应用于单个列或多个列的组合

如何创建检查约束

  • 在创建表时指定

    sql
    CREATE TABLE 表名 (
        字段名 数据类型 CHECK (逻辑表达式),
        ...
    );
    
    ---
    
    CREATE TABLE 表名 (
    age int CHECK (age > 18),    //保证了age大于18
    ...
    );
  • 在建表之后指定

    sql
    ALTER TABLE 表名
    ADD CONSTRAINT [约束名] CHECK (逻辑表达式);

额外约束

时间约束

表中除了主键,还需要指定两个基础字段,一个是创建时间,一个是更新时间

前端动态渲染约束

如果要存储的某些值,在前端不会固定渲染的话,一般存储为 int【比如要存储性别,在前端可能渲染为男士,男生,男神,所以我们把性别存储为 int,在前端需要展示时再把 int 转换为具体的值】