1
0

setup_database.sql 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. """
  2. 示例Oracle数据库创建脚本
  3. 用于创建测试数据库表和示例数据
  4. """
  5. -- 创建员工表
  6. CREATE TABLE EMPLOYEES (
  7. ID NUMBER PRIMARY KEY,
  8. NAME VARCHAR2(100) NOT NULL,
  9. DEPARTMENT VARCHAR2(50),
  10. SALARY NUMBER(10,2),
  11. HIRE_DATE DATE,
  12. EMAIL VARCHAR2(100),
  13. PHONE VARCHAR2(20)
  14. );
  15. -- 创建部门表
  16. CREATE TABLE DEPARTMENTS (
  17. ID NUMBER PRIMARY KEY,
  18. NAME VARCHAR2(50) NOT NULL,
  19. LOCATION VARCHAR2(100),
  20. BUDGET NUMBER(15,2)
  21. );
  22. -- 创建项目表
  23. CREATE TABLE PROJECTS (
  24. ID NUMBER PRIMARY KEY,
  25. NAME VARCHAR2(100) NOT NULL,
  26. DEPARTMENT_ID NUMBER,
  27. START_DATE DATE,
  28. END_DATE DATE,
  29. STATUS VARCHAR2(20),
  30. BUDGET NUMBER(15,2),
  31. FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENTS(ID)
  32. );
  33. -- 插入部门数据
  34. INSERT INTO DEPARTMENTS VALUES (1, 'IT', '北京', 1000000);
  35. INSERT INTO DEPARTMENTS VALUES (2, 'HR', '上海', 500000);
  36. INSERT INTO DEPARTMENTS VALUES (3, 'Finance', '深圳', 800000);
  37. INSERT INTO DEPARTMENTS VALUES (4, 'Marketing', '广州', 600000);
  38. INSERT INTO DEPARTMENTS VALUES (5, 'Operations', '成都', 700000);
  39. -- 插入员工数据
  40. INSERT INTO EMPLOYEES VALUES (1, '张三', 'IT', 12000, TO_DATE('2020-01-15', 'YYYY-MM-DD'), 'zhangsan@company.com', '13800138001');
  41. INSERT INTO EMPLOYEES VALUES (2, '李四', 'IT', 15000, TO_DATE('2019-05-20', 'YYYY-MM-DD'), 'lisi@company.com', '13800138002');
  42. INSERT INTO EMPLOYEES VALUES (3, '王五', 'HR', 8000, TO_DATE('2021-03-10', 'YYYY-MM-DD'), 'wangwu@company.com', '13800138003');
  43. INSERT INTO EMPLOYEES VALUES (4, '赵六', 'Finance', 10000, TO_DATE('2020-08-25', 'YYYY-MM-DD'), 'zhaoliu@company.com', '13800138004');
  44. INSERT INTO EMPLOYEES VALUES (5, '钱七', 'IT', 18000, TO_DATE('2018-11-30', 'YYYY-MM-DD'), 'qianqi@company.com', '13800138005');
  45. INSERT INTO EMPLOYEES VALUES (6, '孙八', 'Marketing', 9000, TO_DATE('2021-07-15', 'YYYY-MM-DD'), 'sunba@company.com', '13800138006');
  46. INSERT INTO EMPLOYEES VALUES (7, '周九', 'Operations', 8500, TO_DATE('2020-12-01', 'YYYY-MM-DD'), 'zhoujiu@company.com', '13800138007');
  47. INSERT INTO EMPLOYEES VALUES (8, '吴十', 'IT', 14000, TO_DATE('2019-09-20', 'YYYY-MM-DD'), 'wushi@company.com', '13800138008');
  48. INSERT INTO EMPLOYEES VALUES (9, '郑十一', 'Finance', 11000, TO_DATE('2020-04-10', 'YYYY-MM-DD'), 'zhengshiyi@company.com', '13800138009');
  49. INSERT INTO EMPLOYEES VALUES (10, '王十二', 'HR', 7500, TO_DATE('2022-02-28', 'YYYY-MM-DD'), 'wangshier@company.com', '13800138010');
  50. -- 插入项目数据
  51. INSERT INTO PROJECTS VALUES (1, '数字化转型项目', 1, TO_DATE('2023-01-01', 'YYYY-MM-DD'), TO_DATE('2023-12-31', 'YYYY-MM-DD'), '进行中', 500000);
  52. INSERT INTO PROJECTS VALUES (2, '人力资源系统升级', 2, TO_DATE('2023-03-01', 'YYYY-MM-DD'), TO_DATE('2023-09-30', 'YYYY-MM-DD'), '已完成', 200000);
  53. INSERT INTO PROJECTS VALUES (3, '财务审计系统', 3, TO_DATE('2023-06-01', 'YYYY-MM-DD'), TO_DATE('2024-03-31', 'YYYY-MM-DD'), '进行中', 300000);
  54. INSERT INTO PROJECTS VALUES (4, '市场推广活动', 4, TO_DATE('2023-04-01', 'YYYY-MM-DD'), TO_DATE('2023-10-31', 'YYYY-MM-DD'), '已完成', 250000);
  55. INSERT INTO PROJECTS VALUES (5, '运营优化项目', 5, TO_DATE('2023-02-01', 'YYYY-MM-DD'), TO_DATE('2023-08-31', 'YYYY-MM-DD'), '已完成', 150000);
  56. COMMIT;
  57. -- 创建一些有用的视图
  58. CREATE OR REPLACE VIEW V_EMPLOYEE_DEPT AS
  59. SELECT e.ID, e.NAME, e.DEPARTMENT, e.SALARY, e.HIRE_DATE, d.LOCATION, d.BUDGET AS DEPT_BUDGET
  60. FROM EMPLOYEES e
  61. LEFT JOIN DEPARTMENTS d ON e.DEPARTMENT = d.NAME;
  62. CREATE OR REPLACE VIEW V_DEPARTMENT_STATS AS
  63. SELECT d.ID, d.NAME, d.LOCATION, d.BUDGET, COUNT(e.ID) AS EMP_COUNT, AVG(e.SALARY) AS AVG_SALARY
  64. FROM DEPARTMENTS d
  65. LEFT JOIN EMPLOYEES e ON d.NAME = e.DEPARTMENT
  66. GROUP BY d.ID, d.NAME, d.LOCATION, d.BUDGET;
  67. COMMIT;