【Oracle】查询基本使用

举报
兮动人 发表于 2021/12/30 15:01:19 2021/12/30
【摘要】 【Oracle】查询基本使用
  • select 1+1; 在Oracle等于报错 ,在MYSQL中输出结果是2
  • dual : oracle中的虚表 ,伪表, 主要是用来补齐语法结构

1. 查询语法

select *|列名 from 表名
select * from emp;

在这里插入图片描述

2. 别名用法

  • 在查询的结果列中可以使用别名
select 列名 别名,列名 别名,... from emp;
select ename 姓名, sal 工资 from emp;

在这里插入图片描述

  • 别名中,有没有双引号的区别就在于别名中有没有特殊的符号或者关键字
  select ename "姓  名", sal 工资 from emp;

在这里插入图片描述

3. 消除重复的数据

select distinct *|列名, ... from emp;
  select job from emp;

在这里插入图片描述

  • 单列去除重复
select distinct job from emp;

在这里插入图片描述

  • 多列去除重复,使用distinct可以消除重复的行,如果查询多列的必须保证多列都重复才能去掉重复的
  • 多列去除重复: 每一列都一样才能够算作是重复的
select job,deptno from emp;

在这里插入图片描述

select distinct job,deptno from emp;

在这里插入图片描述

4. nvl 函数

  • 查询员工年薪 = 月薪* 12
select sal*12 from emp;

在这里插入图片描述

  • 查询员工年薪+奖金
select sal*12 + comm from emp;

在这里插入图片描述

  • 注意: null值 , 代表不确定的、不可预知的内容 , 不可以做四则运算
  • 解决方法:
  • nvl 函数 : 如果参数1null ,就返回参数2
select sal*12 + nvl(comm,0) from emp;

在这里插入图片描述

5. 查询中四则运算

select 1+1 from dual;

在这里插入图片描述

6. 字符串的拼接

  • java : + 号拼接
  • Oracle 特有的连接符: || 拼接
  • 查询员工姓名
select ename from emp;

在这里插入图片描述

select '姓名' || ename from emp;

在这里插入图片描述

  • 在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符

  • concat(str1,str2) 函数, 在mysql和Oracle中都有

  • 使用函数拼接

select concat('姓名',ename) from emp;

在这里插入图片描述

7. 空值

  • 空值是无效的,未指定的,未知的或不可预知的值
  • 空值不是空格或者0。
  • 注意:
    包含null的表达式都为null
    空值永远不等于空值

8. 条件查询

  • 条件查询 : [where后面的写法]

  • 关系运算符: > >= = < <= != <>

  • 逻辑运算符: and or not

  • 其它运算符:
    like 模糊查询
    in(set) 在某个集合内
    between…and… 在某个区间内
    is null 判断为空
    is not null 判断不为空

  • 查询每月能得到奖金的员工信息

select * from emp where comm is not null;

在这里插入图片描述

  • 查询工资在1500–3000之间的员工信息
select * from emp where sal>=1500 and sal<=3000;

select * from emp where sal between 1500 and 3000;

在这里插入图片描述

  • 查询名字在某个范围的员工信息 (‘JONES’,‘SCOTT’,‘FORD’) ,使用关键字 in
select * from emp where ename in  ('JONES','SCOTT','FORD');

在这里插入图片描述

9. 模糊查询

  • 模糊查询: like
  • %:可以匹配任意长度的内容
  • _:可以匹配一个长度的内容
  • 如果有特殊字符,需要使用 escape 转义
  • 查询员工姓名第三个字符是O的员工信息
select * from emp where ename like '__O%';

在这里插入图片描述

  • 查询名字中带有“M”的雇员
select * from emp where ename like '%M%';

在这里插入图片描述

  • 查询员工姓名中,包含%的员工信息,escape 告诉Oracle, \ 是转义字符
select * from emp where ename like '%\%%' escape '\';
select * from emp where ename like '%#%%' escape '#';

在这里插入图片描述

10. 排序

  • 升序:asc
  • 降序:desc
  • 查询员工信息,按照奖金由高到低排序
select * from emp order by comm desc;

在这里插入图片描述

  • 发现前面的空值的排在前面,因为空值默认是排在前面的
select * from emp order by comm desc nulls first;

在这里插入图片描述

  • 可以修改下排在最后面
select * from emp order by comm desc nulls last;

在这里插入图片描述

  • 查询部门编号和工资, 部门编号升序排序,工资降序排序
select deptno, sal from emp order by deptno asc, sal desc; 

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。