当前位置: 首页 > news >正文

【MySQL数据库】表的约束

目录

1,空属性

2,默认值

3,列描述

4,zerofill

5,主键primary key

6,自增长auto_increment

7,唯一键unique

8,外键foreign key


        在MySQL中,表的约束是指用于插入的数据必须遵循特定的规则,使其插入正确的数据,以保持数据库的数据是符合预期的。约束可以应用于列或整个表。

            表的约束很多,这里主要介绍如下几个:null/not null,default,comment,zerofill,primary key,auto_increment,unique,foreign key。

    1,空属性

            两个值:null(默认的)和 not null(不为空)

            数据库默认字段基本都是字段为空,因为约束字段默认为null。若是 not null 属性,那么插入时将不允许为空。

    2,默认值

            默认值:default [数据]

            默认值是插入数据时默认的数值。某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候, 用户可以选择性的使用默认值。

    3,列描述

            列描述:comment [列的描述]。没有实际含义,专门用来描述字段,用来给程序员进行了解。

            可发现,comment 注释信息通过desc查看不到,但通过show可以看到。

    4,zerofill

            zerofill 的主要用于数值类型的字段(如 int、bigint 等),用于将其格式化输出数据。具体来说,它的作用是用前导零填充数值,使得该列的显示宽度达到指定的长度。

            平常所看到如 int(10) 的数值类型就与该字段相关,int占比4字节,这里的10表示填充的宽度,若没有 zerofill 这个属性,括号内的数字是毫无意义的。

    create table t4(id int(5) zerofill);
    insert into t4 (id) values (3);

    insert into t4 (id) values (123456);

    此时,id列的数据为:00003、123456

    5,主键primary key

            主键 primary key 用来唯一的约束该字段里面的数据,表示该数据不能重复,不能为空。主键所在的列通常是整数类型。

            上面 t4表的描述里 key 对应的 PRI 表示主键。 创建表时,一张表中最多只能有一个主键,但这个主键可以由多个列组成,即复合主键。

            复合主键形式为:primary key(主键字段列表),如果有多个字段作为主键,可以使用复合主键。若创建表时没有添加主键,这里可运用相关指令追加主键,或者删除主键。

    删除表下的所有主键:alter table 表名 drop primary key;

    对没有主键的表追加主键:alter table 表名 add primary key(要追加列的名称);

    6,自增长auto_increment

            当对应的字段不给值时,它会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

            注意:首先,auto_increment修饰的列必须是表的主键或唯一键的一部分,如果没有将列定义为主键或唯一键MySQL不允许使用 auto_increment 属性。其次,auto_increment 和 default 不能同时使用,因为 auto_increment 列的值是由数据库自动生成的,通常从 1 开始递增,它的行为已经隐含了默认值的生成机制,而 default 也是MySQL默认值的自动生成,因此,这两个字段不能同时使用。上面这两点是自增长的约束。

    7,唯一键unique

            唯一键作用与主键差不多,都是保证一列中的所有值都是唯一的,不同的是主键不可以为空(null),但唯一键可以为空,且一个表中可以有多个唯一键。

            主键和唯一键的运用场景主要是在业务上。主键更多的是标识唯一性的,比如身份证号,而而唯一键更多的是保证在业务数据上,表示不要和别的信息出现重复。

    8,外键foreign key

            外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。在MySQL中,外键是一种用于建立和加强两个表数据之间连接的列。通过确保一个表中的数据与另一个表中的数据匹配。

    外键语法:foreign key (字段列名) references 主表(列名);

            由于外键约束,如果主表或从表存在依赖项的话,它会拒绝删除或更新操作。

            上面,我们设计了主表——班级表myclass 和从表——学生表stu,让学生表的 class_id 和班级表 id 形成关联关系,即在外表中建立外键约束。当向从表 stu 的 class_id 插入不存在于主表 myclass 的 id 列中的数据时,这里将插入失败。当然,插入 null 会插入成功,表示当前还未进行分配班级。

    相关文章:

  1. 工程投标k值分析系统(需求和功能说明)
  2. 使用Multipart Form-Data一次请求获取多张图片
  3. 真我推出首款 AI 翻译耳机,支持 32 种语言翻译
  4. 2.5 函数的拓展
  5. LangGraph(二)——QuickStart样例中的第二步
  6. C++ std::forward 详解
  7. 【源码】【Java并发】【ThreadLocal】适合中学者体质的ThreadLocal源码阅读
  8. 在 40 亿整数中捕获“恰好出现两次”的数字
  9. 动态提示词(小模型)、RAG和提示词系统
  10. 【CPP】固定大小内存池
  11. 蓝牙 6.0 发布,解锁无线科技新可能
  12. 【TeamFlow】4.3.2 细化时间单位
  13. ISO15189认证有什么要求?ISO15189认证流程
  14. 15.三数之和(LeetCode)java
  15. 数据集 | 柑橘果目标检测数据集
  16. 云原生--CNCF-1-云原生计算基金会介绍(云原生生态的发展目标和未来)
  17. Oracle--SQL事务操作与管理流程
  18. Vue2-样式相关
  19. 【高并发内存池】从零到一的项目之高并发内存池整体框架设计及thread cache设计
  20. 基于TCP的协议
  21. 中国政府援缅第八批紧急人道主义地震救灾物资抵达缅甸
  22. 这5种走路姿势,藏着疾病秘密,第2种你可能也有
  23. 一季度全国纪检监察机关共处分18.5万人,其中省部级干部14人
  24. 云南一季度GDP为7490.99亿元,同比增长4.3%
  25. 最高法报告点名“夜郎古酒”商标侵权案:促成当事人握手言和
  26. 著名作家、中国艺术研究院原常务副院长曲润海逝世