MySQL表约束(1)

表约束

1. 什么是约束?
表约束是在创建表的时候,设计一些表的约束条件,用来保证数据的合法性和数据的正确性。
2.为什么要表约束?
就像法律用来规范人们的正确行为一样,**表约束也是为了规范程序员正确使用表的,**表约束是预先设置的,设置之后就对所有的插入和修改立即生效,比如非空约束设置好之后,如果添加和修改为NULL值就会报错。
如果没有表约束,会导致数据不正确,从而导致程序或现实中的业务无法推进和执行。

常见的约束类型:

约束说明
NOT NULL指示某列不能存储 NULL 值
UNIQUE保证某列的每行必须有唯一的值
DEFAULT规定没有给列赋值时的默认值
PRIMARY KEYNOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。
AUTO_INCREMENT自增约束,插入可忽略此字段,此字段会自己增加存储数值。默认是从1开始,每次递增1

注:
1.PRIMARY KEY:一张表里只能有一个主键,但一个主键可以有一个或多个字段。

1.非空约束

创建表时,可以指定某列不为空
语法:

create table 表名 (id int not null[,..];

在这里插入图片描述
当输入为空时,则显示添加错误:
在这里插入图片描述
一个表中的非空约束是没有限制的,可以有0-n个。

2.唯一约束(unique)

指定sn列为唯一的、不重复的
语法:

字段名 数据类型 unique

unique:给当前字段创建了一个唯一约束。
在这里插入图片描述
因为有了“1”这个编号了,所以不能再使用
在这里插入图片描述
一张表中可以有一个或多个唯一约束。

问答题:给某个字段只创建了唯一约束,没有指定非空约束
1.这个字段能不能插入NULL值?(可以)
2.这个字段能不能插入空值(’ ‘)?(可以)
3.能否重复插入NULL?(可以)
4.能否重复插入空值(’ ‘)?(不可以)
MySQL中NULL比较特殊,这个NULL不是一个值为“NULL”,他表示“没有”,暂时是没有值的意思。
注意事项:
1.唯一约束字段可以插入NULL。
2.唯一约束字段的NULL可以插入多个。
字段没有值:NULL
字段有值,此值就等于字符’null’;
这两个不相等
3.NULL和空(’ ')和’null’这三个是完全不相同的,不要搞混了。

查看唯一约束

show keys from 表名\G;

在这里插入图片描述

3.主键约束(primary key=unique+not null)

指定id列为主键
主键的特征:
1.主键可以由多个字段或多个字段组成
2.主键不能为空且唯一
3.一个表中只能有一个主键
语法:
1.

字段 字段类型 primary key

在这里插入图片描述

2.在这里插入图片描述
在这里插入图片描述

注意事项:

主键不能插入null;
主键不能为空值(’’);
(即使主键是字符类型,依然是不能插入空值。和not null 约束不同,not null字符串字段可以传入空值,而primary key不行)
联合主键:多个字段联合起来形成的主键,因此只要多个字段不重复,那么插入数据就可以成功。
独立主键:只有一个字段作为主键,因此主键不能出现重复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值