数据库的约束

约束:对表中的数据进行限制,不正确的数据无法添加到表中

举例:当表中约束不允许存在null值,null值不能添加到字段中                        

约束一共有四个种类:

1、主键约束        2、唯一约束        3、非空约束        4、外键约束

一、主键约束

作用:用来标识数据库中每一条记录,保证每条记录都有一个特定的id,通常把(int)id设为主键

主键的特性:非空,不能重复。

关键字:primary key

设置语法: id int primary key;

通常和auto_increment一起使用:让主键自增

举例使用:创建一张学生表(id,age,name):

CREATE TABLE student(

id INT PRIMARY key auto_increment,

age int,

name VARCHAR(5));

注:id是主键默认从1开始自动递增,不需要手动插入值,插入时用null代替

二、唯一约束

作用:表示某字段的值不能重复

关键字:unique

格式:字段 unique

三、非空约束

作用:表示某字段不能为null

关键字:not null

一般和default搭配使用,给非空字段设定一个默认值

格式:字段 not null default 默认值

距离使用:创建一张员工表(id,name,address,age)设置name不能重复,age不能为null,默认值为0

create table emp(

id int PRIMARY key auto_increment,

name VARCHAR(5) UNIQUE,

age int not null default 0)

四、外键约束

作用:一张表的字段值受到另一张表字段值的约束

关键字:foreign key

语法:[constraint] [外键名称] foreign key (外键字段名) references 主表(主键名);

一张表的字段的值受到另一张表的主键约束

被约束的表叫从表,另一张表叫主表

外键的创建方式:

alter table 表名 add constraint 外键名 foreign key(外键字段名)
references 外表表名(主键字段名)

外键级联:

级联操作:当修改和删除主表主键时,外键应该执行对应的操作。

级联关系:

(1)cascade:当更新或者删除主键时,外键也执行更新或者删除操作

(2)setnull:当更新或者删除主键时,外键自动设置为null

(3)no action:当从表中有匹配的主表的记录时,不允许对主键进行修改或删除

(4)restrice:类似no action

举例:

创建两张表

create table stu(
id int PRIMARY key auto_increment,
name VARCHAR(8),
age int,
course_id int)
 

CREATE TABLE course(
id int PRIMARY key auto_increment,
name VARCHAR(8),
classname VARCHAR(8))

创建外键

alter table stu add constraint c_id foreign key(course_id) references course(id)

往表中插入数据

设course中的数据为

id      name     classname

1        java        a教室

2        c++        b教室

3        html5     c教室

设往stu中的数据为

id      name      age     course_id

1        张三        18         1

2        李四        20        2

3        王五        21        3

4        赵六        22        4

则赵六的数据会报错,course_id被course表的主键约束,范围只能在1-3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值