mysql之常见约束(很重要)

什么是约束(constraint)

保证表中的数据有效,完整性,一致性。

约束作用在哪

一般是字段。像用户名(不能重复).

常见的约束

  • 主键约束
  • 外键约束
  • 非空约束
  • 唯一约束
  • 自增长

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

1.怎么添加唯一约束 Unique Constraint
2.怎么添加非空约束 Not Null Constraint
3.怎么添加默认约束 Default Constraint
4.怎么设置字段的值自动增加 auto_increment

表级约束和列约束

  • 没有放在列的后面的约束,就是表级约束,表级约束常用于多个字段的联合约束,常定义放在最后一行。
  • 表级约束:联合约束
  • 列级约束:单一约束

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,但是允许有多个为空(null),。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE。

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) UNIQUE, --唯一,也就是赋值的时候不能重复
    location VARCHAR(50)
)

怎么给多个字段添加联合唯一约束

联合唯一约束:多个字段不能同时相同,什么意思,如果是两个字段是联合唯一约束,那么两个字段不能同时相等,但是可以一个子段相等一个字段不相等。

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) ,
    location VARCHAR(50),
    unique(name,location) --这样就是两个子段联合唯一约束,没有放在列后面,就是表级约束
)

怎么添加非空约束

关键词:NOT NULL;只有列级约束,没有表级约束。

例如:

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) NOT NULL, --not null 是非空约束,赋值时就必须给值
    location VARCHAR(50)
)

非空字段添加数据时必须赋值。

怎么使用默认约束

默认约束:即给字段一个默认值。
关键词:DEFAULT

例如:

CREATE TABLE t_emp(
    id INT PRIMARY KEY,
    name VARCHAR(22),
    sex VARCHAR(2) DEFAULT '男' --这就是给性别添加默认值 为男
) DEFAULT CHARSET=utf8;

注意:
如果是添加字符串型默认值要使用单引号,双引号也应该可以,这里根据实际情况来,如果是整型则不需要加任何符号;
如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。
设置表的属性值自动增加
在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

在这里插入图片描述

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:
在这里插入图片描述
命令行中代码如下

在这里插入图片描述

自增长约束

注意:在mysql 中,一张表中自增长约束(auto_increment)只能有一个。

  1. 自增长约束可以作用于主键时。
  2. 自增长约束作用于非主键时,必须要加上唯一约束unique.也就是自增长约束必须要搭配上唯一约束。不然会报错。

同时添加非空和唯一约束

在mysql 中,给一列同时添加非空约束和唯一约束,那么该字段就自动设置成了主键。

主键约束(非常重要)

主键约束:一种约束,等于非空约束和唯一约束的联合 约束,一张表只能有一个主键约束。(废话)
主键字段:主键约束的字段,可以有多个字段联合为主键字段,但是不推荐(废话)
主键值:主键约束的字段的值。(废话)
任何表都应该有主键,没有主键,表无效!!!
主键约束常用的类型:int,bigint,char

自然主键:主键值是一个自然数,和业务没有关系,开发中使用的较多。
业务主键:例如身份证号码作为主键,银行卡号作为主键。

自增

auto_increment,一开始不赋值给自增字段的话,一开始是1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值