伙伴们
我们先把数据库搞完
好不好呀

你们不出声
我就当你们同意了呦!

今天分享的是
约束
约束是一种限制,它是通过对表的行或列的数据做出限制,来确保表和数据的完整性、唯一性和正确性。约束分为 5 种。
一.主键约束(primary key)
用于约束表中的一个或多个字段,作为这一行的标识符,在一张表中通过主键就能准确定位到一条记录。主键要求这一行的数据不能重复且不能为空。


Java学习交流群:495273252
另一种添加主键的方式

Java学习交流群:495273252
我们可以看到新创建的表 t_user2 没有主键
现在输入
alter table t_user2 add primary key(user_id);

Java学习交流群:495273252
双主键

Java学习交流群:495273252

我们看见有两个主键
插入数据



这条数据插入失败了!就是说明我们插入数据的主键不能重复!
二.默认值约束(default)
有 default 约束的列时,当插入数据为空时那么就插入该默认值。
我们先来修改表 t_user1 的默认值

Java学习交流群:495273252
现在的性别默认值就是‘男’了!
如果你已经建表成功了!
可以使用下面的语句来修改默认属性!
alter table t_user modify sex varchar(10) default '男' not null;

Java学习交流群:495273252
我们没有插入 sex 和 birthday 的数据
展示出来的就是设置的默认值!
三.非空约束(not null)
必须要插入值(可以是空格)
还是拿性别这个选项举例子!

Java学习交流群:495273252
我们插入 空格 或者 空 都可以插入成功查询结果!

当插入 null 是 提示该字段的值不能为 null
空、空格和 NULL 的区别:
String s1 = ""; 空值
创建出了对象(已经开辟了内存空间,对象已经实例化),这个对象内容为空,也就是空字符串。
s1.length = 0; s1.isEmpty() = true;
String s2 = " "; 空格
创建出了对象(已经开辟了内存空间,对象已经实例化),这个对象内容为不为空,而是空格。
s2.length = 1; s2.isEmpty() = false;
String s3 = null; 空对象
还没创建出对象(未分配内存空间),值不存在。在调用所有对象方法时候都会抛出异常,如s3.length(), s3.isEmpty()等方法。
四.唯一约束(unique)
表的某字段如果是 unique,那么,这个字段的每一段不能重复,但是可以为null。
建表时的语句如下图所示!

Java学习交流群:495273252
就不给大家演示了
当表已创建成功就用下面的语句
create unique index u_n on t_user(mobile);


看到了吗?这边改成 UNI 了!
现在可以插入数据了,因为我们之前的数据都是一样的,代码通不过,所以我就把数据全清了!现在我们来插入几条数据!

Java学习交流群:495273252
当我想插入重复的mobile(手机号码)时,提示我出错!

Java学习交流群:495273252
知识点呀各位!可以为 NULL 不能重复!
五.外键约束(foreign key)
如果一个表的某个字段指向另一个表的主键,就称为外建。
被指向的表,称之为主表,也叫父表
指向的表,称之为从表,也叫子表
先来创建一张班级的表

再来创建一张学生表

Java学习交流群:495273252

Java学习交流群:495273252
两张张表创建成功
现在填入数据


Java学习交流群:495273252
在插入一条数据
insert into t_student values(null, '1005', '燕小六', 21, 5);

Java学习交流群:495273252
因为如果主表没有相关的记录,从表不能插入数据,应该先插入主表数据然后再插入从表数据。

Java学习交流群:495273252
我们来看一下结果

Java学习交流群:495273252
伙伴们今天的分享就到这里了
另外给伙伴们补充一下
上一篇拉下的内容
查看建表语句
show create table t_user;

Java学习交流群:495273252
是不是很6,可以看到我们的建表语句
删除表
drop table tb_name;

Java学习交流群:495273252
伙伴们记得回去练习一下呦!
学编程一定不能懒!
再见了!