当前位置: 首页 > 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 会插入成功,表示当前还未进行分配班级。

    http://www.xdnf.cn/news/77167.html

    相关文章:

  1. C++学习之游戏服务器开发十四QT登录器实现
  2. Ubuntu与OpenHarmony OS 5.0显示系统架构比较
  3. 【我的创作纪念日】 --- 与CSDN走过的第365天
  4. JavaScript 笔记 --- part 5 --- Web API (part 3)
  5. 【后端】构建简洁的音频转写系统:基于火山引擎ASR实现
  6. 帕金森发病类型和阶段
  7. 深入探讨JavaScript性能瓶颈与优化实战指南
  8. 八数码难题
  9. C++:STL模板
  10. Spark-Streaming
  11. Kafka 消息积压监控和报警配置的详细步骤
  12. AbMole推荐:CRM197--增强免疫原性,突破疫苗研发困境
  13. 网络安全·第五天·TCP协议安全分析
  14. SuperMap GIS基础产品FAQ集锦(20250421)
  15. 前台调用接口的方式及速率对比
  16. 【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
  17. 前端之勇闯DOM关
  18. 迅为iTOP-RK3576开发板/核心板6TOPS超强算力NPU适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品
  19. NineData 与飞书深度集成,企业级数据管理审批流程全面自动化
  20. 应用的“体检”与“换装”:精通Spring Boot配置管理与Actuator监控
  21. Qt信号槽连接的三种方法对比
  22. 通信与推理的协同冲突与架构解耦路径
  23. Linux学习笔记2
  24. 常见的HTTP请求报错案例
  25. 数据结构*链表- LinkedList
  26. 用Go语言正则,如何爬取数据
  27. 前端如何优雅地对接后端
  28. django之数据的翻页和搜索功能
  29. yaml里的挪威问题是啥
  30. 从零开始搭建Django博客②--Django的服务器内容搭建