sql server 主键可以为空吗

 我来答
四舍五不入6
高粉答主

2019-10-07 · 还没有填写任何签名哦
四舍五不入6
采纳数:27 获赞数:71371

向TA提问 私信TA
展开全部

不能为空。

主键的设计原则:

1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id。

2、 唯一性。

3、 非空性:主键的值是不可重复的,也不可以为空。

4、也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

扩展资料:

SQL Server 作为世界上部署最广泛的数据库管理软件,承袭「Cloud-First」的精神,SQL Server 2014藉由突破性的效能与内建In-Memory技术,带来实时的性能改进,能够大幅提升资料处理与运算10倍的速度,该技术能够飞速处理数以百万条的记录,甚至通过SQL Server分析服务,轻松扩展至数以几十亿计的分析能力。

主键的作用:

1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。

2、 作为一个可以被外键有效引用的对象。

测试添加删除主键

--删除主键alter table Stu_PkFk_S drop constraint PK_Sgo

--增加主键alter table Stu_PkFk_S add constraint PK_S primary key (sno)go

参考资料来源:百度百科-sql server 2014

杜爷1号
推荐于2017-09-20 · 知道合伙人软件行家
杜爷1号
知道合伙人软件行家
采纳数:4973 获赞数:9186
毕业于福建农林大学,本科学士学位。从事IT行业3年,曾参与过多个大型项目的需求调研、软件研发。

向TA提问 私信TA
展开全部

什么是主键:

 

数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义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

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莫路草根
2015-07-20 · TA获得超过4102个赞
知道大有可为答主
回答量:4184
采纳率:85%
帮助的人:1036万
展开全部
不能为空. 这个是必须不能为空的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-07-20
展开全部
不能为空的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wrongcai
2015-07-20 · TA获得超过200个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:266万
展开全部
为空还叫主键么???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式