java学习笔记——第6天

来源:互联网 发布:windows snmpv2 编辑:程序博客网 时间:2024/05/16 04:59

函数

Lower,Upper

select * from DYT_APPCHGMPINFO t

where lower(t.obj_id) like '_e%';

 

substr

截断字符串

select substr(t.obj_id,2,3) fromDYT_MPSTDATA;

 

chr,ascii

把ascii码转换成字符,把字符转化成ascii码

select chr(65) from dual

select ascii('A') from dual

 

 

 

round

四舍五入

select round(1.1415,3) from dual

 

to_char

格式控制

select to_char(123456789,'$999,999,999')from dual;

select to_char(sysdate,'yyyy-mm-ddhh:mi:ss') from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual

 

to_date

to_number

 

nvl

代替空值

Nvl(salary,0)

 

Group function(组函数)

把很多条记录组合在一起最后产生一个输出

Max(salary)

Min(salary)

Avg(salary)

Sum(salary)

Conunt(*)

 

Group by(分组)

规则:出现在select列表里的字段,没有出现在组函数中,必须出现在group by中

?select count(*) from DYT_MEASUREMENTPOINT  t  group by (t.volttype);

 

Having与where的区别

Where是对单条记录进行选择,having是对分组进行限制

 

Having

select count(*) from DYT_MEASUREMENTPOINTt  group by t.lowlimit having count(*)>500

 

别名的用法

select t.obj_id from DYT_MEASUREMENTPOINT t

where t.lowlimit<(select avg(h.lowlimit)from DYT_MEASUREMENTPOINT h);

在子查询语句中需要为表指定一个别名

 

子查询

可以把查询结果当做一张表

 

 

表连接

自连接

给自身起别名,把一张表当成两张表来用

select t.ename,p.ename from EMP t,EMP pwhere t.mgr=p.empno;

 

笛卡尔乘积

select t.ename,p.ename from EMP t,EMP p;

 

where与on

where语句中只写数据过滤条件,on是写连接条件

 

等值连接

select ename,dname from emp join depton(emp.deptno=dept.deptno)

 

非等值连接

select t.ename,t.sal,s.grade from emp tjoin salgrade s on (t.sal between s.losal and s.hisal);

 

三张表之间的连接

select t.ename,p.dname,s.grade from emp t

join dept p on(t.deptno=p.deptno)

join salgrade s on(t.sal between s.losaland s.hisal)

join连接一张表,on写相应的连接条件

 

外连接

左外连接

select t.ename,p.ename from emp t

left (outer) join emp p on (t.mgr=p.empno);

left join就是把左边表多余的部分剩余出来

右外连接

语法类似

 

全外连接

select t.ename,p.ename from emp t

left join emp p on (t.mgr=p.empno);

把左右两张表多余的部分全部拿出来

 

Case when

(1)select t.ename,case t.deptno when 10 then 'computer'

when 20 then 'software' else 'others' endas department from emp t

end as 加别名的时候不用加引号

 

(2)搜索形式

select t.ename,case when t.sal<800 then'gongzidi'

when t.sal>=800 and t.sal<1600 then'zhongdeng'

 else 'gaoshouru' end as gongzishuiping from emp t

 

decode函数

select t.ename,decode(t.deptno,10,'jisuanji',20,'software','qita')as department from emp t

decode(列明,字段值,输出值,。。。,默认值)

 

主表与从表

0 0
原创粉丝点击