第一章 单表查询
1、查看表结构
desc命令:
2、查询列为空的数据
is null 关键字:
NUll 不支持加、减、乘、除、大小比较、相等比较,否则只能为空。
3、将null 转换为指定的值
coalesce 关键字:
还支持多个字段,将首先显示不为空的字段:
当然也可以用nvl,但是nvl只支持两个参数:
4、在where子句后面使用别名
注意:引用别名时,千万不要忘记嵌套一层,因为这个别名在select之后才有效。否则会提示:
5、拼接列
还可以通过拼接的方式来动态生成SQL。
6、case when....then when.....then slse... end as 的使用方式
还可以用于统计人数:
7、取出指定行的数据
8、从表中随机返回n条记录
使用dbs_random.value()来对数据进行随机排序:
order by number 的意思是根据第几列排序,8表示根据第8列排序。
第二章 给查询结果排序
1、以指定次序返回查询结果
还有一种简单排序方式:
上面的这个数字代表的是第几列。注意用数字来代替列的位置只适用于order by 语句,其他的地方都不能用
2、按多个字段排序
先按照一列排序所有的,在排序列相同的数据中,在根据另一个数据排序。
3、按照子串排序
4、创建视图和查询视图
如果查询出来的结果要按后面的ename排序,那么该怎么做呢?只有把ename都取出来。
上面的’-’就是代表空吧,或者说null,将不要的东西都翻译过来。
5、处理排序空值(nulls first 或者 nulls last)
默认空值排列在后面:
将空值排列在前面:
6、根据条件取不同列中的值来排序
根据特殊的条件来排序,比如1--100中的数据,当然是散乱的数据,如果我要将30-50的数字排序在前面,余下的数据再排列在后面。
就是创建一列虚的数据,先按照虚列数据来排序排序就对了。
也可以不显示这一列虚的数据:
第三章 操作多个表
1、union all 与空字符串
union all 通常用于合并多个结果集
可以看见如果列不够时,可以用null来填充。在oracle中空字符串常常相当于null,为什么不说null相当于空字符串呢?
因为空字符串是varchar2类型,这与null可以是任何的类型不相同,所以他们是不等价的。
2、union 与 or
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union all:对两个结果集进行并集操作,包括重复行,不进行排序;
decode(字段或字段的运算,值1,值2,值3)当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3