什么是主键?
在数据库中,主键是用来唯一标识一张表中的一条记录的字段或字段集合。主键的作用是保证数据表中的数据唯一性,并且可以为数据表中的数据建立关系,方便进行数据的管理和操作。
主键的特点:
唯一性:一张表中只能有一个主键,记录唯一性得到保障。
不为空性:主键可以是一个或多个字段组成,但组成主键的所有字段均不能为NULL。
不变性:主键的值在记录插入以后不能修改。
主键的类型
1. 自增主键
自增主键是指主键自动递增的一种形式,由数据库自动生成一个唯一的整数值来作为主键,不需要用户手动输入,一般使用的是自增长的id字段。
CREATE TABLE test(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL
);
2. 唯一索引主键
唯一索引主键是指使用唯一的索引来保证主键的唯一性,由用户输入主键值,如果用户输入重复的值时,则会报错,常用的有uuid。
CREATE TABLE test(
id CHAR(36) PRIMARY KEY,
name VARCHAR(20) NOT NULL
);
3. 复合主键
复合主键是使用多个字段来作为主键,可以有多列加入为主键,比如用户表可以使用(id,name)字段作为复合主键。
CREATE TABLE test(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(id,name)
);
如何设置主键?
在Oracle中,可以通过在创建表时对字段进行设置,或者对已有的表进行修改来设置主键。
1. 表创建时设置主键
在创建表时,可以使用CONSTRAINT关键字来指定主键:
CREATE TABLE test(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
CONSTRAINT pk_test PRIMARY KEY(id)
);
其中“pk_test”为主键的名称。
2. 表创建时设置复合主键
在创建表时,可以使用多个字段来设置复合主键:
CREATE TABLE test(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
CONSTRAINT pk_test PRIMARY KEY(id, name)
);
其中“pk_test”为主键的名称。
3. 已有表添加主键
在已有的表中添加主键,使用ALTER TABLE语句,先添加主键列,然后再添加主键约束:
ALTER TABLE test
ADD id INT NOT NULL;
ALTER TABLE test
ADD CONSTRAINT pk_test PRIMARY KEY(id);
其中“pk_test”为主键的名称。
4. 已有表添加复合主键
在已有的表中添加复合主键,使用ALTER TABLE语句,添加主键列后再添加主键约束:
ALTER TABLE test
ADD id INT NOT NULL;
ALTER TABLE test
ADD name VARCHAR(20) NOT NULL;
ALTER TABLE test
ADD CONSTRAINT pk_test PRIMARY KEY(id, name);
其中“pk_test”为主键的名称。
结束语
主键是关系型数据库中至关重要的一环,可以保证数据的唯一性,帮助表与表之间建立关系,方便数据的管理。通过本文,我们了解了主键的作用和类型,以及在Oracle中如何设置主键。希望对大家有所帮助。