SQL SERVER 数据库主键
SQL SERVER 数据库主键
SQL SERVER 数据库主键
一、什么是主键
数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义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
- sqlserver语句创建窗口布局(SQL Server 2012 开窗函数)
- 如何在sql server中解密视图(关于SQL Server加密与解密的问题)
- sqlserver如何可视化表(sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日)
- SQL语句查询SQL SERVER作业的调度信息
- SQL Server日期与字符串之间的转换
- sqlserver日志被删除(sql server日志处理不当造成的隐患详解)
- sql server中的死锁
- Sql Server事务日志
- sql server 货币型例子(sql server把退款总金额拆分到尽量少的多个订单中详解)
- sqlserver修改排序规则几种方法(SQL Server 分页编号的另一种方式推荐)
- 2015-10-1
- sql server 判断 null
- sql server 视图操作(Sql Server 视图数据的增删改查教程)
- sql server批量导出数据(SQL Server 批量插入数据的完美解决方案)
- 2021-10-28 10:49:05
- sql server表字段数据类型(SQL Server数据库中伪列及伪列的含义详解)
- 雄藩崛起 奇兵队与幕末长州藩军事改革(雄藩崛起奇兵队与幕末长州藩军事改革)
- 九月初,爱如蜜糖,甜到心扉,迷恋彼此,一日不见兮,思之若狂(九月初爱如蜜糖)
- ()
- 对你思念入骨的女人,跟你见面时会有这几种表现,藏都藏不住(对你思念入骨的女人)
- 纳兰性德绝美作,一场重逢,成就最后一首称得上惊艳的《如梦令》(纳兰性德绝美作)
- 如何快速赚钱(如何快速赚钱方法真实有效)
热门推荐
- docker本地项目生成镜像(docker images本地迁移的实现)
- parseInt()和parseFloat()
- sqlserver登录身份验证(SQL Server 2012 身份验证Authentication)
- vue-router底层实现原理(vue-router history模式服务器端配置过程记录)
- apache的优化建议(Apache 网站速度更快)
- 小程序数字化怎么布局(用position:sticky完美解决小程序吸顶问题的实现方法)
- dedecms调用点击数(织梦DEDECMS中显示复制地址,推荐给QQ/MSN上的好友的代码)
- python scrapy 框架原理(一步步教你用python的scrapy编写一个爬虫)
- 使用vue独立开发组件(vue单文件组件的实现)
- dockermysql配置详解(Docker 部署Mysql 服务和Redis 服务的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9