1.Oracle查询空值的时候 不能用 a=NULL 必须使用 IS NULL 才可以,否则将查询不到数据!
查询不为空的时候不要写成 a <>NULL 要写成 a IS NOT NULL!
null 不支持加,减,乘,除,大小比较,相等比较,否则结果将会是空值!
例如 select * from emp where 1>=null; 将不会查询出数据! 其他同理!
对于其他函数,在使用的时候最好测试一下数据存在null 值的时候会返回什么结果!
2.对于多个条件的组合查询,可以使用括号进行包裹,清晰易懂!
在where语句中使用别名作为条件的时候,别忘了嵌套一层,否则会说你的条件无效.
oracle 的拼接字符串是使用的|| 进行的拼接.
3.条件判断使用 case when+字段+then+结果+else+结构+ 的结构
(case
when sal <1000 then 1
when sal >1000 and sal<2000 then 2
when sal >2000<3000 then 3
else 4
end) as 级别
的结构
4.rownum 的使用
SELECT * from emp WHERE ROWNUM<2 不能使用等于 行号 只能使用小于等于 或小于
如果写大于1的话
数据库先查出结果集 然后 比如 1,2,3 条这样子
大于1 我们认为所以成了2,3, 不过此时行号会往前推,又变成了1,2 然后判断大于1,于是成了2,然后此时行号为1,然后大于1 结果就没有了!
大于等于1的话 直接就成功了 不用往前推!所以会出现全部数据! 因此使用行号 还是用小于或者 小于等于 或者不等于
5.排序 order by
select age,name,sex,sal from emp order by sal;
也可以写成 select age,name,sex,sal from emp order by 4; 这样使用数字的形式 进行排序 而且数字只能用在order by 中
多个条件排序的话之间使用逗号间隔开 比如:
select age,name,sex,sal from emp order by 3 ASC,4 DESC;
或者
select age,name,sex,sal from emp order by sex,sal DESC; 默认是ASC 因此可以不写 正序排列
6.oracle 在查询的时候可以使用substr 进行截取 就想 Java 中 subString 一个用法 例如:
select name,age ,sex,substr(phone,-4) from emp where rownum<=5 代表截取后4位
7.如果在排序中,对于某些值比较感兴趣,希望将这个一类的值优先排列的话可以使用创建一个伪列 就行排序 例如 领导对于工资在1000-2000的员工比较感兴趣的话:
select name as 姓名,department as 部门, case when sal>1000 and sal<2000 then 1 else 2 end as 级别, sal as 工资
from emp order by 级别; 这样的查询会把级别这个列也差出来 ,如果不想显示的话,可以这样
select name as 姓名,department as 部门,sal as 工资 from emp order by case when sal>1000 and sal<2000 then 1 else 2 end
8.聚合函数会忽略空值
9.例如此时已经存在了test 表,现在想复制一份这个表,并且包含表的数据,那么可以使用这样的语句
create table test1 as select * from test;
如果不需要test 的数据 那么可以加上条件
create table test1 as select * from test where 1=2;//只要加上一个不可能发生的条件即可