SQL中的主键
来源:互联网 发布:js object比较 编辑:程序博客网 时间:2024/06/05 10:06
一、什么是主键
数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。
二、主键的作用
1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。
2、 作为一个可以被外键有效引用的对象。
三、主键的设计原则
1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。
2、 唯一性,这个原则就不用多说了。
3、 非空性:主键的值是不可重复的,也不可以为空。
4. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
5. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
6. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
四、创建主键
--在创建表时就可以对字段加上约束: create table Student ( StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性) StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空 StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名) StudentAge int DEFAULT ((0)), --加默认值约束 StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式) )
五、测试添加删除主键
--删除主键
alter table Stu_PkFk_S drop constraint PK_S
go
--增加主键
alter table Stu_PkFk_S add constraint PK_S primary key (sno)
go
- SQL中的主键
- SQL中的主键以及联合主键
- Sql server中的主键与外键
- Sql server中的主键与外键
- SQL中的主键和外键
- SQL数据库中的主键与外键
- sql-----主键
- SQL主键
- sql 主键
- SQL - 主键
- SQL Server中的联合主键、聚集索引、非聚集索引
- Microsoft SQL Server 2005中的外键表与主键表
- 关于sql server 2005数据库中的主键的属性设置
- 如何分清SQL数据库中的主键与外键
- SQL中的主键和外键以及索引小结
- SQL数据库中的主键与外键介绍
- SQL中的每一张表都必须设有主键吗
- SQL数据库中的主键与外键介绍
- CALayer创建图层和遮挡层应用
- Windows下CMD重置Mysql数据库的root密码
- STM32CubeMX:PWM
- 九大基础排序总结与对比
- 欢迎使用CSDN-markdown编辑器
- SQL中的主键
- Python 编程思想 —— 可迭代对象(iterables)
- Count Univalue Subtrees
- 开启个人博客(markdown真是一个强大的工具)
- Android学习------Dimens文件生成
- string 转timestamp
- Cocos Creator 脚本执行顺序(摘自官方文档)
- 如何学好C语言
- POJ1287Networking(最小生成树)