zoukankan      html  css  js  c++  java
  • MySQL-约束

    约束分类

    表级约束:针对两个或两个以上字段。只能在列定义后说明,且平时用很少。NOT NULL,DEFAULT无表级约束。
    列级约束:只针对一个字段。可以在列定义时说明,也可以在列定义后说明。
    NOT NULL 非空约束
    PRIMARY KEY 主键约束
    UNIQUE KEY 唯一约束
    DEFAULT 默认约束
    FOREIGN KEY 外键约束

    1.非空约束

    .NULL,字段值可以为空;
    .NOT NULL,字段值禁止为空。
    用于指定字段是否可以为空,语法:
    CREATE TABLE tbl_name (
    column_name data_type NULL/NOT NULL,
    ...
    }
    说明:默认是NULL,可以为空。

    2.主键约束PRIMARY KEY

    .每张数据表只能存在一个主键;
    .主键保证记录的唯一性;
    .主键自动为NOT NULL
    .AUTO_INCREMENT必须与主键一起使用,但主键没有要求一定要AUTO_INCREMENT;且AUTO_INCREMENT,即使INSERT失败,id也会自动增加。
    语法:
    CREATE TABLE tbl_name(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,----注意:只能是int型或float型,小数位数为0;且不需要给id赋值。
    ...
    );
    说明:创建完主键约束,会自动创建索引!

    3.唯一约束UNIQUE KEY

    .可以保证记录的唯一性
    .唯一约束的字段可以为NULL(与主键区别)
    .每张数据表可以存在多个唯一约束(与主键区别)
    延伸理解:唯一约束字段可以多个为NULL,如何保证记录的唯一性?实际在存储时只有一个为空,所以仍能保证记录唯一性。
    语法:
    CREATE TABLE tbl_name(
    column_name data_type UNIQUE KEY,
    ...
    );

    4.默认约束DEFAULT

    即当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
    语法:
    CREATE TABLE tbl_name(
    column_name data_type DEFAULT val,----注意DEFAULT可以与ENUM类型值进行结合使用,DEAFULT可以指定其中的值。
    ...
    );

    5.外键约束 FOREIGN KEY

    作用:保持数据一致性,完整性。实现一对一或一对多关心。
    注意:存储引擎必须是InnoDB!!
    外键约束要求
    实际经验:实际DB开发中很少使用物理外键约束,而是使用逻辑外键约束(通过在定义表的时候,通过存在语法上的逻辑关联而产生的外键,需要有连接关键词inner join 或者left join 等等和连接部分,也就是on后面的部分,如果需要对应的设置,也可以加上set等语句)

    6.约束与索引区别

    约束:为了保证数据完整性为目的;
    索引:快速定位特定数据,提高查询效率,确保数据唯一性。

  • 相关阅读:
    2021总结、2022展望
    新人报到
    第六次实验
    第五次实验
    第一次实验
    第三次实验
    第二次实验
    第四次实验
    实验七
    Tomcat10巨坑,软件不是越新越好。(用到tomcat9及以下就可以)
  • 原文地址:https://www.cnblogs.com/dLarger/p/12917584.html
Copyright © 2011-2022 走看看