Oracle 创建表
创建表是数据库管理中的基础操作之一。在Oracle数据库中,CREATE TABLE
语句用于定义新表的结构,包括列名、数据类型、约束等。以下是一些具体的例子,帮助更好地理解和应用这一操作。
示例 1:创建一个简单的员工表
场景描述
希望创建一个用于存储员工基本信息的表,包括员工ID、姓名、电子邮件和入职日期。所有字段都是必需的(不允许为空),并且需要确保每个员工都有唯一的电子邮件地址。
创建表语句
CREATE TABLE employees (
employee_id NUMBER(6) PRIMARY KEY, -- 员工ID作为主键
first_name VARCHAR2(50) NOT NULL, -- 名字不允许为空
last_name VARCHAR2(50) NOT NULL, -- 姓氏不允许为空
email VARCHAR2(50) UNIQUE NOT NULL, -- 电子邮件必须唯一且不允许为空
hire_date DATE NOT NULL -- 入职日期不允许为空
);
插入数据示例
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date)
VALUES (101, 'John', 'Doe', 'johndoe@example.com', TO_DATE('2023-01-01', 'YYYY-MM-DD'));
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date)
VALUES (102, 'Jane', 'Smith', 'janesmith@example.com', TO_DATE('2023-02-01', 'YYYY-MM-DD'));
示例 2:创建一个包含更多字段和约束条件的员工表
场景描述
除了基本的个人信息,还希望记录员工的电话号码、职位、薪水、佣金比例、直属经理ID和部门ID。此外,需要确保薪水大于零,并且每个员工只能属于一个存在的部门。
创建表语句
CREATE TABLE departments (
department_id NUMBER(4) PRIMARY KEY,
department_name VARCHAR2(30) NOT NULL
);
CREATE TABLE employees (
employee_id NUMBER(6) PRIMARY KEY, -- 员工ID作为主键
first_name VARCHAR2(50), -- 名字
last_name VARCHAR2(50) NOT NULL, -- 姓氏不允许为空
email VARCHAR2(50) UNIQUE NOT NULL, -- 电子邮件必须唯一且不允许为空
phone_number VARCHAR2(20), -- 电话号码
hire_date DATE NOT NULL, -- 入职日期不允许为空
job_id VARCHAR2(10), -- 职位ID
salary NUMBER(8,2) CHECK (salary > 0), -- 薪水必须大于零
commission_pct NUMBER(2,2), -- 佣金比例
manager_id NUMBER(6), -- 直属经理ID
department_id NUMBER(4),
CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id) -- 部门ID是外键
);
插入数据示例
-- 插入部门信息
INSERT INTO departments (department_id, department_name)
VALUES (10, 'Administration');
INSERT INTO departments (department_id, department_name)
VALUES (20, 'Marketing')