MySQL【表的约束上】
一、表的约束在 MySQL 数据库的使用过程中我们会发现仅靠数据类型来限制字段远远不够 ——数据类型的约束能力单一无法从业务逻辑层面保证数据的正确性。比如要求用户表的邮箱字段唯一、订单表的用户 ID 必须关联存在的用户这些需求都需要表的约束来实现。通过表的约束 保证数据的合法性 从业务角度方面保证数据的正确性本质是通过技术手段 倒逼程序员插入正确的数据 反过来站在MySQL的视角凡是插进来的数据都是符合数据约束的数据库为什么需要这么严格因为数据库是我们维护数据的最后一道防线如果要确保数据的正确性和合法性需要更多的约束。二、空属性基础约束主要用于定义字段的基础规则比如是否允许为空、默认值是什么、字段的说明信息等是设计表时的基础配置。1. 空属性null /not nullMySQL 中字段的空属性只有两个值null默认允许字段为空和not null禁止字段为空。开发建议实际开发中尽可能将字段设置为not null因为null 值无法参与任何运算比如1null的结果还是 null会导致数据计算、统计出现异常。案例所以在设计数据库表的时候一定要在表中进行限制满足上面条件的数据就不能插入到表中这就是约束 。三、默认值当某个字段的数据会经常性出现固定值时可通过default为其设置默认值。插入数据时若不给该字段赋值系统会自动使用默认值若显式赋值则覆盖默认值。默认值生效数据在插入的时候不给字段赋值就使用默认值只有设置了default的列才可以在插入数据的时候对列进行省略建表的时候 , name 这里设置了not null , 系统不会再自动加上 default如果我们没有明确指定一列插入用的是default 如果建表中对应列没有设置默认的defalut值无法直接插入。default 和 not null 不冲突 而是互相补充的 。not null【null 或者 合法数据】default : 但用户忽略这个列的时候使用默认值【如果设置了】没有设置直接报错不设置not null的时候 会自动加上 defaultMysql 会对我们的字段的描述做优化 加了default null~四、列描述comment是字段的注释说明无实际业务功能仅用于描述字段含义方便程序员、DBA 理解表结构属于数据库的 “文档化” 配置。注意使用desc 表名无法查看注释需通过show create table 表名\G查看注意not null和defalut一般不需要同时出现因为default本身有默认值不会为空设置了default 无论填不填 值都不为空 not null的设置每意义了设置了 not null , 如果没写default 系统会自动加上 default nullcomment 是给程序员 DBA看的 是一种软性的约束五、zerofillzerofill是数字类型字段的专属约束作用是当数字的显示宽度小于设定的宽度时左侧自动填充 0。无zerofill时数字类型后的括号宽度如int(10)无实际意义zerofill仅影响显示效果数据库内部实际存储的还是原始数字搭配unsigned使用避免负数填充 0 的逻辑冲突。格式化显示建表描述如果宽度小于设定的宽度这里设置的是10自动填充0。要注意的是这只是最后显示的结果在MySQL中实际存储的还是1。为什么是这样呢我们可以用hex函数来证明。以看出数据库内部存储的还是2,0000000002只是设置了zerofill属性后的一种格式化输出而已a被定义为int not null没有指定unsigned因此是有符号整数。有符号int的取值范围是-2147483648到2147483647其中符号占一个字符最大可能显示的字符长度为 11例如-2147483648正好 11 位。MySQL 给有符号int的默认显示宽度就是11。b被定义为int unsigned not null无符号整数取值范围是0到4294967295最大值为 10 位数字所以默认显示宽度为10。六、主键主键是用于唯一标识表中每一条记录的约束是数据库中最常用的核心约束之一其核心特性为主键字段不能重复、不能为空一张表最多只能有一个主键主键字段通常设计为整数类型便于索引和查询。6.1主键约束主键约束主键对应的字段中不能重复一旦重复操作失败。主键约束程序员插入某个数据不重复6.2 删除主键删除主键6.3追加主键当表创建好以后但是没有主键的时候可以再次追加主键最好在建表的时候就把主键设置好 以防后面出现数据冲突 冲突数据都不太好处理6.4 复合主键复合主键当单个字段无法唯一标识记录时可将多个字段组合作为主键称为复合主键。复合主键的唯一性由所有组合字段共同保证只有当所有字段值都重复时才会触发主键冲突。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2409236.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!