SQL 主键与外键的关系

转载:点击打开链接

SQL的主键和外键的作用:

外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

简而言之,SQL的主键和外键就是起约束作用。

主键、外键和索引的区别

定义:

主键--唯一标识一条记录,不能有重复的,不允许为空

外键--表的外键是另一表的主键外键可以有重复的可以是空值

索引--该字段没有重复值,但可以有一个空值

作用:

主键--用来保证数据完整性

外键--用来和其他表建立联系用的

索引--是提高查询排序的速度

个数:

主键--主键只能有一个

外键--一个表可以有多个外键

索引--一个表可以有多个唯一索引


use school
go
CREATE TABLE Student

(

    StudentNo int PRIMARY KEY IDENTITY(1,1),

    StudentName nvarchar(15) NOT NULL,

    StudentAge int DEFAULT ((7)),

    StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女'),

    StudentClass nvarchar(15)

)

 

CREATE TABLE Subject

(

    SubjectNo INT PRIMARY KEY IDENTITY(1,1),

    SubjectName NVARCHAR(15) NOT NULL

)

CREATE TABLE StuResults

(

    SR_No INT PRIMARY KEY IDENTITY(1,1),

    SR_StudentNo INT,

    SR_SubjectNo INT,

    SR_Score INT CHECK (SR_Score>=0 AND SR_Score<=120)

)

 

alter table StuResults

add constraint FK_StudentNo

foreign key (SR_StudentNo) references Student (StudentNo)

 

alter table StuResults

add constraint FK_Subject

foreign key (SR_SubjectNo) references Subject (SubjectNo)
go

你可能感兴趣的:(SQL)