您的位置 首页 > 娱乐休闲

SQL关系型数据库主键与外键的含义及用法(干货)

定义:

主键(primary key):一张表(关系)的一个列(属性)或多个列可以作为主键,但是前提是让这个列作主键,这个列就能保证该列下的各个行(元组)的值不能相同。

外键(foreign key):一张表(关系)的列(属性)它同时存在表1和表2中,它不是表1的主键,而是表2的主键,就可以说他是表1的外键。

注意事项:

  • 一个表只能包含一个主键约束。

  • 主键不能超过 16 列且总密钥长度不能超过 900 个字节。

  • 由主键约束生成的索引不会使表中的索引数超过 999 个非聚集索引和 1 个聚集索引。

  • 如果没有为主键约束指定聚集或非聚集索引,并且表中没有聚集索引,则使用聚集索引。

  • 在主键约束中定义的所有列都必须定义为不为 Null。 如果没有指定为 Null 性,则参与主键约束的所有列的为 Null 性都将设置为不为 Null。

  • 如果在 CLR 用户定义类型的列中定义主键,则该类型的实现必须支持二进制排序。

SQL的主键和外键的作用:

主键和外键就是起约束作用。维护关系数据库的完整性:

主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。


创建SQL的主键和外键约束的方法:

一,如果表首次创建

CREAT TABLE 表A

(

列A1 int PRIMARY KEY IDENTITY(1,1),--加主键约束,标识列属性(两者构成实体完整性)

列A2 nvarchar(15) not null,--加非空约束,(不加"not null"默认为:可以为空)

列A3 text(20) FOREIGN KEY REFERENCES 表B (列B1),--加外键约束,格式:FOREIGN KEY REFERENCES关联的表名(字段名)

列A4 int DEFAULT ((0)),--加默认值约束

列A5 nvarchar (2) CHECK(列A5= N 'on' or 列A5 = N 'off' )--加检查约束,格式:check (条件表达式)

)

二,对已经存在的表,增加约束:

--主键:

ALTER TABLE 表A

add constraint PK_列A1

primary key (列A1)

--唯一约束:

ALTER TABLE 表A

add constraint UQ_列A1

unique (列A1)

--外键约束:

ALTER TABLE 表B

add constraint FK_B1--"FK"为外键的缩写

foreign key (列B2) references 表A(列A1)

附送SqlServer中的一些常用查询语句

--获取表结构

SELECT

FROM syscolumns,systypes

WHERE AND ('Student')

--单独查询表递增字段

SELECT [name] FROM syscolumns

WHERE id= OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1

--获取表主外键约束

EXEC sp_helpconstraint'StuResults'

--查询表主键外键信息

SELECT objectId,OBJECT_NAME)tableName,

FROM sysobjects INNER JOIN sysconstraints

ON ('C','F','PK','UQ','D')

AND =sysconstraints.constid

LEFT OUTER JOIN syscolumns ON

WHERE OBJECT_NAME)='StuResults'


号外:

候选键(Candidate Key):能唯一标识表(关系)中行(元组)的列(属性),则称该属性为候选键,也称 候选关键字 或 候选码;由此来看候选键可以不只一个,还看一看得出的就是主键同时它也是候选键。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“plsql如何设置主键,plsql如何设置主键自增,plsql设置主键语句,plsql设置主键自动增长”边界阅读