当前位置:首页 > 行业动态 > 正文

Oracle数据库中主键定义的规范写法

在Oracle数据库中,主键是一种特殊的约束,用于确保表中的每一行都具有唯一的标识,主键可以由一个或多个列组成,这些列的组合值在整个表中必须是唯一的,主键的主要作用是提高数据的完整性和一致性,以及加速查询操作,在本教程中,我们将详细介绍如何在Oracle数据库中定义主键的规范写法。

Oracle数据库中主键定义的规范写法  第1张

1、单列主键

单列主键是指由表中的单个列组成的主键,这是最简单的主键类型,也是最常见的类型,在创建表时,可以使用以下语法定义单列主键:

CREATE TABLE employees (
  employee_id NUMBER(6) NOT NULL,
  first_name VARCHAR2(20),
  last_name VARCHAR2(25),
  email VARCHAR2(25),
  phone_number VARCHAR2(20),
  hire_date DATE,
  job_id VARCHAR2(10),
  salary NUMBER(8, 2),
  commission_pct NUMBER(2, 2),
  manager_id NUMBER(6),
  department_id NUMBER(4),
  PRIMARY KEY (employee_id)
);

在上面的示例中,我们创建了一个名为employees的表,其中包含一个名为employee_id的单列主键。NOT NULL约束确保employee_id列中的值不能为空。

2、多列主键

多列主键是指由表中的多个列组成的主键,在创建表时,可以使用以下语法定义多列主键:

CREATE TABLE employees (
  employee_id NUMBER(6) NOT NULL,
  first_name VARCHAR2(20),
  last_name VARCHAR2(25),
  email VARCHAR2(25),
  phone_number VARCHAR2(20),
  hire_date DATE,
  job_id VARCHAR2(10),
  salary NUMBER(8, 2),
  commission_pct NUMBER(2, 2),
  manager_id NUMBER(6),
  department_id NUMBER(4),
  PRIMARY KEY (first_name, last_name)
);

在上面的示例中,我们创建了一个名为employees的表,其中包含一个名为first_name和last_name的多列主键。NOT NULL约束确保这两列中的值都不能为空,当表中的数据量较大时,使用多列主键可以提高查询性能。

3、复合主键

复合主键是指由表中的多个列组成的主键,但这些列的组合值不要求在整个表中是唯一的,在创建表时,可以使用以下语法定义复合主键:

CREATE TABLE employees (
  employee_id NUMBER(6) NOT NULL,
  first_name VARCHAR2(20),
  last_name VARCHAR2(25),
  email VARCHAR2(25),
  phone_number VARCHAR2(20),
  hire_date DATE,
  job_id VARCHAR2(10),
  salary NUMBER(8, 2),
  commission_pct NUMBER(2, 2),
  manager_id NUMBER(6),
  department_id NUMBER(4),
  PRIMARY KEY (first_name, last_name, email)
);

在上面的示例中,我们创建了一个名为employees的表,其中包含一个名为first_name、last_name和email的复合主键。NOT NULL约束确保这三列中的值都不能为空,当表中的数据量较大时,使用复合主键可以提高查询性能,需要注意的是,复合主键中的每一列都必须具有唯一的值,但组合值不需要在整个表中是唯一的。

4、IDENTITY主键

IDENTITY主键是指在插入数据时,由数据库自动生成的主键值,在创建表时,可以使用以下语法定义IDENTITY主键:

CREATE TABLE employees (
  employee_id IDENTITY(1,1) NOT NULL,
  first_name VARCHAR2(20),
  last_name VARCHAR2(25),
  email VARCHAR2(25),
  phone_number VARCHAR2(20),
  hire_date DATE,
  job_id VARCHAR2(10),
  salary NUMBER(8, 2),
  commission_pct NUMBER(2, 2),
  manager_id NUMBER(6),
  department_id NUMBER(4),
);

在上面的示例中,我们创建了一个名为employees的表,其中包含一个名为employee_id的IDENTITY主键,当向表中插入数据时,数据库会自动为employee_id列分配一个唯一的值,IDENTITY主键通常用于自增字段,例如序列号或唯一标识符,需要注意的是,IDENTITY主键只能在整数数据类型上使用。

0