目录
作用:用来唯一标识表中的一行记录
关键字:PRIMARY KEY
(一)特点:
1.主键约束相当于唯一约束+非空约束的组合。
2.主键约束列不允许重复,也不允许出现空值。
3.一个表最多只能有一个主键约束,可以在列级创建,也可以在表级别上创建
4.主键约束对应表中的一列或多列(复合主键)
5.当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(主键查询的效率更高)
6.删除主键约束了,主键约束对应的索引就自动删除
7.不要修改主键字段的值,因为主键是数据记录的唯一标识,修改了就有可能破坏数据完整性
(二)添加主键约束
2.1格式:
CREATE TABLE 表明(
字段名 数据类型 PRIMARY KEY ,
字段名 数据类型
);
CREATE TABLE 表明(
字段名 数据类型,
字段名 数据类型,
CONSTRAINT 约束名 PRIMARY KEY(字段名)
);
2.2举例:
CREATE TABLE students(
id INT PRIMARY KEY ,
name VARCHAR(10)
);
添加值:
INSERT INTO students
values(1,'zha'),
(2,'zha'),#添加成功
(1,'zhang ')#添加失败,因为id重复
(3,null)#添加成功
(null,'asd')#添加失败,id不能为空
如果一个表建立两个主键约束:
CREATE TABLE students(
id INT PRIMARY KEY ,
name VARCHAR(10) PRIMARY KEY
);
报错:Multiple多重的
2.3建立表级约束:
CREATE TABLE students(
id INT ,
name VARCHAR(10),
CONSTRAINT stu_id_test PRIMARY KEY(id)
);
2.4建立表后增加主键约束
ALTER TABLE 表名称 ADD PRIMARY KEY(id);#字段列表可以是一个字段也可以是多个字段,如果是多个字段的话,是复合主键
(三)复合主键
3.1格式:
CREATE TABLE 表名(
字段名 数据类型,
字段名 数据类型,
PRIMARY KEY (字段名1,字段名2)
);
3.2举例:
CREATE TABLE students(
id INT ,
name VARCHAR(10) ,
PRIMARY KEY(id,name)
);
添加值:
INSERT INTO students
values(1,'zha'),
(1,'sa'),#添加成功
(2,'sa ')#添加成功
(1,zha)#添加失败与第一条重复
(四)删除主键
ALTER TABLE 表名称
DROP PRIMARY KEY;
注:删除时,不需要指定主键名,因为一个表只有一个主键,删除主键约束后,非空还存在