主键约束展开目录
不允许重复元素,避免了数据的冗余
外键约束展开目录
通过外键约束从语法上保证了本事物所关联的其他事物一定是存在的
事物和事物之间的关系是通过外键来体现的
唯一约束展开目录
保证了事物属性的取值不允许重复,但允许其中有且仅有一组为空
not null展开目录
要求用户必须为该属性赋一个值,否则语法出错
如果一个字段创建时不写 null,也不写 not null,则默认是 null,即默认允许为空,用户可以不给该字段赋值,如果用户没有为该字段赋值,则该字段默认是 null
null 和 default 的区别展开目录
相同点
都允许用户不赋值
不同点
null 修饰的字段不赋值默认是 null
default 修饰的字段不赋值是 default
- create StuInf
- go
- stu_id int primary key,--主键约束
- stu_email nvarchar(200) unique,--唯一约束
- stu_name nvarchar(60) not null,--非空约束
- stu_score int check (stu_score >= 0 and stu_score <= 100),--check约束
- stu_sex nchar(1) default '男'--default约束
- go
-
- insert StuInf (stu_id,stu_email,stu_name,stu_score) values(1,"123@163.com","小明",95)
- insert StuInf values(2,"1234@163.com","小红",97,"女")
foreign key 和组合主码展开目录
- create database Test
- use Test
- go
- create table class--班级表
- (
- class_id char(10) primary key,
- class_sum int not null
- )
- go
-
- create table teacher--教师表
- (
- teacher_id char(10) primary key,
- teacher_name nvarchar(20) not null
- )
-
- create class_teacher_mapping--教师和班级的联系表,多对多的关系
- (
- class_id char(10) foreign key references class(class_id),
- teacher_id char(10) foreign key references teacher(teacher_id),
- course nvarchar(20) not null,
- primary key(class_id,teacher_id,course)
- )
关系展开目录
- 一对一:表 A 的主键当表 B 的外键,也可以把表 B 的主键当表 A 的外键
- 一对多:把表 A 的主键充当表 B 的外键(在多的一方添加外键)
- 多对多:多对多必须通过单独的一张表来表示,详情见上面教师班级之间的关系