sqlserver设置主键的实现步骤

 更新时间:2023年10月18日 15:48:02   作者:zgscwxd  
在SQLServer中,定义表的主键非常容易,本文主要介绍了sqlserver设置主键的实现步骤,具有一定的参考价值,感兴趣的可以了解一下

开始之前

限制和局限

  • 一个表只能包含一个 PRIMARY KEY 约束。

  • 在 PRIMARY KEY 约束中定义的所有列都必须定义为 NOT NULL。 如果没有指定为 Null 性,则加入 PRIMARY KEY 约束的所有列的为 Null 性都将设置为 NOT NULL

创建主键会自动创建相应的唯一群集索引、聚集索引或非聚集索引(如果这样指定)

若要重新定义主键,则必须首先删除与现有主键之间的任何关系,然后才能创建新主键。 此时,将显示一条消息警告您:作为该过程的一部分,将自动删除现有关系。

如果主键由多个列组成,则其中一个列将允许重复值,但是主键中所有列的值的各种组合必须是唯一的。

在SQL Server中,主键是数据表中唯一标识每一行记录的列,如果一个表没有主键,表中的记录将不能被区分开。此外,主键还有助于提高查询性能,使用主键加快了表中记录的访问速度,因此,在使用SQL Server进行数据库设计时,主键的设计就显得尤为重要。

首先,在数据库中创建好数据表后,可以使用以下T-SQL代码语句

1. 使用 T-SQL 命令,执行完命令后,主键就会被成功设置

ALTER TABLE 表名
ADD CONSTRAINT PK_主键名称 PRIMARY KEY (列名)

--其中,表名是要设置主键的表名,主键名称是主键约束的名称(可以自己定义),列名是要设置为主键的列名

ALTER TABLE sys_menu
ADD CONSTRAINT PK_menu_id PRIMARY KEY (menu_id)



ALTER TABLE student
ADD CONSTRAINT PK_student PRIMARY KEY (StuID) --将表中的StuID设为主键


ALTER TABLE student
DROP CONSTRAINT PK_student			  --将表中的主键约束PK_studnet删除





除此之外,在SQL Server中,还可以使用下列代码定义表的主键

CREATE TABLE table_name

(

column_name datatype PRIMARY KEY

)

CREATE TABLE student                                           --表名为student
(
	  StuID int NOT NULL PRIMARY KEY,                           --学生学号
	  StuName varchar(15) NOT NULL,                             --学生姓名
	  Sex char(2) NULL,                                         --性别
	  Major varchar(20) NULL,                                   --所选专业
)


primary key(列名1,列名2)

此外,在SQL Server中,还可以使用如下代码定义联合主键,也就是具有多个字段的主键。例如,要同时定义列customer_id和 order_id两个字段为一个联合主键,可以使用以下T-SQL代码

CREATE TABLE orders

(

customer_id INT,

order_id INT,

PRIMARY KEY(customer_id, order_id)

)

alter table 表名 add constraint pk_name primary key (列名1,列名2)

因此,在SQL Server中,定义表的主键非常容易,无论是单一主键还是联合主键,只需要几行代码,就可以完成定义。

设置主键并置为非空

 要先确定你要设置主键的的那列不为空,如果你的列为空,以下代码可以帮助你设为空并且添加主键

/*Table_Member是数据表的名字,StudentID 是要设为主键的列,bigint 是主键列的数据类型*/
ALTER TABLE Table_Member ALTER COLUMN StudentID bigint NOT NULL;
 
/*Table_Member是数据表的名字,StudentID 是要设为主键的列*/
ALTER TABLE Table_Member WITH NOCHECK
ADD CONSTRAINT PK_Table_Member PRIMARY KEY (StudentID)

更改已经建好的表中主键列的字符类型

同样的,这个操作也要分为两步,在SQL server 的设计理念中,主键列不可更改数据类型,如果要将不是主键的列更改字符类型,直接跳到第二步。

ALTER TABLE [表名] DROP CONSTRAINT [主键约束名]

ALTER TABLE [表名] ALTER COLUMN [列名] [数据类型]

到此这篇关于sqlserver设置主键的实现步骤的文章就介绍到这了,更多相关sqlserver设置主键内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 去掉前面的0的sql语句(前导零,零前缀)

    去掉前面的0的sql语句(前导零,零前缀)

    一个列的格式是单引号后面跟着4位的数字,比如’0003,’0120,’4333,我要转换成3,120,4333这样的格式,就是去掉单引号和前导的0,用以下语句就可以。
    2011-08-08
  • SQL Server附加数据库时出现错误的处理方法

    SQL Server附加数据库时出现错误的处理方法

    通过附加功能添加现成的数据库是非常方便的,然而有时会出现附加数据库失败,下面这篇文章主要给大家介绍了关于SQL Server附加数据库时出现错误的处理方法,需要的朋友可以参考下
    2022-12-12
  • SQL中创建存储过程

    SQL中创建存储过程

    这篇文章主要介绍了SQL中创建存储过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • sqlserver数据库高版本备份还原为低版本的方法

    sqlserver数据库高版本备份还原为低版本的方法

    这篇文章主要为大家详细介绍了sqlserver数据库高版本备份还原为低版本的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • sql server 编译与重编译详解

    sql server 编译与重编译详解

    这篇文章主要介绍了sql server 编译与重编译详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • SQL Server异常代码处理的深入讲解

    SQL Server异常代码处理的深入讲解

    这篇文章主要给大家介绍了关于SQL Server异常代码处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • 使用 SQL 语句实现一个年会抽奖程序的代码

    使用 SQL 语句实现一个年会抽奖程序的代码

    这篇文章主要介绍了使用 SQL 语句实现一个年会抽奖程序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • VS2015安装之后加装Sql server2014详细步骤

    VS2015安装之后加装Sql server2014详细步骤

    这篇文章主要介绍了VS2015安装之后加装SQL SERVER2014详细步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法

    SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法

    发生错误 1053-(服务没有及时响应或控制请求。),此时正在 MSSQLServer 服务上执行该服务操作。我立即上网查找相关信息,看见有人说是更改windows用户密码后便出现此类问题,但说得都不是很明白,所以自己想总结一下
    2013-06-06
  • MSSQL2000安全设置图文教程

    MSSQL2000安全设置图文教程

    Sql server 2000下建立独立帐号数据库方法来实现安全设置,目的是为了就是黑客得到mssql的sa密码,也只是低级的权限,不能进行超级管理员才有的权限。
    2011-01-01

最新评论