设置查询格式设置
设置行大小 set linesize 140; 设置页宽度 set pagesize 120; 修改登录 的设置文件 C:Oracle\Administrator\product\11.2.0\client_1\sqlplus\admin 查询日期的格式: select *from v$nls_parameters;
语法:
desc 表名
语法:select [distinct] *|column_name|expr|alias from tablename
题目:查询员工号,姓名,月薪,奖金,年薪
16新的计算
sql: select empno as “员工号”,ename “姓名”,sal 薪水,comm “奖 金”,sal*16 年薪,sal*16+nvl(comm,0) 年收入 from emp;
题目:查询员工号,姓名,月薪,奖金,年薪
sql:select distinct 字段 from 表名;
题目:输出计算表达式 3+20*5,显示当前日期 sysdate(伪列,不依赖于某一张表,查询的时候可以使用)
sql:select 3+20*5,sysdate from dual;
是否为null 是使用 (is null) 而不是 (= null)
select * from emp where deptno in (10,20);
select * from emp where deptno not in (10,20);
语法: ‘%’匹配任意多个字符。‘_’匹配任意一个字符
select * from emp where ename like 'S%';
select * from emp where ename like '____';
需要指定转义字符 escape
select * from emp where ename like ‘%/_%’ escape ‘/’;
select .. 选择哪些列 from .. 从哪选 where .. 有哪些条件 group by .. having … order by .. 按什么排序,怎么排
语法:排序可以 列名,表达式,别名,序号,语法是 order by col|expr|alias|number
//按照 第一个排序 下面二个是不同的结果 select *from emp order by SAL, deptno; 按照SAL排序 select *from emp order by deptno, SAL; 按照deptno排序
null 默认无穷大,排序默认在最后 ,倒序就在最前 select * from emp order by comm desc nulls last; nvl()的使用 select * from emp order by nvl(comm,-1) desc ;
select lower('Hello wOrld') 一,upper('Hello wOrld') 二, initcap('Hello wOrld') 三 from dual;
select instr('helloworld','owo') 一,instr('helloworld','owow') 二 from dual;
select lpad('hello',10,'#'),rpad('hello',10,'*') from dual;
trim 去首尾空格
select ‘aaa’||trim(’ hello world ‘)||’bbb’ from dual;
select trim(‘H’ from ‘HHHHHelloHHHworldHHHHH’) from dual;
replace替换
select replace(‘helloworld’,’llo’,’kk’) from dual;–替换子串
select replace(‘helloworld’,’llo’,”) from dual;–相当于去掉子串
1, round 四舍五入 2, trunc 截断 3, mod 取模 4, ceil 和floor 向上取整,向下取整
CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END 使用 case end 写法 sql99标准 select empno,ename,job,sal 涨前薪水,case job when 'PRESIDENT' then sal+0 when 'MANAGER' then sal+200 else sal+1000 end 涨后薪水 from emp
语法 decode(expr,search1,res1,search2,res2,…,default)
select empno,ename,job,sal 涨前薪水,decode(job,’PRESIDENT’,sal+1000,’MANAGER’,sal+800,sal+400) 涨后薪水
from emp
考虑使用having,就是和group by 一起使用,对分组数据进行过滤
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;
–求10号部门员工的平均薪水
select deptno,avg(sal) from emp group by deptno having deptno=10 ;
是否可以使用where?
select deptno,avg(sal) from emp where deptno=10 group by deptno;
–having与where的区别,哪个好? where好!
where 是先过滤,后分组,having是先分组后过滤
–常见的非法使用组函数的情况