SQL中外码有什么用? 在SQl中、主外键主要到底 是干什么用的?
作者&投稿:利纪 (若有异议请与网页底部的电邮联系)
在SQL SERVER中,外码是怎么建立的?有什么作用?~
建议去看下廖雪峰的教学,举了个例子,写的很明白。
主码的作用是为了标记表中信息的唯一性(例如学生的学号,身份证,工资编号等等),比如说要记录一个班的学生信息,如果同名的情况下怎么区分呢?就是通过主码(学号)他在一张表中一定是唯一的。并且要求输入记录时,主码不允许空。这是必须遵循的数据库的实体完整性规则。
外码指在一个表中是主码另外一个表中不是主码,这样的字段我们把他定义为外码。例如:
学生(学号,姓名,性别,年龄)主码 :学号
课程(课程号,课程名,学分)主码:课程号
选课(学号,课程号,成绩)主码(学号,课程号)外码:学号(他在学生表中是主码) 课程好(他在课程表中是主码)
在选课表中学号和课程号都是外码。那么他们的取值要么为空,如果有值的话,这个值必须在学生表中存在。
外码就是其他字段的主码,外码的取值只能是主码。如果取其他的值就会报错。建立的时候指定是哪个表中的哪个字段的外码就行
主键Primary key,唯一标示一个实体。是保证数据库的实体完整性,保证数据中数据的正确性和合理性,取值非空唯一。例子:create table 学生表(学号 int primary key)
外键Foreign,是用来使表与表之间联系。用来保证数据库的参照完整性,外键的取值必须来自参照表参照列的值,可以为空也可不为空。例子:create table 选课表(学号 int foreign key references 学生表(学号))
连接查询与内外键的关系:
连接的 连接条件:A表的主键 = B表的外键如果做连接的两表没有主外键关系,那么连接结果是笛卡尔积,没有意义。
例:学生表和选课表做连接,select *from 学生表,选课表where 学生表.学号(主键)=选课表.学号(外键)
主外键可以建级联级触发器,用来做级联删除、更新。作用原理还是因为主外键将两表联系。
建议去看下廖雪峰的教学,举了个例子,写的很明白。
主码的作用是为了标记表中信息的唯一性(例如学生的学号,身份证,工资编号等等),比如说要记录一个班的学生信息,如果同名的情况下怎么区分呢?就是通过主码(学号)他在一张表中一定是唯一的。并且要求输入记录时,主码不允许空。这是必须遵循的数据库的实体完整性规则。
外码指在一个表中是主码另外一个表中不是主码,这样的字段我们把他定义为外码。例如:
学生(学号,姓名,性别,年龄)主码 :学号
课程(课程号,课程名,学分)主码:课程号
选课(学号,课程号,成绩)主码(学号,课程号)外码:学号(他在学生表中是主码) 课程好(他在课程表中是主码)
在选课表中学号和课程号都是外码。那么他们的取值要么为空,如果有值的话,这个值必须在学生表中存在。