Oracle 数据库基本操作语句 查询相关语句

--单表查询
select * from emp;
--查询表中指定字段的值
select empno,ename from emp;
--给查询结果中的字段使用别名
select empno 员工编号,ename "员工姓名",job as 工作 from emp;
--连接符
--||为sql语句的字符连接符,使用在select和from之间
--字符链接格式为字段名||'字符'||字段名
--一个拼接好的链接在结果中集中是作为一个新的字段显示,可以使用别名
select empno||'的姓名是'||ename as 信息 from emp;
--去除重复 去除两行数据完全相同的其一
select distinct job from emp;
--排序 asc 升序 desc 降序   asc可以省略不写。
select * from emp order by empno asc;
select * from emp order by empno desc;
select * from emp order by empno,ename;--先按字段1排序,如果字段1相同,按照字段2排序
--字段的逻辑运算
select empno,ename||'多点钱',job,sal+1000 from emp;
-------------------------------------
--条件筛选(where字句关键字:and,or,like,in,is null,is not null,between and) 
--模糊查询
select * from emp where comm is null and comm>0;
select * from emp where ename like '%S%'--包含字母s的员工
select * from emp where ename like 'S%'--以字母S开头的
select * from emp where ename like '%S'--以字母是结尾的
select * from emp where ename like '_A%'--第二个字符为A
--
select * from emp where job='SALESMAN' or job='ANALYST'--or关键字可以筛选出多个内容
select * from emp where job in('SALESMAN','ANALYST');--in关键字也可以进行筛选,但是in的内用只能显示其中一个字段的值
select * from emp where sal>2000 and sal<3000 --and关键字多条件同时成立
select * from emp where sal between 2000 and 3000
select * from emp where sal <>2000
select * from emp where hiredate<'01-1月-1982'--日期的格式
-----------------------------------------------------------------
-----------------------------------------------------------------
--Oracle 函数学习(单行函数,多行函数,转换函数,其他函数)
         --单行函数
         --字符函数select 函数名(字段名)
         --不改变真实数据,只是对数据进行进一步修饰
              --查询所有员工信息,员工姓名小写显示
      select lower(ename),ename,sal from emp 
      select initcap(ename) from emp
      --数值函数
      --伪表:真实存在的表,是为了方便进行数据验证而临时存在的表,表名为dual
      select 1+3 from dual
      select abs(-1),power(2,3),round(3.3),mod(5,2),trunc(100.234,2) from dual
      --日期函数
      select months_between('15-3月-2018','15-3月-1996') from dual
      select add_months(to_date('1982-1-1','yyyy-mm-dd'),4) from dual
      select next_day('28-11日-2018','星期一')from dual
      select round(to_date('28-11日-2018'),'MONTH') from dual
     --多行函数(max,min,avg,sum,count)--对查询的数据进行统计
     --多行函数不能和字段直接混用,除非分组
     select ename from emp where sal=(select max(sal)from emp)--查询最高工资的员工。
     select avg(sal) from emp--查询员工平均工资
     select sum(sal) from emp--查询员工工资总和
     select count(*) from emp--查询所有员工的总数  查询表的记录数
     select count(comm) from emp--查询有津贴的员工总数   查询字段的值的数量,null会自动过滤
     select count(distinct job) from emp --查询公司有多少种工作种类
     
     --转换函数
      -- to_number(数值类型的字符)   
      --to_char(数值或日期)   
      --t0_date(日期格式的字符)
      
      --字符转数字
      select to_number('123') from dual
      --数字转字符 可以指定显示格式:
      --9表示位置占位
      --L表示人民币 $美元
      select to_char(123456789,'L999,999,999') from dual
  -------------日期字符的互转----------------------------
  --字符转化为日期
  --oracle 默认的日期格式为 15-3月-1996
  select * from emp where hiredate>to_date('2011-1-1','yyyy-mm-dd')
  select * from emp where hiredate>to_date('2011/1/1','yyyy/mm/dd')
  --日期转字符 可以使用指定格式
  select to_char(hiredate) from emp
  select to_char(hiredate,'yyyy-mm-dd') from emp
  select to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp
  ----------------------------------------
  --其他函数
  --nvl(字段名,值)如果字段不为null返回自己的值,为null则返回赋予的值
  --nvl2(字段名,处理1,处理2),如果字段值不为null执行处理1,为null执行处理2
  --decode() decode(字段名,值1,处理1,值2,处理2,....公共处理)
         -----进行匹配,如果字段中的值等于值1,2 获得相应处理,没匹配到的执行公共处理。
  
  select ename,job,sal+nvl(comm,0) from emp
  select ename,job,nvl2(comm,sal+comm,sal) from emp
  select ename,job,decode(job,'MANAGER','经理','PRESIDENT','董事长','普通员工')from emp
  ---------------------------------------------------------------------
  --分组查询学习
         --关键字:group by 分组字段名,分组字段名,......
                      --select 只允许多行函数和分组字段名
                      --如果是多字段分组,则先按照第一字段分组,然后每个小组继续按照第二字段分组......
                      --在where字句中不允许出现多行函数。
         --分组筛选
         --关键字:having  针对分组后的数据进行数据筛选
         --having 关键字必须和分组结合使用
         --where字句和having的比较:
            --where 子句不允许出现多行函数,having语句允许多行函数
            --where子句和having都可以使用普通字段进行筛选,但是where的效率高于having
            --where语句的执行顺序:from-where-group by--select--order by
            --having语句的执行顺序:from-group by--select--having--order by
           
        select deptno,max(sal),count(*) from emp group by deptno  
        select job,count(*) from emp group by job--查询不同工作岗位的员工数
        select deptno,job,count(*) from emp group by deptno,job--查询不同部门的不同岗位的人数
        
        --查询不同部门的不同工作岗位的并且人数大于1的信息
        select deptno,job,count(*) from emp group by deptno,job having count(*)>1 order by deptno
        --查询部门号大于10的不同工作岗位的人数
        select deptno,job,count(*) from emp group by job,deptno having deptno>10 order by deptno
        --查询不同部门的不同工作岗位的并且人数大于1的信息

 

 

仅供学习,所用的库来自oracle自带的scott账户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值