Oracle数据库查询语句以及简单函数(含例子)

本文介绍了Oracle数据库中的基本SQL查询操作,包括数据检索、过滤、排序、聚合及常见函数的使用等,适合初学者掌握核心查询技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--这是oracl自带的四张表格
/*
这是多行注释
*/
select * from emp;
select * from dept;
select * from salgrade;
select * from bonus;


--查询表中的某列数据
select ename from emp;
select ename,empno,job from emp;
--查询的数据还可以做加减乘除(前提时这列属性是数值型的)
select ename,empno,sal*10 from emp;
--汉字后面加字符串(sql里面的字符串是用单引号,双竖线添加)
select ename||'good' from emp;
--使用字段的别名(每一列取别名显示出来)、
select empno 员工编号,ename as 员工名称 from emp;
--别名区分大小写或者有空格的时候用  双引号  引起来,
select ename as "空格" from emp;
--双竖线连接符(相当于Java中的+)
select ename||'的工资是'||sal /*将新加的列又起了别名*/简介 from emp;
--去除重复行
select distinct sal from emp; 
select distinct ename,sal from emp;--当去重复的列有两个时,只有两列全相同才去除;
--排序方法order by
select * from emp order by sal ;/*默认升序*/
select * from emp order by sal desc;
select * from emp order by sal desc,ename asc;/*主排序,次排序*/
select empno,ename from emp order by sal asc;
--模糊查询 like %代表零个或多个   _代表只有一个
select * from emp where ename like 'S%';
select * from emp where ename like 'S____';
select * from emp where ename like '_M%';
select * from emp where ename like '%S%';
--逻辑语句 or and not
select * from emp where sal >= 1000 
and (deptno not in (20,30) or ename like 'S%') order by sal;
select ename 员工姓名 from emp where sal >= 
1000 and (deptno not in (20,30) or ename like 'S%') order by sal;
--函数
--首字母大写
select initcap(ename) from emp;
--全字母小写
select lower(ename) from emp;
--左移除
select ltrim('name','na')  from dual;
--左右移除空格
select ltrim(rtrim('       haha        '))"name" from dual;
--翻译
select translate('jack','kcac','123') from dual;
--替换
select replace('jack','j','ac') from dual
--从1开始查询字符串所在的位置
select instr('abcdefghijklmno','fgh',1) from dual;
--字符串连接和||的作用类似
select concat(ename,sal) from emp;
--数值函数
--截断(保留两位小数)
select trunc(12.256,2) from dual;
--四舍五入(保留两位小数)
select round(12.256,2)from dual;
--开平方
select sqrt(4)from dual;
select power(4,1/2)from dual;
--两个日期之间隔的月数
select months_between(sysdate,'11-2月-1996') from dual;
--某个时间的当月的最后一天
select last_day(sysdate) from dual;
--将字符串转成number
select to_number('$54,215,455.23','$999,999,999.99') from dual;
--将字符串转成日期
select to_date('2017-8-16','yyyy-mm-dd') from dual;
--将数字转成字符串
select to_char(123564.94,'L999,999.99') from dual;
--将日期转成字符串
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;
--给定一个日期,找出表中此日期之后的行(1981-8-30)
select * from emp where hiredate >= to_date('1981-1-1','yyyy-mm-dd');
select * from emp where to_char(hiredate,'yyyy-mm-dd')>='1981-1-1';
--nvl()如果第一个表达式的值为空,则用第二个表达式替换,只能用数值型替换
select nvl(comm,0)from emp ;
--nvl2()如果第一个表达式的值不为空 换成第二个表达式, 如果为空,换成第三个表达式,,
--可以放字符串,但是两个替换的类型要一致
select nvl2(comm,to_char(comm),'空') from emp;
--decode()if then if then else 相当于switch case 等值选择
select ename,decode(sal,1250,'很幸运的工资',800,'太少了','没中奖')  中奖情况 from emp;
--case when then when then else end 相当于if else 区间
select emp.*,(case  when sal <=1000 then '有点少' 
when sal <=2000 then '还可以' 
when sal <=5000
then '相当不错' else '非常厉害' end) from emp; 


select sal,(case sal when 1250 then '幸运啊' else '没中奖' end)中奖情况 from emp;
--五大函数 sum avg count max min  avg计算的是有工资的人的数目,除数不算没工资的人
select sum(sal)总薪水,avg(sal)平均薪水,count(*),max(sal) 最大工资,min(sal)最低工资 from emp;
--
select count(distinct sal) from emp;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值