数据库2 查询

set linesize ;
set pagesize;
distinct 去重复:select distinct job from emp;
select '姓名:'||name from emp;   concat('name:',ename)  在姓名前面加上  姓名:
查询不为空 is not null
and 并且
not 取反
sal between 1500 and 3000; 工资大于等于1500小于等于3000
日期只能用 between
查询几个的数据:empon=1111 or empon=22222.....
                empon in(1111,2222,2222)
ename like '_M%';  名字的第二个字符是M
            &M&;  名字里有M
<> != 不等号
order by 以什么什么排序
as:select ename ,sal from emp order by sal asc(默认的排序从小到大),hiredate desc(从大到小)
                                       先工资再入职日期在工资相等的情况下比较日期
upper('str') 改成大写的
lower('str') 改成小写的
initcap('str')首字母大写其他小写 select initcap(lower(ename)) from emp;
dual 是 系统表只完成功能的
sysdate 当前时间
substr 截取字符串
select substr('hello',1,3) from dual;  结果是  hel
截取名字前三位字符串: select substr(ename,1,3) from emp;
截取名字后三位字符串: select substr(ename,-3) from emp;
replace 更换两个字符串
select replace(ename,'A','a') from emp;  把名字当中的A都换成a
round(123.56) 124 四舍五入
round(1111.3333,2) 其中的2是代表 保留2位小数  结果就是:1111.33
round(1111.3333,-2) -2 结果就是 100
trunc()截取整数;
mod() 求余
日加减一个数还是日
日加减日就是一个数 天数
sysdate-hiredate  当前时间和指定时间的差 天数
as:来公司多少个星期
select trunc((sysdate-hiredate)/7) week(自己加的在表格上看起来比较清楚) from emp;
months_between(sysdate,hiredate) 两个时间相隔数,结果为小数前面加trunc
add.month(sysdate,1) 月份加一
next_day(sysdate,'星期一') 从当天起下个礼拜一是几号 select to_char(next_day(sysdate,'星期一') ,'yyyy-mm-dd')from dual;
last_day(sysdate) 给定日期所在月份的最后一天
to_date('1999-11-11','yyyy-mm-dd') 括号里的格式要一样 插入一个数据date数据类型
to_char(hiredate,'yyyy-mm-dd')将一个date型的数据转按一定的格式转换成字符串 想怎么转就转可以单独转换成年或者月或者天
as: to_char(hiredate,'mm') 就只变成月了
去掉前导0在哪加它以及它后面的前导0都没了
to_char(sal,'999,999.999')   每三位一组,且保留三位小数
nvl(null,0)  把空转化成指定的格式
nvl(comm,0) 把comm里面是null的转换成指定的0;
select nvl(comm,0) from emp;

posted @ 2012-07-17 22:55  会飞的辉  阅读(210)  评论(0编辑  收藏  举报