oracle基本表查询,排序,函数,

基本表查询

  --查询emp表中的所有数据
select * from emp;
  --查询所有员工的姓名,月薪资,年薪
select ename,sal,sal*12 from emp;--查询语句中使用算术表达式
  --查询所有员工的姓名,工作,入职时间
select ename,job,hiredate from emp;

--使用别名
  --查询所有员工姓名、月薪、年薪(不包括津贴)
select ename "姓 名",sal 月薪,sal*12 年薪 from emp;
select ename as "姓名",sal as 月薪,sal*12 as 年薪 from emp;
--连接符||
select ename||'的月薪是'||sal||'和年薪是'||sal*12 工资情况 from emp;
--去除重复
select distinct job from emp;
select distinct sal,job from emp;

 

--排序

select ename,job,sal,hiredate from emp order by sal; --默认从小到大,就是asc(升序)
select ename,job,sal,hiredate from emp order by sal asc; 
select ename,job,sal,hiredate from emp order by sal desc;
select ename,job,sal,hiredate from emp order by sal,hiredate;
select ename,job,sal,sal*12 年薪 from emp order by  年薪,ename;

where子句筛选(单条件筛选)
--查看工资等于1250的员工信息
select * from emp where  sal=1250;
--查看工作等于CLERK的员工信息
select * from emp where job='CLERK';
--查看工资大于1250的员工姓名和工作
select ename,job from emp where sal>1250;
--查看工资大于等于2000的员工信息
select * from emp where sal>=2000 order by sal;
--查看工资小于等于2000的员工信息;
select * from emp where sal<=2000 order by sal;
--查看工资不等于1500的员工信息
select * from emp where sal<>1500 order by sal;
--查看入职日期在81年后的员工信息
select * from emp where hiredate>'31-12月-1981';--正确写法
select * from emp where hiredate>'1981/12/31';--错误
select * from emp where hiredate>'1981-12-31';--错误

where子句多条件筛选和使用关键字
--查询工资在2000-3000之间的员工信息
select * from emp where sal>=2000 and sal<=3000;
select * from emp where  sal between 2000 and 3000;  --使用between and关键字

--查询工作为SALESMAN,ANALYST,MANAGER的员工信息
select * from emp where job='SALESMAN'or job='ANALYST'or job='MANAGER';
select * from emp where job in('SALESMAN','ANALYST','MANAGER'); --使用in关键字

--查询姓名中包含s的,以s开头的,以s结尾的,第二个字符为A的员工信息(模糊查询)。
select * from emp where ename like '%S%';--使用like关键字
select * from emp where ename like 'S%';
select * from emp where ename like '%S';
select * from emp where ename like '_A%';
select * from emp where ename like'%S%'or ename like 'S%'or ename like '%S' or ename like '_A%';

--查询名字中有下划线的
select * from emp where ename like'%F_%'escape 'F'; --使用escape关键字

select * from emp for update;
--查询有津贴的员工信息
select * from emp where comm is not null; --使用is not null进行查询
select * from emp where comm is null;

--查询工作为SALESMAN,MANAGER并且工资大于2000的员工信息
select * from emp where job='SALESMAN'or job='MANAGER'and sal>2000;--and的优先级大于or
select * from emp where  (job='SALESMAN'or job='MANAGER')and sal>1500;--利用括号提升优先级

单行函数学习:
  --注意:函数是不会改变原始数据的。
  --字符函数
  --initcap(字符),将首字母大写
select initcap(ename),ename from emp;
  --lwoer(字符),将字符转换为小写
  select lower(ename),ename from emp;
  --ltrim('字符','要裁剪的字符'),从左边开始减掉指定的字符串。
  select ltrim('abcqrewq','abcqre') from dual;
   --数字函数
   --abs(数值),返回绝对值  
   select abs(-24)from dual;
    --ceil(数值),返回最接近的最大的整数。
    select ceil(3.1111)from dual;
   --mod(数值,数值),返回余数
   select mod(5,7) from dual;
    --日期函数
    -- months_between('日期','日期'),返回两个日期间的月份数
    select months_between('03-7月-2016',sysdate) from dual;
    --add_months('日期',月份数),返回加上指定月份数后的新日期
    select add_months('04-9月-2123',5) from dual;

   转换函数学习
    --to_number()
    select to_number('2341'),to_number('123.456'),'123'+5 from dual;
    --to_char()
     --数字转换为字符  
     select to_char(123) from dual;
     select to_char(1234,'L000,000,000.00')from dual;
     select to_char(1234,'L999,999,999.00')from dual;
     --日期转换为字符
     select to_char(hiredate),hiredate from emp;
     select to_char(hiredate,'yyyy-mm-dd'),hiredate from emp;
      select to_char(hiredate,'yyyy/mm/dd'),hiredate from emp;
     select to_char(hiredate,'yyyy"年"mm"月"dd"日"'),hiredate from emp;
    --to_date()
    --字符转换为日期
    select to_date('09-12月-2017') from dual;
    select to_date('2017-10-10','yyyy-mm-dd') from dual;
    select to_date('2017/10/10','yyyy/mm/dd') from dual;
     --查询入职日期在81年后的员工信息
     select * from emp where hiredate>'31-12月-1981';--使用默认格式
     select * from emp where hiredate>to_date('1981-12-31','yyyy-mm-dd');--将字符串转换成日期进行比较
     select * from emp where to_char(hiredate,'yyyy-mm-dd')>'1981-12-31';--将日期转换成字符串再进行比较

     多行函数
     --max
     select max(sal) from emp;
     --min
     select min(sal) from emp;
     --sum
      select sum(sal) from emp;
     --avg
      select avg(sal) from emp;
      --count
      select count(*) from emp;
      select count(comm) from emp;

   其他函数
--nvl
select ename,job,sal 基本工资,comm 津贴,sal+nvl(comm,0)月薪,nvl(comm,0)from emp;
--nvl2
select  ename,job,sal 基本工资,comm 津贴, nvl2(comm,comm+sal,sal)月薪 from emp;
--decode
select ename,job,decode(job,'PRESIDENT','总裁','MANAGER','经理','ANALYST','分析师','SALESMAN','销售人员','普通员工') 岗位描述,sal from emp;

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值