在SQL数据库中,如何定义SQL主键是经常要遇到的问题,下面将为您介绍两种定义SQL主键的方法,供您参考,希望对那您有所帮助。
SQL主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说SQL主键在一张表中的记录值是唯一的。
建立SQL主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。
1在数据库提供的GUI环境中建立(以SQL7为例)。
输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。
2通过SQL语句执行建立。又分两种,一是在建表语句中直接写,二是建表之后更改表结构。
在建表语句中直接写:
Create Table 表名 (字段名1 Int Not Null,
字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
字段名3…………
字段名N………… )
建表之后更改表结构:
CREATE TABLE 表名 (字段名1 Int Not Null,
字段名2 nvarchar(13) Not Null
字段名3…………
字段名N…………)
GO
ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
[字段名1],
[字段名2]
)
GO
2.使用SQL语句创建主键约束
使用SQL语句创建主键约束可以在创建表(Create Table)或修改表(Alter Table)时进行 创建。
在修改表中创建主键约束语法:
ALTER TABLE table_name
ADD
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
{(Column[,…n])}
参数说明:
CONSTRAINT:创建约束的关键字。
constraint_name:创建约束的名称。
PRIMARY KEY:表示所创建约束的类型为主键约束。
CLUSTERED | NONCLUSTERED:是表示为PRIMARY KEY或UNIQUE约束创建聚集或非聚集索引的关键字。PRIMARY KEY约束默认为CLUSTERED,UNIQUE约束默认为 NONCLUSTERED。
下面在指定的数据库中创建一个名为mytable的数据表,并在该数据表中将“userid”列设置为主键。
*** 作步骤:
(1)在 *** 作系统中选择“开始”→“所有程序”→“Microsoft SQL Server”→“查询分析器”命令,打开查询分析器。
(2)在查询分析器的工具栏中选择要连接的数据库。
(3)在代码编辑区中编写如下代码。
SQL语句如下:
USE 销售管理系统 --引入数据库
GO
CREATE TABLE mytable --创建表
(
USERID int CONSTRAINT pk_id PRIMARY KEY, --创建主键约束
USERNAME char (20), --数据列
USERPASS char (20), --数据列
USERPHONE char (20), --数据列
USERADDRESS varchar (50), --数据列
USERLEVEL char(2) --
可以用如下方法进行设置:
第一,如果是用SQL语句建表,如下:(假设要让a和c组合作为主码)
create table t1(
a int,
b varchar(20),
c int,
primary key(a,c)
)
第二,如果用图形化界面做,按住ctrl键,然后选择a和c两个列,接着右键菜单选择“设置为主键”即可。
一个表中最多只能有一个主键,也可以没有。一个主键既可以是单一的字段构成,也可以是多个字段联合构成,如果是单一字段,只需在该字段后面标记primary key即可,如果是多个字段联合构成,则需要采用最开始介绍的那种方式设置。
sql的键值类型的主属性怎么设置?sql要怎么设置主键呢?本文以sql server数据库为例,讲解几种设置方式:
1)新建表时设置主键
2)修改表主键
3)sql语句删除主键
4)sql语句添加主键
5)sql语句修改主键
方法/步骤分步阅读
1
/8
打开SQL Server Management Studio管理工具,连接数据库
2
/8
新建表时设置主键- 打开新建表界面
1)展开要新建表的数据库
2)右键表菜单,依次选择新建->表
3
/8
新建表时设置主键- 设置主键
1)在“新建表界面”,加入两个测试列的行
2)选择任何一行,右键选择设置主键
3)联合主键设置:按住ctrl键,配合鼠标左键,可以多选几行,然后右键选择设置主键
4)添加列后,点击保存按钮,在d出框中输入“表名称”,点击确定按钮即可
4
/8
修改表主键- 打开设计表界面
右键选择要修改的表,选择设计菜单,即可打开此表的设计界面,此时,可以修改列名、列类型、长度等等
5
/8
修改表主键- 修改主键
1)在“表设计”界面,右键任何一行,选择“设置主键”
2)调整好表属性后,点击“保存”按钮即可
3)联合主键设置:按住ctrl键,配合鼠标左键,可以多选几行,然后右键选择设置主键
4)对于有数据的表,如果修改后的主键存在数据重复行,则会提示修改失败,此时,需要视具体业务场景删除重复记录或者更改另外的列作为主键
6
/8
sql语句删除主键
1)点击sql server管理工具的菜单新建查询,打开查询窗口
2)在查询窗口中输入截图的命令删除主键
ALTER TABLE 表名 DROP CONSTRAINT [键名];
7
/8
sql语句添加主键
1)点击sql server管理工具的菜单新建查询,打开查询窗口
2)在查询窗口中输入截图的命令添加主键
ALTER TABLE 表名 ADD CONSTRAINT 键名 PRIMARY KEY ( 列名,多个列名用逗号分隔 );
3)添加主键之前,如果该表原来有主键,需要先删除主键,再添加,就等同于修改主键了
8
/8
sql语句修改主键
1)点击sql server管理工具的菜单新建查询,打开查询窗口
2)在查询窗口中输入截图的命令修改主键
3)如果表存在主键,需要先删除原主键。
一、主键定义
数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义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
create table
(
id int identity(1, 1) not null primary key,
other_column varchar(50)
)
-- 对表设置主键的同时,数据库会自动的创建一个以主键作为名称的唯一索引的。
create table 表名(
a ,
b,
constraint 约束名 primary key(a,b)
);
如果是已建完表则 去添加 alter table table_name add constraint 约束名 primary key(a,b);
以上就是关于如何定义SQL主键全部的内容,包括:如何定义SQL主键、sql数据库中怎么设置多个列同时作为表的主键、sql的键值类型的主属性怎么设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)