请将如下数据库语句进行优化,使其执行效率更高(提示:…不需要更改)
|
|
优化的理由:not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists 都比not in 要快。
请简述如何将Oracle中的数据库转至DB2中,需要保证表结构和数据不变
使用ETL工具,如infomatic,datastage,kettle等,可以完成异构数据库的迁移
以kettle为例
表输入选择 oracle库
表输出选择DB库
循环执行可以进行全库迁移
学生成绩表
姓名:name | 课程:subject | 分数:score | 学号:stuid |
张三 | 数学 | 89 | 1 |
张三 | 语文 | 80 | 1 |
张三 | 英语 | 70 | 1 |
李四 | 数学 | 90 | 2 |
李四 | 语文 | 70 | 2 |
李四 | 英语 | 80 | 2 |
1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
select name,sum(score) s from t_stu GROUP BY name;
2.列出各门课程成绩最好的学生(要求显示字段:学号,姓名,科目,成绩)
select t1.stuid,t1.name,t1.subject,t1.score from t_stu t1,
(select subject,MAX(score) as maxscore from t_stu group by subject)t2
where t1.subject = t2.subject and t1.score = t2.maxscore;
3.列出各个课程的平均成绩(要求显示字段;课程,平均成绩)
select subject,AVG(score)平均成绩 from t_stu
group by subject;