Oracle中主键和约束的使用与管理(oracle主键和约束)
Oracle中主键和约束的使用与管理
在Oracle数据库中,主键和约束是重要的关系型数据库管理工具。主键是用来唯一标识数据库表中的每一行数据的字段,而约束可以限制某些数据的取值范围和输入格式,在保证数据完整性和一致性的前提下,保证数据质量。本文将介绍Oracle中主键和约束的使用与管理。
主键的建立
在Oracle中,主键使用唯一标识符来标识唯一的记录。主键的创建方法如下:
CREATE TABLE table_name(
column_name1 datatype,
column_name2 datatype,
column_name3 datatype,
…
column_nameN datatype,
CONSTRNT constrnt_name PRIMARY KEY (column_name(s))
);
其中,关键字CREATE TABLE用来创建一个新的表格;在括号中定义数据表中的每个字段及其类型;关键字CONSTRNT用来创建一个约束;PRIMARY KEY代表创建一个主键;(column_name(s))用来定义主键所对应的列名。
例如,下面的代码段创建了一个名为employees的表,其中包含emp_id(员工ID),emp_name(员工姓名)和emp_dept(所属部门)三个列,emp_id是主键。
CREATE TABLE employees (
emp_id NUMBER(5),
emp_name VARCHAR2(50),
emp_dept VARCHAR2(50),
CONSTRNT pk_emp_id PRIMARY KEY (emp_id)
);
现在,我们就可以在employees表中插入一些数据:
INSERT INTO employees (emp_id, emp_name, emp_dept)
VALUES (1001, ‘John Smith’, ‘Sales’);
INSERT INTO employees (emp_id, emp_name, emp_dept)
VALUES (1002, ‘Mary Johnson’, ‘Marketing’);
INSERT INTO employees (emp_id, emp_name, emp_dept)
VALUES (1003, ‘David Lee’, ‘IT’);
INSERT INTO employees (emp_id, emp_name, emp_dept)
VALUES (1004, ‘Sarah Brown’, ‘Finance’);
一旦主键已经建立,Oracle会自动为emp_id列创建唯一索引,以确保该列中的值唯一。
约束的建立
在Oracle中,约束可以对数据表中的字段设置限制,以确保数据的完整性和一致性。Oracle支持以下几种类型的约束:
1. NOT NULL约束:强制数据库表中的某一列不允许为空值。
例如,下面的代码创建了一个名为employees的表,其中emp_name和emp_dept必须有值:
CREATE TABLE employees (
emp_id NUMBER(5),
emp_name VARCHAR2(50) NOT NULL,
emp_dept VARCHAR2(50) NOT NULL
);
2. CHECK约束:限制某些数据的取值范围。
例如,下面的代码创建了一个名为students的表,其中限制了age列必须在18到30之间:
CREATE TABLE students (
student_id NUMBER(5),
student_name VARCHAR2(50),
age NUMBER(2) CHECK (age BETWEEN 18 AND 30)
);
3. UNIQUE约束:确保数据库表中某一列的值不重复。
例如,下面的代码创建了一个名为accounts的表,其中account_no列必须唯一:
CREATE TABLE accounts (
account_no NUMBER(10) NOT NULL,
account_name VARCHAR2(50),
CONSTRNT uk_account_no UNIQUE (account_no)
);
4. FOREIGN KEY约束:确保数据库表中的数据在多个表之间保持一致性,用于连接两个表之间的关系。
例如,下面的代码创建了一个名为orders的表和一个名为customers的表,orders表的customer_id外键与customers表的customer_id主键关联起来,以确保订单中的顾客ID在顾客表中存在:
CREATE TABLE customers (
customer_id NUMBER(5) PRIMARY KEY,
customer_name VARCHAR2(50),
customer_eml VARCHAR2(50)
);
CREATE TABLE orders (
order_id NUMBER(10) PRIMARY KEY,
order_date DATE,
order_amount NUMBER(10,2),
customer_id NUMBER(5),
CONSTRNT fk_customer_id FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
);
总结
在Oracle数据库中,主键和约束是关系型数据库管理中非常重要的工具。通过使用这些工具,可以确保数据库中的数据完整性和一致性,保证数据质量。在实际应用中,建立主键和约束应该根据具体的应用需求和数据表结构来选择合适的方法和类型。