0%

SQL如何分析(SQL测试题)

#web开发/czh_blog/数据库
2017年8月30日 下午4:37

面试的重点在画星号的题
sql基础练习题.txt
维信科技_内部Oracle测试题试卷_田璟霞.doc

下面两个知识点之间的关系

SQL嵌套是sql分析步骤中,针对整理型情况下的总结
一般的限制型,用的比较少

注意

写SQL时函数的使用可以帮助我们实现一些很难实现的功能
例如
1. min
2. max

e.g.:scott账户下的功能功能测试(上面的题2中有)
我这里就没有使用min函数来解决-取得部门最低的人的工资 ,我想的是自己写复杂的sql来实现,最后也没有成功

1
2
3
4
5
-- 13.	显示部门内最低工资比20部门最低工资要高的部门编号以及部门内最低工资。++++++++
select * from (
select e.deptno,min(e.sal) min_sal from emp e GROUP BY e.deptno
)a
where a.min_sal > (SELECT min(sal) from emp where deptno = 20 group by deptno)

分析sql的步骤

  1. Sql分成两种:限制性 + 整理型
  2. 第一步:涉及到几张表,把它们连起来
    1. 两种方法
      1. from
      2. join
    2. 连接有哪些
      1. 固定的:外键连接
      2. 额外的:看自己有啥要求,或者要过滤那些情况
      3. 关键是要明白自己的需求
      4. 然后转换成里逻辑表达式
    3. 参考: SQL表连接
  3. 第二步:在第一步组成的表的基础上,有哪些限制
    1. 限制,指的就是句子中的修饰部分
    2. 简单的sql,文中的限制能很快的转换成一下五种情况
      1. <
      2. =
      3. in
      4. not in
      5. max
      6. min
      7. count
      8. sum
    3. 难的sql,就需要自己将中文转述成一种能用数学表达式表示的形式
  4. 有一些题他的目的不在于限制,而是在于整理 如这里的16、17、18
    1. 当侧重点在于整理时,需要重点考虑SQL嵌套
    2. 需要你利用相关子查询的知识去增加一些列去解决
    3. 其实,这里select伪列的作用就是去针当前表每一条信息去做统计
    4. 后续
      1. 有些题还需要对统计出来的select伪列做统计
      2. 这时只能在当前表的外面做查询限制,不能写在当前表中,因为:sql的执行顺序,伪列的产生在最后执行,位于where这些限制的之后执行
    5. 参考 SQL相关子查询的补充

什么时候会产生SQL嵌套(子查询+相关子查询)

  1. 当前限制条件需要单独查询一次时,用在条件判断中作为条件的值传入
  2. 要对表中的信息进行初步过滤时,用作临时视图存在
  3. 统计新信息时,用作创建伪列存在
  4. 查询伪列时,要对伪列中的信息进行限制

group by 相关:

来源:SQL中Group By的使用 - Rain Man - 博客园
Having和where的区别:

区分子查询+相关子查询

子查询:嵌套在其他查询中的查询称之。
子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询

  1. 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
  2. 相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
    故非相关子查询比相关子查询效率高

伪列概念:

  1. 伪列:数据库没有实际保存的列。
  2. 普通的列,是实际有存储的,在物理存储上就有这个数据。伪列就没有,是算出来的。可以认为是一种特殊的函数。
  3. 如rowid,rowscn,rownum等等