#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 | -- 13. 显示部门内最低工资比20部门最低工资要高的部门编号以及部门内最低工资。++++++++ |
分析sql的步骤
- Sql分成两种:限制性 + 整理型
- 第一步:涉及到几张表,把它们连起来
- 两种方法
- from
- join
- 连接有哪些?
- 固定的:外键连接
- 额外的:看自己有啥要求,或者要过滤那些情况
- 关键是要明白自己的需求
- 然后转换成里逻辑表达式
- 参考: SQL表连接
- 两种方法
- 第二步:在第一步组成的表的基础上,有哪些限制
- 限制,指的就是句子中的修饰部分
- 简单的sql,文中的限制能很快的转换成一下五种情况
- <
- =
- in
- not in
- max
- min
- count
- sum
- 难的sql,就需要自己将中文转述成一种能用数学表达式表示的形式
- 有一些题他的目的不在于限制,而是在于整理 如这里的16、17、18
- 当侧重点在于整理时,需要重点考虑SQL嵌套
- 需要你利用相关子查询的知识去增加一些列去解决
- 其实,这里select伪列的作用就是去针当前表每一条信息去做统计
- 后续
- 有些题还需要对统计出来的select伪列做统计
- 这时只能在当前表的外面做查询限制,不能写在当前表中,因为:sql的执行顺序,伪列的产生在最后执行,位于where这些限制的之后执行
- 参考 SQL相关子查询的补充
什么时候会产生SQL嵌套(子查询+相关子查询)
- 当前限制条件需要单独查询一次时,用在条件判断中作为条件的值传入
- 要对表中的信息进行初步过滤时,用作临时视图存在
- 统计新信息时,用作创建伪列存在
- 查询伪列时,要对伪列中的信息进行限制
group by 相关:
来源:SQL中Group By的使用 - Rain Man - 博客园
Having和where的区别:
区分子查询+相关子查询
子查询:嵌套在其他查询中的查询称之。
子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询
- 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
- 相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
故非相关子查询比相关子查询效率高
伪列概念:
- 伪列:数据库没有实际保存的列。
- 普通的列,是实际有存储的,在物理存储上就有这个数据。伪列就没有,是算出来的。可以认为是一种特殊的函数。
- 如rowid,rowscn,rownum等等