概念の主键、外键
- 主键
定义:能够唯一标识一个事物的一个字段或多个字段的组合,被称为主键
语法:student_id int primary key identity;指定identity,该编号自动增长,从1开始增长;identity(100,5):以100开始,按5个数递增!
dbcc checkkident('emp',reseed,0);将emp表的主键值从新从1开始。
附注:
- 含有主键的表叫做主键表
- 主键通常都是整数,不建议使用字符串当主键(除非主键是用于集群式服务,才可以考虑使用字符串当主键)(集群式服务:跨数据库服务,即用户的请求需要通过不同的数据库联合使用)
- 主键的值通常不允许修改,除非本记录被删除。如果主键经常被修改,肯定主键定义有问题。
- 主键不要定义定义成id,而要定义成标明ID或者表名_id
- 要用代理主键,不要用业务主键
任何一张表,清冽建议不要使用有业务含义的字段充当主键
我们通常都是在表中单独添加一个整型编号充当主键字段
- 外键
定义:如果一个表中的若干个字段来自于另外若干个表的主键或者唯一键,则这若干个字段就是外键。
语法:student_id int foreign key;
注意:
- 外键通常是来自另外表的主键而不是唯一键,因为唯一键可能为null
- 外键不一定来自于另外的表,也可能来自于本表的主键。比如上司编号来自于员工编号,两个位于同一张表。
- 含有外键的表叫做外键表,外键字段来自的那张表叫做主键表。
问题:主键表和外键表的删除问题?
答案:先删除外键表,如果先删除主键表,会导致外键表的数据引号失败!