MYSQL约束的分类,和基本使用

基本介绍

约束用于确保 数据库的数据满足特定的商业规则.

根据约束起的作用,约束可分为:

  • NOT NULL 非空约束,规定某个字段不能为空

    #如果在列上定义了NOT NULL,那么当插入数据时,必须为列提供数据.
    字段名 字段类型 NOT NULL;

  • UNIQUE 唯一约束规定某个字段在整个表中是唯一的

    #当定义了唯一约束后,列值是不能重复的.
    字段名 字段类型 UNIQUE;

  • PRIMARY KEY 主键(非空且唯一)约束

    #用于唯一的表示表行的数据,当定义主键约束后,该列不能重复.非空且唯一
    列名 列名类型 PRIMARY KEY;
    ​
    #复合主键把多个字段看做一个整体
    #复合主键,复合主键表示要多个字段的内容要完全一致才被看做重复。
    #下面表示2个字段数据不能一模一样
    CREATE TABLE 表名(
        列名1,
        列名2,
        列名3,
        PRIMARY KEY(列名1,列名2)
    );

  • FOREIGN KEY 外键约束

  • 存储引擎必须是innodb的表才支持外键

  • 外键的字段类型必须和主键字段的类型一致.

  • 外键字段的值可以添加空值,前提是外键字段允许为null

  • 一单建立外键关系,数据不能随意删除了

    #用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是UNIQUE约束,
    #要求外键列数据必须在主表的主键列存在或是为null
    #主表中被外键的列有数据从表中才能添加数据
    CREATE TABLE 表名( -- 创建表时添加外键
        列名1,
        列名2,
        列名3,
       [CONSTRAINT][外键名称] FOREIGN KEY(本表字段)REFERENCES主表名(主键名或 UNIQUE 字段名)
    );
    ​
    --创建完表后添加外键
    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

  • CHECK 检查约束

  • 用于创建数据时约束数据添加的范围和条件.

  • 但是mysql 5.7版本目前还不支持CHECK约束,只做语法校验,单不会生效

  • 在MySQL 8.0.16版本之后支持CHECK约束

    #只做语法校验,单不会生效
    CREATE TABLE 表名(
        列名 INT  CHECK (列名 > 1000 AND 列名 <6000 ) 
    );

    ENUM枚举约束:在MySQL中, ENUM 是一个字符串对象,其值是从列创建时定义的允许值列表中选择的。

    #指定只能选择男或女
    CREATE TABLE 表名(
        列名1 ENUM ('男','女');
    );

    DEFAULT 默认值约束

    #创建列时添加默认值,如果添加数据时没有给数据值,会使用默认值。
    CREATE TABLE 表名(
        列名1 数据库类型 DEFAULT ''
    );

    AUTO_INCREMENT 自增长

    自增长细节:

    1:一般来说自增长是和primary key 配合使用的

    2:自增长也可以单独使用但是需要配合一个unique

    3:自增长修饰的字段为整数型的,虽然小数也可以但是非常非常少这样使用

    4: 自增长默认从1开始,你也可以通过如下命令修改

    alter table 表名 auto_increment = 新的开始值;

    5:如果你添加数据时,给自增长字段指定的有值,则以指定的值为准.

    #该列从1开始,自动的增长。
    CREATE TABLE 表名(
        列名1 INT PRIMARY KEY AUTO_INCREMENT; -- 主键且自增长
    );
    ​
    #修改一个表自增长默认的开始值
    ALTER TABLE 表名 AUTO_INCREMENT = 100;

猜你喜欢

转载自blog.csdn.net/han1725692339/article/details/125934666