1conn lucifer/lucifer
2
3-- 基本信息表
4-- 包含基本的数据类型,如数字、字符串、日期等;包含主键和唯一约束。
5CREATE TABLE Basic_Info (
6 id NUMBER(10) PRIMARY KEY,
7 name VARCHAR2(50) NOT NULL,
8 age NUMBER(3),
9 gender CHAR(1) CHECK (gender IN ('M', 'F')),
10 birth_date DATE,
11 email VARCHAR2(100),
12 phone VARCHAR2(20) UNIQUE
13);
14
15-- 订单信息表
16-- 使用 TIMESTAMP 数据类型,以测试时间相关字段的迁移;包含检查约束 CHECK 以测试迁移时的约束兼容性。
17CREATE TABLE Orders (
18 order_id NUMBER(10) PRIMARY KEY,
19 customer_id NUMBER(10) NOT NULL,
20 order_date TIMESTAMP,
21 amount NUMBER(12, 2),
22 status VARCHAR2(20) CHECK (status IN ('PENDING', 'COMPLETED', 'CANCELED'))
23);
24
25-- 客户信息表
26-- 包含 DEFAULT 值,测试默认值的迁移;TIMESTAMP 类型的默认当前时间字段。
27CREATE TABLE Customers (
28 customer_id NUMBER(10) PRIMARY KEY,
29 name VARCHAR2(50) NOT NULL,
30 address VARCHAR2(200),
31 city VARCHAR2(50),
32 country VARCHAR2(50),
33 zip_code VARCHAR2(10),
34 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
35);
36
37-- 产品信息表
38-- 测试小数数据类型;包含检查库存数量是否为非负的 CHECK 约束。
39CREATE TABLE Products (
40 product_id NUMBER(10) PRIMARY KEY,
41 name VARCHAR2(100) NOT NULL,
42 category VARCHAR2(50),
43 price NUMBER(10, 2),
44 stock_quantity NUMBER(5) CHECK (stock_quantity >= 0)
45);
46
47-- 订单详情表(关联外键)
48-- 包含外键约束,测试外键的迁移;使用虚拟列 total_price,测试计算列的兼容性。
49CREATE TABLE Order_Details (
50 order_detail_id NUMBER(10) PRIMARY KEY,
51 order_id NUMBER(10) REFERENCES Orders(order_id) ON DELETE CASCADE,
52 product_id NUMBER(10) REFERENCES Products(product_id),
53 quantity NUMBER(5) CHECK (quantity > 0),
54 price NUMBER(10, 2),
55 total_price AS (quantity * price) VIRTUAL
56);
57
58-- 员工信息表
59-- 测试自引用的外键(如管理者的 ID);包含日期类型和数字类型。
60CREATE TABLE Employees (
61 employee_id NUMBER(10) PRIMARY KEY,
62 first_name VARCHAR2(50),
63 last_name VARCHAR2(50),
64 hire_date DATE,
65 department_id NUMBER(10),
66 salary NUMBER(10, 2),
67 manager_id NUMBER(10),
68 FOREIGN KEY (manager_id) REFERENCES Employees(employee_id)
69);
70
71-- 部门信息表
72-- 基础信息表,用于与其他表的外键关联;包含检查约束用于测试预算是否为正数。
73CREATE TABLE Departments (
74 department_id NUMBER(10) PRIMARY KEY,
75 name VARCHAR2(50) NOT NULL,
76 location VARCHAR2(100),
77 budget NUMBER(12, 2) CHECK (budget > 0)
78);
79
80-- 库存记录表(复杂表结构)
81-- 包含组合唯一约束,测试复杂唯一约束的兼容性;包含默认值时间戳字段。
82CREATE TABLE Inventory (
83 inventory_id NUMBER(10) PRIMARY KEY,
84 product_id NUMBER(10) REFERENCES Products(product_id),
85 warehouse_id NUMBER(10),
86 stock_level NUMBER(10),
87 last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
88 UNIQUE (product_id, warehouse_id)
89);
90
91-- 仓库信息表
92-- 仓库和员工有外键关系;用于测试数据库间表的跨引用。
93CREATE TABLE Warehouses (
94 warehouse_id NUMBER(10) PRIMARY KEY,
95 location VARCHAR2(100),
96 capacity NUMBER(10),
97 manager_id NUMBER(10),
98 FOREIGN KEY (manager_id) REFERENCES Employees(employee_id)
99);
100
101-- 销售统计表(分区表)
102-- 包含分区表结构,以测试分区表的迁移;
103CREATE TABLE Sales_Stats (
104 sales_id NUMBER(10) PRIMARY KEY,
105 year NUMBER(4) NOT NULL,
106 month NUMBER(2) NOT NULL,
107 month_start_date DATE DEFAULT SYSDATE NOT NULL,
108 product_id NUMBER(10) REFERENCES Products(product_id),
109 total_sales NUMBER(12, 2)
110)
111PARTITION BY RANGE (month_start_date)
112INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) (
113 PARTITION p_initial VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD'))
114);