Oracle入门指南_4

Oracle_4

查询所有记录:

select deptno,dname,loc from dept;
--查询scott用户默认的dept表中的所有记录
select * from dept;

 

Where条件查询:

select deptno,dname,loc from dept where deptno=10;
--查询deptno=10的记录

 

比较运算符

  • =
  • >
  • >=
  • <
  • <=
  • <>或!=
  • between...and...
  • in
  • like:  %多个   _一个    占位符
  • is null
  • is not null
select * from emp where deptno between 10 and 20;
--查询emp表中的deptno在10-20之间的,包括10,20

select * from emp where job like '_A%';
--匹配第二个字符为'A'的
select * from emp where job like '_a%';
--匹配第二字符为'a'的
--字符匹配是区分大小写的

select * from emp where mgr is null;
select * from emp where mgr is not null;

 

逻辑运算符

  • and
  • or
  • not
select * from emp where mgr is not null and sal>1500;
--查询mgr is not null的并且  sal>1500的数据
--not是取反的意思

 

order by:排序

  • desc,降序
  • asc,默认是升序
select * from emp order by hiredate desc;
--根据入职时间降序排

 

函数:

字符函数

  • lower:转换为小写
  • upper:大写
  • initcap:首字符大写
  • concat:连接字符串
  • substr(column_name,startIndex,count):对于column_name列从第startIndex开始截取count个显示
  • length:字符串的长度
  • trim:去掉左右的空格
  • ltrim:去掉左边的空格
  • rtrim:去掉右边的空格
select concat('你好',ename),lower(ename),upper(ename),initcap(ename),substr(ename,1,1),length(ename),trim(ename) from emp;
select length(ename),length(trim(ename)) from emp;
--函数是可以嵌套的

 

数值函数

  • round(num,n):将列或表达式所表示的数值四舍五入到小数点后几位
  • trunc(num,n):将列或表达式的数值截取到小数点的后几位,而不进行四舍五入
  • mod(m,n):m除以n以后的余数
select round(49.255,2),round(49.254,2),trunc(49.256,2),mod(3,2) from dual;
--49.26  49.25  49.25  1
select round(12.00,2) from dual;
--12,若为0则直接忽略0
select round(sal,2) from emp;

 

数据类型转换函数

  • to_char(date|number,[fmt]):将日期或数值型按照模式 fmt 转换为变长字符串
  • to_number(char):将一个有数字组成的字符串转换为数值
  • to_date(char,[fmt]):将yi8ge表示日期的字符串按照模式 fmt 转换为日期
select to_char(sysdate,'yyyy-MM-dd HH-mm-ss day d q') from dual;
--2013-10-10 10-10-19 星期四 5 4
  1.  yyyy:年的格式
  2. MM:月份
  3. dd:日
  4. HH:时
  5. mm:分
  6. ss:秒
  7. day:星期几,根据系统时间及地区决定显示
  8. d:显示星期的数字表示,周是从周日开始的,为第一天,所以周四即为5
  9. q:季度,10月份是第四季度,一个季度三个月
select to_char(892343354) from dual;

select to_char(892343354,'L999,999,999,999') from dual;
--¥892,343,354   根据本地货币转换
select to_char(892343354,'L999,999,999,999.99') from dual;
--¥892,343,354.00
  1.  L:local,本地货币符号
  2. 9:一个有效位
  3. ,:千分位
  4. .:小数点
select * from emp where to_char(hiredate,'MM')='12';
--获取12月份入职的 员工
select to_number('123')+1 from dual;
--将字符型,转为number型   124

 

select to_date('1991-2-15','yyyy/MM/dd') from dual;
--1991/2/15

 

日期函数

  • sysdate:获取当前时间
  • months_between(date1,date2):date1与date2之间的月数
  • add_months(date,n):向date加上n个月,是几月份
  • next_day(date,c):求出date之后一周内星期c的日期;周日是星期1,周六是星期7  c=1-7之间的数
  • last_day(date):求出date所在月的最后一天
select to_char(sysdate,'yyyy-MM-dd HH:mm:ss') from dual;
--2013-10-10 11:10:31
select to_char(sysdate,'yyyy/MM/dd HH:mm:ss') from dual;
--2013/10/10 11:10:45

 

select months_between(sysdate,to_date('2010-01-01','yyyy-MM-dd')) from dual;
--45.3055073924731  46个月不到

 

select add_months(sysdate,2) from dual;
--2013/12/10 11:29:06

 

select next_day(sysdate,7) from dual;
--2013/10/12 11:34:18   本周周六是10/12

 

select last_day(sysdate) from dual;
--10-31

 

其他函数

  • nvl:当一个值为null时,显示预先定义的值
select nvl(mgr,'0') from emp;

 

 聚合函数

  • avg:求平均
  • count:统计数量
  • max:最大值
  • min:最小值
  • sum:求和
select count(*) from emp;
select sum(sal) from emp;
select min(sal) from emp;

 

分组查询

--统计每个部门的平均销售额
select avg(sal),deptno from emp group by deptno;
--显示平均销售额在2000以上的部门
select avg(sal),deptno from emp group by deptno having avg(sal)>2100;

 

总结:

  • 查询数据
  • 根据条件查询数据
  • 查询排序
  • 常见的函数

你可能感兴趣的:(函数,order by,数据操作,where查询)