SQL中主键的相关操作
PRIMARY KEY 关键字可以用来设置主键约束,PRIMARY KEY 关键字可以指定一列或者多列中的数据值具有唯一性,不存在相同的数据值。
在列上创建主键约束的语法格式如下:
column_name data_type PRIMARY KEY
定义数据表tb_emp2,其主键为id,SQL语句如下:
CREATE TABLE tb_emp2
(
id INT PRIMARY KEY, --定义id 为tb_emp2中的主键
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
给主键加约束名称,SQL语句如下:
CREAT TABLE tb_emp3
(
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
CONSTRAINT 员工编号 --给tb_emp3表中的id添加主键约束名称为:员工编号
PRIMARY KEY(id)
);
在创建Table中,忘记给Table添加主键。后续添加主键的方法如下:
ALTER TABLE able_name ADD COUSTRAINT 约束名称 PRIMARY KEY [CLUSTERED | NONCLUSTERED] [列名] [, ...n]
实例:定义tb_emp4,创建完成后忘了给Table添加主键,现将id字段添加为主键
CREATE TABLE tb_emp4
(
id INT NOT NULL,
name VARCHAR(15) NOT NULL,
deptId CHAR(20) NOT NULL,
salary FLOAT NOT NULL
);
执行下面这段SQL语句,就能给tb_emp4添加一个主键
GO
ALTER tb_emp4
ADD
CONSTRAINT 员工编号
PRIMARY KEY(id)
定义多字段联合主键(意思就是在一个Table中定义两个字段为主键) PRIMARY KEY
实例:在tb_emp5表中,假设没有主键id,为了确定一个员工,可以将name,deptId联合起来作为主键。SQL语句如下:
CREATE TABLE tb_emp5
(
name VARCHAR(15),
deptId INT,
salary FLOAT,
CONSTRAINT 姓名部门约束
PRIMARY KEY(name,deptId) --将name跟deptId两个字段同时定义为主键
);
使用主键约束需注意的事项:
1、一个表只能包含一个PRIMARY KEY 约束
2、由PRIMARY KEY 约束生成的索引不会使表中的非聚集索引超过249个,聚集索引超过1个。
3、如果没有为PRIMARY KEY约束指定 CLUSTERED 或 NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该PRIMARY KEY约束使用 CLUSTERED。
4、在PRIMARY KEY约束中定义的所有列都必须定义为 not null 定义的约束也一样 不能为 not null
删除主键的方法使用DROP语句将其删除:
ALTER TABLE table_name DROP CONSTRAINT 约束名
删除tb_emp5表中定义的联合主键,SQL语句如下:
ALTER TABLE tb_emp5 DROP CONSTRAINT 姓名部门约束
注:执行完删除主键,可以在SSMS对象资源管理器中,查看tb_emp5表中的主键信息。

浙公网安备 33010602011771号