sql server为什么要设置主键

sql server为什么要设置主键,第1张

一、主键定义

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

明白:updatejsp页面先获取IDint id=IntegerpaseInt(requestgetParameter("id"));如果你是通过表单提交另外一个页面(比如提交到doupdatejsp)有两个方法:方法一:<form action="doupdatejspid=<%=id%>" name="updatefrm" method="post"></form> 方法二:在表单里面添加隐藏域:<input type="hidden" name="id" value="<%=id%>"> 在doupdatejsp就用下面这样获取:int id=IntegerpaseInt(requestgetParameter("id")); 简单的问题,就是传了一个页面而已,还是JSP初学者吧!呵呵

以上就是关于sql server为什么要设置主键全部的内容,包括:sql server为什么要设置主键、如何根据主键ID值进行数据更新、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9818462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存