Oracle SQL 面试题知识点总结 本文档总结了 Oracle SQL 面试题中的常见知识点,涵盖了 SQL 语句编写、表操作、数据查询、数据分析等方面的内容。 一、SQL 语句编写 1. 查询每门课都大于 80 分的学生姓名: 可以使用以下 SQL 语句实现: ```sql SELECT name FROM student WHERE (SELECT COUNT(*) FROM score WHERE score.student_id = student.id AND score.score > 80) = (SELECT COUNT(DISTINCT course_id) FROM score WHERE student_id = student.id); ``` 2. 删除学生表中的冗余信息: 可以使用以下 SQL 语句实现: ```sql DELETE FROM student WHERE rowid NOT IN (SELECT MIN(rowid) FROM student GROUP BY student_id, course_id, score); ``` 三、表操作 1. 复制表结构: 可以使用以下 SQL 语句实现: ```sql CREATE TABLE b AS SELECT * FROM a WHERE 1 = 2; ``` 2. 复制表数据: 可以使用以下 SQL 语句实现: ```sql INSERT INTO b SELECT * FROM a; ``` 四、数据查询 1. 查询每个月份的发生额都比 101 科目相应月份的发生额高的科目: 可以使用以下 SQL 语句实现: ```sql SELECT AccID FROM TestDB WHERE Occmonth = 'X' --这里需要指定月份 AND DebitOccur > (SELECT DebitOccur FROM TestDB WHERE AccID = '101' AND Occmonth = 'X'); ``` 2. 将年月份和金额数据pivot成多列: 可以使用以下 SQL 语句实现: ```sql SELECT year, MAX(CASE month WHEN 1 THEN amount ELSE 0 END) m1, MAX(CASE month WHEN 2 THEN amount ELSE 0 END) m2, MAX(CASE month WHEN 3 THEN amount ELSE 0 END) m3, MAX(CASE month WHEN 4 THEN amount ELSE 0 END) m4 FROM your_table GROUP BY year; ``` 五、数据分析 1. 显示文章、提交人和最后回复时间: 可以使用以下 SQL 语句实现: ```sql SELECT a.title, a.username, b.adddate FROM table a JOIN (SELECT max(adddate) adddate, title FROM table GROUP BY title) b ON a.title = b.title; ``` 2. 外连接查询: 可以使用以下 SQL 语句实现: ```sql SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c; ``` 六、其他问题 1. 日程安排提前五分钟提醒: 可以使用以下 SQL 语句实现: ```sql SELECT * FROM your_table WHERE schedule_time - 5 / 24 / 60 = SYSTIMESTAMP; ``` 2. 删除主表中已经在副表中没有的信息: 可以使用以下 SQL 语句实现: ```sql DELETE FROM a WHERE a.id NOT IN (SELECT b.id FROM b); ``` 3. 两个表 A 和 B,均有 key 和 value 两个字段,如果 B 的 key 在 A 中也有,就把 B 的 value 换为 A 中对应的 value: 可以使用以下 SQL 语句实现: ```sql UPDATE b SET b.value = (SELECT a.value FROM a WHERE a.key = b.key); ``` 4. 三张表,学生表 S,课程表 C,学生课程表 SC: 可以使用以下 SQL 语句实现: 建表语句: ```sql CREATE TABLE S (id NUMBER, name VARCHAR2(20)); CREATE TABLE C (id NUMBER, name VARCHAR2(20)); CREATE TABLE SC (student_id NUMBER, course_id NUMBER); ``` 查询选修了所有选修课程的学生: ```sql SELECT s.name FROM S s WHERE s.id IN (SELECT sc.student_id FROM SC sc GROUP BY sc.student_id HAVING COUNT(DISTINCT sc.course_id) = (SELECT COUNT(*) FROM C)); ``` 查询选修了至少 5 门以上的课程的学生: ```sql SELECT s.name FROM S s WHERE s.id IN (SELECT sc.student_id FROM SC sc GROUP BY sc.student_id HAVING COUNT(DISTINCT sc.course_id) >= 5); ``` 5. 数据库表(Test)结构如下: 可以使用以下 SQL 语句实现: ```sql SELECT ID, NAME FROM Test WHERE AGE > (SELECT AGE FROM Test WHERE ID = Test.MANAGER); ``` 这些知识点涵盖了 Oracle SQL 的多个方面,包括 SQL 语句编写、表操作、数据查询、数据分析等。了解这些知识点可以帮助你更好地掌握 Oracle SQL。
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip
- (源码)基于PythonSpleeter的戏曲音频处理系统.zip
- (源码)基于Spring Boot的监控与日志管理系统.zip
- (源码)基于C++的Unix V6++二级文件系统.zip
- (源码)基于Spring Boot和JPA的皮皮虾图片收集系统.zip
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage