SQLserver的七种约束。

create table teacher
(teacher_id int primary key,
teacher_name nvarchar(30)not null,
tlevel char(1) default('0') )

CREATE TABLE courses(cour_no
int,--加了主键会默认加上not null
constraint pk_cour_no primary key (cour_no),
cour_name nvarchar(20) not null,
teacher_id int,
constraint FK_teacher_id foreign key (teacher_id) references teacher(teacher_id),--做外键的字段要映射teacher表去,对应的是teacher表中的teacher_id这个字段。
remark nvarchar(max))
--选课表:学生的学号 选课的课号 --复合主键 复合主键是指两个字段组合起来不能重名、重复。选课表是一个关系表,不是实际存在的。关系表 表示:学生 和 课程 和 老师
create table stu_cou(
stu_no int,
cour_id int,
constraint PK_stuNO_CourID primary key(stu_no,cour_id),--
constraint FK_stu_no Foreign key (stu_no) references Student(stu_no),
constraint FK_COUR_ID foreign key (cour_id) references courses(cour_no))
--注意:外键中添加的数据如果在主键中找不到该数据,是不会让其保存进去的。
--七种约束:
--1.主键
--2.外键
--3.not null
--4.default() 如果字段的属性是int的默认就要给整型,如default(0),如果字段的属性是字符串的你就要给它整型或者空' '
--5.唯一约束 unique 在表里可以存在多个唯一 我这个约束里面不能存在同样的值。
--6.check 自定义的约束 只允许我们的sex只能填 男 或女
--7.identity 自增约束 自增约束是系统自动填值进去,它是从哪个值开始,每次增加多少。 identity(1,1)前面表示从1开始,后者表示每次增长1
--主键:
primary key
constraint pk_cour_no primary key (cour_no)
--复合主键:
constraint PK_stuNO_CourID primary key(stu_no,cour_id)
--外键:
constraint FK_teacher_id foreign key (teacher_id) references teacher(teacher_id)
alter table student_cou add constraint FK_stu_no Foreign key (stu_no) references Student(stu_no)
--
alter table student
add constraint CK_sex check(sex='男' or sex='女')

--有多个时:
alter table student
add constraint CK_sex check (sex in('男','女','人妖'))

alter table courses
add constraint uq_teacher_id unique(teacher_id) --指的是teacer_id 和remark加起来不能重复。

 

posted @ 2019-08-13 12:03  Abby_Bing  阅读(2267)  评论(0编辑  收藏  举报