Oracle emp_dept表结构与数据探究

5星 · 超过95%的资源 需积分: 45 245 下载量 88 浏览量 更新于2025-03-12 收藏 1KB RAR 举报
Oracle数据库是全球广泛使用的关系数据库管理系统(RDBMS),提供了完整的数据管理和信息处理功能,它包含了多样的工具和组件以帮助用户构建和管理数据库。在Oracle中,有两个用于学习和教学目的的内置示例表:EMP(员工表)和DEPT(部门表)。这些表提供了学习SQL语言(包括数据查询、更新、插入和删除)的良好平台,是数据库初学者和开发者实践基本操作的理想选择。 ### EMP(员工)表结构和数据 EMP表通常用来存储员工的相关信息,包括员工号、姓名、职位、部门编号、工资、入职日期等。在Oracle标准示例中,EMP表的结构可能包括以下列: 1. EMPNO - 员工编号(主键) 2. ENAME - 员工姓名 3. JOB - 员工职位 4. MGR - 管理员编号(指向同一表中的员工编号) 5. HIREDATE - 入职日期 6. SAL - 基本工资 7. COMM - 佣金(可选字段) 8. DEPTNO - 部门编号(外键,指向DEPT表) EMP表的数据展示了公司内部的组织结构和员工的岗位情况,是进行员工管理以及薪酬管理的基础数据集。 ### DEPT(部门)表结构和数据 DEPT表则记录了公司的部门信息,如部门编号、部门名称以及部门所在的地点等。在Oracle的标准示例中,DEPT表的结构可能包含以下列: 1. DEPTNO - 部门编号(主键) 2. DNAME - 部门名称 3. LOC - 部门所在位置 DEPT表的数据为EMP表提供了部门背景信息,使得可以关联员工和他们所在的部门,从而分析公司内部的组织结构。 ### 使用EMP和DEPT表学习SQL 使用这两个表,初学者和数据库管理员可以执行各种SQL语句来练习数据操作: - **数据查询(SELECT)**:可以用来检索员工信息、部门信息、以及根据特定条件筛选数据。 - **数据更新(UPDATE)**:用于修改员工记录,例如更新工资或职位。 - **数据插入(INSERT)**:允许添加新的员工或部门记录到数据库。 - **数据删除(DELETE)**:可以从数据库中移除不再存在的员工或部门记录。 ### 示例SQL语句 **查询所有员工的信息:** ```sql SELECT * FROM EMP; ``` **查询工资高于平均工资的员工:** ```sql SELECT * FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP); ``` **增加新部门:** ```sql INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (40, 'Research', 'Dallas'); ``` **更新员工的工资:** ```sql UPDATE EMP SET SAL = SAL + 100 WHERE EMPNO = 7369; ``` **删除一个部门以及该部门的所有员工:** ```sql DELETE FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'Research'); DELETE FROM DEPT WHERE DNAME = 'Research'; ``` ### 文件名称列表说明 文件名称列表中提到了两个文件:“emp_dept表数据.sql”和“emp_dept表结构.sql”。这表明有两个SQL脚本文件,一个用于展示表结构,另一个用于展示表中的示例数据。这些文件对于学习Oracle数据库管理和SQL语言具有非常重要的作用,可以通过实际操作这些文件来加深对数据库结构和数据操作的理解。 通过以上对EMP和DEPT表的介绍,学习者可以掌握基本的数据库操作技能,并且为将来处理更复杂的数据库问题打下坚实的基础。在Oracle数据库学习过程中,这些表是一个很好的起点。

请协助优化SQL,提高执行效率:WITH EMP_BASE AS( SELECT * FROM V_DEPT_EMP WHERE DEPT_NO3 NOT IN('TC0300','TC0310','TC0320') AND DEPT_NO1='TC0300' AND (OUTDATE IS NULL OR OUTDATE>TRUNC(SYSDATE)) AND INDATE<=TRUNC(SYSDATE) --GROUP BY PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3 ), LEAVE_OVER8 AS( SELECT T.PSN_ID, HCP.SF_BPM_ID_GET(T.PSN_ID, 9) ID_NO_SZ, HCP.SF_BPM_ID_GET(T.PSN_ID, 7) NAME_SZ, HCP.SF_BPM_ID_GET(T.PSN_ID, 2) DEPT_NO3, HCP.SF_BPM_ID_GET(T.PSN_ID, 3) DEPT_NAME3, BEGINTIME, ENDTIME, (SELECT ABSENCE_NAME FROM HR_ABSENCE_TYPE WHERE SEG_SEGMENT_NO = 'A001' AND ABSENCE_TYPE_ID = REASON) ABSENCE_NAME, HOUR, DAYS, MINS, REMARK FROM HR_ABSENCE T WHERE HOUR>=8 AND TRUNC(SYSDATE) BETWEEN TRUNC(BEGINTIME) AND TRUNC(ENDTIME) AND T.IS_ACTIVE = 'Y' ), ATTEND_CNT AS ( SELECT E.PLANT_NO,E.DEPT_NO1,E.DEPT_NO2,E.DEPT_NO3, COUNT(A.PSN_ID) WORK_CNT FROM EMP_BASE E JOIN HCP.V_EMP_CARDING A ON A.PSN_ID=E.ID WHERE TRUNC(A.CDAY)=TRUNC(SYSDATE) GROUP BY E.PLANT_NO,E.DEPT_NO1,E.DEPT_NO2,E.DEPT_NO3 ) SELECT TRUNC(SYSDATE) CDAY, E.PLANT_NO,E.PLANT_NAME,E.DEPT_NO1,E.DEPT_NAME1,E.DEPT_NO2,E.DEPT_NAME2,E.DEPT_NO3,E.DEPT_NAME3, COUNT(E.ID) AS TOTAL_EMP, NVL(A.WORK_CNT,0) WORK_EMP, COUNT(T.PSN_ID) LEAVE_EMP FROM EMP_BASE E LEFT JOIN HR_ABSENCE T ON T.PSN_ID=E.ID AND TRUNC(SYSDATE) BETWEEN TRUNC(BEGINTIME) AND TRUNC(ENDTIME) AND T.IS_ACTIVE = 'Y' LEFT JOIN LEAVE_OVER8 L ON E.ID=L.PSN_ID LEFT JOIN ATTEND_CNT A ON A.PLANT_NO=E.PLANT_NO AND A.DEPT_NO1=E.DEPT_NO1 AND A.DEPT_NO2=E.DEPT_NO2 AND A.DEPT_NO3=E.DEPT_NO3 GROUP BY E.PLANT_NO,E.PLANT_NAME,E.DEPT_NO1,E.DEPT_NAME1,E.DEPT_NO2,E.DEPT_NAME2,E.DEPT_NO3,E.DEPT_NAME3,A.WORK_CNT ;

2025-03-19 上传

在右侧编辑器中的Begin-End之间编写 SQL 语句,将指定的层次模型转换为相应的关系模型后创建并插入数据。具体要求如下: 层次模型图 将学生命名为 student,教研室命名为 edu,院系命名为 dept,职工命名为 emp。其中中字段解释如下: 字段名 建用字段名 系号 dept_id 系名 dept_name 地址 addr 教研室号 edu_id 教研室名 edu_name 学号 student_id 姓名 student_name 年级 level_class 职工号 emp_id 姓名 emp_name 职称 title 注意:创时外键字段名和主键字段名一致 插入数据如下图:在右侧编辑器中的Begin-End之间编写 SQL 语句,将指定的层次模型转换为相应的关系模型后创建并插入数据。具体要求如下: 层次模型图 将学生命名为 student,教研室命名为 edu,院系命名为 dept,职工命名为 emp。其中中字段解释如下: 字段名 建用字段名 系号 dept_id 系名 dept_name 地址 addr 教研室号 edu_id 教研室名 edu_name 学号 student_id 姓名 student_name 年级 level_class 职工号 emp_id 姓名 emp_name 职称 title 注意:创时外键字段名和主键字段名一致 插入数据如下图:在右侧编辑器中的Begin-End之间编写 SQL 语句,将指定的层次模型转换为相应的关系模型后创建并插入数据。具体要求如下: 层次模型图 将学生命名为 student,教研室命名为 edu,院系命名为 dept,职工命名为 emp。其中中字段解释如下: 字段名 建用字段名 系号 dept_id 系名 dept_name 地址 addr 教研室号 edu_id 教研室名 edu_name 学号 student_id 姓名 student_name 年级 level_class 职工号 emp_id 姓名 emp_name 职称 title 注意:创时外键字段名和主键字段名一致 插入数据如下图:

2025-03-19 上传
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部