Oracle面试题解析:SQL与函数应用

版权申诉
0 下载量 52 浏览量 更新于2024-07-07 收藏 869KB PDF 举报
"Oracle面试测试题,包括SQL题目和Oracle函数的应用,主要涉及数据库设计、主外键约束、数据插入、查询操作以及Oracle特定函数的使用。" 在Oracle面试中,掌握SQL语句和数据库设计是至关重要的。以下是对题目中涉及的知识点的详细解释: 1. **数据库设计与建表**: - **主外键关系**:在数据库设计中,主键用于唯一标识一个记录,外键则引用另一个表的主键,确保数据的一致性和完整性。在给定的班级表class和学生表student中,`classid`是class表的主键,同时也是student表的外键,用于关联学生和班级。 - **自动增长值**:在Oracle中,可以使用`序列(SEQUENCE)`来生成自动增长的编号,例如在系表中,可以创建一个序列来自动填充`departmentid`。 - **约束条件**:在建表时可以设置约束,如`NOT NULL`(非空约束)、`UNIQUE`(唯一约束)和`CHECK`(检查约束)。例如,`deptname`不能重复,`name`不能为空,`age`在15到30之间,`num`不超过30。 2. **数据插入**: - 题目给出了department、class和student表的部分测试数据,插入数据时需要满足前面提到的约束条件。 3. **SQL查询**: - **查询A**:使用`WHERE`子句和聚合函数`COUNT()`,找出人数大于等于28的系,即查询`class`表,按`deptname`分组,筛选`COUNT(*) >= 28`的记录。 - **查询B**:找出开设超过两个专业的系,需要联接`class`和`department`表,按`deptname`分组,筛选`COUNT(DISTINCT subject) > 2`的记录。 - **查询C**:展示学生全信息,使用`SELECT * FROM student JOIN class ON student.classid = class.classid JOIN department ON class.deptname = department.deptname`。 4. **Oracle函数应用**: - **查询1**:使用`CONCAT()`函数和`'--'`连接员工姓名和工作。 - **查询2**:使用`SUBSTR()`函数获取姓名的前三个字符和第四个字符后的部分。 - **查询3**:使用`INSTR()`函数查找字母'T'的位置,找出第一次和第二次出现的位置。 - **查询4**:使用`ADD_MONTHS()`函数减去12个月,找出12年前参加工作的员工。 - **查询5**:利用`LAST_DAY()`和`ADD_MONTHS()`找到当月倒数第三天,然后匹配员工入职日期。 - **查询6**:计算工作天数,可以使用`DATEDIFF()`或自定义方法。 - **查询7**:根据日薪计算公式,先确定每日工资,再除以每月天数(30天)。 - **查询8**:使用`TO_CHAR()`函数格式化日期,展示为`YYYY-MM`格式。 - **查询9**:使用`BETWEEN`操作符查询1987年2月到5月入职的员工。 了解并熟练运用这些知识点对于准备Oracle相关的面试至关重要,它们涵盖了数据库基础、SQL高级查询以及Oracle特有的函数操作。