Mysql第二章:完整性约束条件

目录

1:什么是完整性约束?为什么使用完整性约束?

2:约束分类(按照功能划分)

3:使用案例

3.1:PRIMARY KEY主键测试

3.2:AUTO_INCREMENT测试

3.3:NOT NULL(非空约束,插入不能给空值)

3.4:DEFAULT(列的默认约束)

3.5:UNIQUE KEY(唯一索引,一个表中可以有多个,同样的值不能重复,但是null除外)


1:什么是完整性约束?为什么使用完整性约束?

    数据完整性约束是为了防止不合规范的数据进入数据库,在用户进行增加、修改、删除等操作的时候自动按照一定约束条件进行检查,是不合规范的数据不能进入数据库,保证数据的完整和一致性。侧面也能提高程序运行效率,降低程序复杂性。

2:约束分类(按照功能划分)

1.UNSIGNED(表示没有负数从零开始,应用于mysql的数值类型)

2.ZEROFILL(当数值类型的数据长度不够时,会自动把0填充到数字前至数据的约定长度,自动添加UNSIGNED)

3.NOT NULL(非空约束,插入不能给空值)

4.DEFAULT(列的默认约束)

5.PRIMARY KEY(主键,标识数据唯一性,不能重复自动禁止为空)

6.UNIQUE KEY(唯一索引,一个表中可以有多个,同样的值不能重复,但是null除外)

7.AUTO_INCREMENT(用于数值类型自动增长,默认从1开始)

8.FOREIGN KEY(外键约束)

3:使用案例

3.1:PRIMARY KEY主键测试


CREATE TABLE test_primary_key(
    id INT PRIMARY KEY,   不加UNSIGNED
    username VARCHAR(20)
);
INSERT test_primary_key(id,name) VALUES(1,'张三');     运行结果成功
INSERT test_primary_key(id,name) VALUES(0,'张三');     运行结果成功

INSERT test_primary_key(id,name) VALUES(-1,'张三');    运行结果成功

 

CREATE TABLE test_primary_key1(
    id INT UNSIGNED PRIMARY KEY,
    name VARCHAR(20)

);

INSERT test_primary_key1(id,name) VALUES(1,'张三');  运行结果成功
INSERT test_primary_key1(id,name) VALUES(0,'张三');  运行结果成功

INSERT test_primary_key1(id,name) VALUES(-1,'张三');  运行结果失败

3.2:AUTO_INCREMENT测试

CREATE TABLE test_auto_increment(
id INT UNSIGNED KEY AUTO_INCREMENT,
username VARCHAR(20)
);
INSERT test_auto_increment(username) VALUES('A');运行结果成功
INSERT test_auto_increment(username) VALUES('B');运行结果成功
INSERT test_auto_increment(username) VALUES('C');运行结果成功
INSERT test_auto_increment(id,username) VALUES(15,'G');运行结果成功
INSERT test_auto_increment(username) VALUES('C');运行结果成功
INSERT test_auto_increment(id,username) VALUES(NULL,'E');运行结果成功

INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F');运行结果成功

3.3:NOT NULL(非空约束,插入不能给空值)

CREATE TABLE test_not_null(
a varchar(20),
b varchar(20) not null

);

 

INSERT test_not_null(a,b) VALUES('','');  真确
INSERT test_not_null(a,b) VALUES(NULL,NULL); 错误
INSERT test_not_null(a,b) VALUES(NULL,'abc'); 正确

 

INSERT test_not_null(a) VALUES('TEST'); 错误

3.4:DEFAULT(列的默认约束)

CREATE TABLE test_default(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED DEFAULT 18,
email VARCHAR(50) NOT NULL DEFAULT '382771946@qq.com'
);
INSERT test_default(username) VALUES('A');  成功显示默认值
INSERT test_default(username,age,email) VALUES('B',30,'imooc@qq.com'); 成功覆盖
INSERT test_default(username,age,email) VALUES('C',NULL,'imooc@qq.com'); 成功覆盖
INSERT test_default(username,age,email) VALUES('D',NULL,NULL); 错误邮箱无法插入空值
INSERT test_default(username,age,email) VALUES('D',null,''); 成功覆盖

INSERT test_default(username,age,email) VALUES('D',NULL,DEFAULT);  成功覆盖

3.5:UNIQUE KEY(唯一索引,一个表中可以有多个,同样的值不能重复,但是null除外)

 UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的例如用户表的身份证号码等。主键(只能有一个)=UNIQUE KEY(可以多个)+不等于空

CREATE TABLE test_unique(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
email VARCHAR(50) unique key,
card CHAR(18) unique key
);
INSERT test_unique(username,email,card) VALUES('A','A@QQ.COM','1'); 成功
INSERT test_unique(username,email,card) VALUES('A','1A@QQ.COM','12'); 失败username重复
INSERT test_unique(username,email,card) VALUES('B',NULL,NULL); 成功
INSERT test_unique(username,email,card) VALUES('C',NULL,NULL); 成功

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值