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表中的主键信息。

 

  

 

   

posted @ 2020-06-08 19:45  猎人7号  阅读(559)  评论(0编辑  收藏  举报