MySQL 字段约束

1.MYSQL 字段约束

有时设置字段的数据类型还远远不够,还需要添加一些附加属性,如自动增量、自动补零、默认值设置等。这时可以使用字段约束来实现。

1.1. UNSIGNED
  • 只能用于设置数值类型。
  • 不允许出现负数,若是某些字段不需要插入负数,使用该属性可以将字段的最大储存长度增加一倍。例如:(TINYINT:原本储存长度为 -128 ~ 127,使用UNSIGNED后为 0 ~ 255)
1.2. ZEROFILL
  • 同上,只能用于设置数值类型。
  • 在数值之前自动用 0 补齐不足的位置
  • 当给字段使用其属性时,该字段自动应用UNSIGNED属性
1.3. AUTO_INCREMENT (此属性必须配合 KEY 值一起使用)
  • 该属性用于设置字段的自动增量属性
  • 设置后该字段的值不允许重复
1.4. NULL和NOT NULL(一般就使用默认值即可)
  • 字段默认为 BULL,即此字段未插入值(也可理解为默认值)
  • 如果指定了NOT BULL ,则必须在此字段插入值(否则报错,严格模式下)
1.5. DEFAULT
  • 此属性可以给字段添加默认值,在性别等字段使用

使用方法如下
在这里插入图片描述

1.6. 字段约束的使用

直接在建表或插入数据时,添加约束至数据类型后即可

这里拿 UNSIGNED 实验一下

在这里插入图片描述
建表成功,下面来对比一下两个表的数据
在这里插入图片描述
上面是没有使用字段约束的 TINYINT 类型,后面的括号代表了字节长度为 4 ( -128 ~ 127 ,符号也会算进去)
在这里插入图片描述
上面是使用了unsigneds字段约束的TINYINT类型,字节长度为 3 (0 ~ 255,没有负数符号,所以最大字节为 3)。

2.MYSQL 主键约束(PRIMARY KEY)

主键约束也是字段约束一种,保持了数据的唯一性,帮助我们更好找到需要的内容

关键字 : PRIMARY KEY

  • 每张数据表中只能存在一个主键
  • 作用为 保证记录的唯一性
  • 主键自动使用 NOT BULL 关键字
  • AUTO_INCREMENT必须和 PRIMARY KEY 一起使用。但是反过来,PRIMARY KEY则不需要,可以单独使用

下面将 AUTO_INCREMENT 使用一下
在这里插入图片描述
上面创建了 名为 tp2 的数据表,定义了 id 与 user 用了 不用的字段约束,下面来查看一下

在这里插入图片描述
下面来定义一下 user 的数据 ,并查看数据
在这里插入图片描述
可以看到,我们并没有给 id 设置具体的值,但是 AUTO_INCREMENT 字段约束会自动增量,于是当user 插入了值时,id 也会自动增量

注意:上面只是体现了 AUTO_INCREMENT 的特性,下面来看看 PRIMARY KEY 有什么作用

在这里插入图片描述
定义表 tp3
在这里插入图片描述
查看表,id 出现KEYPRI,并且不能为 NULL
在这里插入图片描述
向表中插入id值为 5成功。但是再插入同样的 id 值时却失败,将 5 换成其他数字,成功插入。
这就证明了 使用 PRIMARY KEY 可以将字段的值具有唯一性,不可重复

3.MYSQL 唯一约束(UNIQUE KEY)

唯一约束跟主键约束非常类似,不同的就是唯一约束可以 为空值 并且可以存在多个唯一约束

  • 关键字: UNIQUE KEY
  • 可以保证记录的唯一性
  • 可以为空值
  • 可以存在多个 UNIQUE KEY

在表中若是存在多个需要唯一标识的值时(例如:手机号、id值、身份证等),用PRIMARY KEY就不能完全满足需求了,这时 UNIQUE KEY 就可以更合适的使用

4.MYSQL 外键约束(FOREIGN KEY)

此约束作为了解,真实操作时不会这么直接使用外键约束

外键约束可以保持数据一致性,完整性。
实现一对一或一对多关系

  • 父表与子表必须使用相同的储存引擎,必须为 innoDB
  • 外键列(子表列)和参照列(父表列)必须具有相同的数据类型,且数字的长度和是否有符号位也必须相同,字符的长度可以不同
  • 外键列和参照列必须创建索引。否则MySQL将自动创建索引
  • 查看索引SHOW INDEXES FROM 表名

创建方式:FOREIGN KEY (外键列名) 参照表名 (参照列名)

下面来创建一个外键列,先创建父表(参照表)
在这里插入图片描述
下面创建子表
在这里插入图片描述
创建完成

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值