新手菜鸟的MySQL之旅(二) ——— 约束

如有语法概念错误、言语不够严谨处,请多多指教,小白在这里感激不尽。
一、什么是约束
约束(constraint):实际上就是表中数据的限制条件。

二、约束的作用
表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效。

三、常见的五种约束
1.not null:非空约束,指定某列不能为空;

create table student(
sno int primary key,
sname char(8) not null,
gender varchar(2) check (gender in ('男','女'))
)

2.unique:唯一约束,指定某列或几列组合不能重复;常见的注册用户名,如果已注册则提示已占用,重新输入。

create table student(
sno int primary key,
sname char(8) not null,
gender varchar(2) check (gender in ('男','女'))
)

3.primary key:主键,指定该列的值可以唯一地标识该列记录;在这里告诉和我一样才开始学习MySQL的萌新,其实你学到这里的时候,你发现创建主键后这个字段在所在的表里也包含了唯一性约束,而且不能为空。常见的主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

create table student(
sno int primary key,
sname char(8) not null,
gender varchar(2) check (gender in ('男','女'))
)

4.foreign key:外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性;学到这里,你会发现外键必须具有唯一性,所以一个表中的主键也能作为另一个表的外键。以下代码应该不然理解,不过课程表是单独一个表,此处省略时间没有写出来,选课表的字段属性大致分为选课流水号、学生学号、课程编号、成绩,此处学生学号与学生表的学生学号的关系就很默契,因为学生表的学生学号作为主键就会被其他表的外键所引用。这里就突显了外键约束来维护两个表之间数据的一致性。简言之,表的外键就是另一表的主键,外键将两表联系起来。

create table subselect(
selectid  int primary key,
sno int,
constraint fk_sno foregin key subselect(sno) references student(sno)
courseid int,
constraint fk_courseid foreign key subselect(courseid) references course(courseid),
grade int check(grade between 0 and 100)
)

5.check:检查,指定一个布尔表达式,用于指定对应的值必须满足该表达式。据说check在以前的版本是无效的,不过我现在用的版本是有效的o( ̄▽ ̄)ブ!

create table student(
sno int primary key,
sname char(8) not null,
gender varchar(2) check (gender in ('男','女'))
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值