oracle 去重_SQL基础第六讲:运算、操作符、去重、集合运算

    好久没写教程了,一直在发题目,今天给大家写一篇关于各种操作符以及集合运算,排序等方面的知识。

    其实在各大编程语言中,都会有算术运算符、关系运算符、逻辑运算符、字符拼接操作符、in操作符等等,在这里呢 给大家简单介绍一下

   1、算术运算符

    Oracle中的算术运算符,只有+、-、*、/四个,其中除号(/)的结果是浮点数。求余运算只能借助函数:MOD(x,y):返回x除以y的余数。

    【例】每名员工年终奖是2000元,请显示基本工资在2000元以上的员工的月工资,年总工资。

SELECT E.ENAME, E.SAL, (E.SAL * 12 + 2000) FROM EMP E WHERE E.SAL > 2000;

注意:

    算数运算通常是在两个数值之间进行, 另外日期也可以进行减法运算,返回相差的天数

    2、关系运算符

运算符

说明

运算符

说明

=

等于 

>

大于

<>或者!=

不等于

<=

小于或者等于

<

小于

>=

大于或者等于

注意:

    1. 关系运算永远是两两之间进行的,如果有多个关系运算那么需要使用逻辑运算符连接

    2. 关系运算的对象,只能是一个值与另一个值进行比较,不能一个值与多个值,或者多个值与多个值对比

    3.关系运算返回的结果是一个布尔值, true /false

  

  3、逻辑运算符

运算符

说明

示例

说明

NOT

非 运算符

NOT 条件

当条件成立时,整个not表达式返回不成立(false)

AND

与 运算符

条件1 AND 条件2

左右两包的条件均成立,整个条件才成立

OR

或 运算符

条件1 OR 条件2

左右两边的条件,任意一个成立,整个条件就成立

三个逻辑运算符优先级:NOT>AND>OR  (括号可以改变优先级),逻辑运算符接逻辑值(真/假)

  注意, 涉及到或运算(OR), 一定要用 括号显示标注.

  

   4、字符串连接操作符(||)

在Oracle中,字符串的连接用双竖线(||)表示。

【例】在EMP表中,查询工资在2000元以上的姓名以及工作。

SELECT (ENAME || 'is a ' || JOB) AS "Employee Details"

  FROM EMP

 WHERE SAL > 2000;

代码解析:

    Oracle中字符串可以用单引号,存在特殊字符的时候,必须用双引号。

 

    5、in 操作符

IN指的是将某个值与一个指定的集合内的值进行比较,如果满足任意条件,则返回对应的行

例:查询出雇员编号是7369、7566,7788,9999的雇员的信息

select * from emp where empno in(7369,7566,7788,9999);

还可以使用not in 表示不在范围之中

select * from emp where empno not in (7369,7566,7788,9999);

但是如果使用not in 查询的内容有null值,那就没有返回值。in则没有这个限制 

观察

select * from emp where empno not in (null);

  6、模糊查询

LIKE 

模糊匹配符

    任意一个 :   _

    任意0个或者多个  % 

匹配名字中含有s 的员工

select ename from ename like '%s%';

 

  7、 BETWEENAND

在WHERE子句中,可以使用BETWEEN操作符来查询列值包含在指定区间内的行。

【例】查询工资从10002000之间的员工。

可以使用传统方法:

WHERE SAL>=1000 AND SAL<=2000

也可以使用:

WHERE SAL BETWEEN 1000 AND 2000

BWTWEEN操作所指定的范围也包括边界。

代码演示:BETWEEN操作

SELECT E.ENAME, E.JOB, E.SAL FROM EMP E WHERE E.SAL BETWEEN 1000 AND 2000;

8、 DISTINCT操作

在Oracle查询中结果中,可能出现若干行相同的情况,那么可以使用DISTINCT消除重复行。

【例】DISTINCT消除重复行(GROUP BY性能较好)

SELECT DISTINCT DEPTNO FROM EMP;


注意: 

distince 去重是以整行为单位进行的,所以如果行的列比较多,并且数据量较大的时候,不建议使用,性能比较差(返回结果的时间长)

1. distinct 是对最终返回的查询结果集进行去重

2. 重复的判断依据是以整行为参照(所有列)

3. distinct 用在select后面

 

  9 、NULL操作 

空值是指没有定义的值,空值不等于任何值,

在查询条件中NULL值用IS NULL作条件,非NULL值用 IS NOT NULL做条件。

空值的一些特性

1、 空值跟任何值进行算术运算,得到的结果都为空值

2、 空值跟任何值进行关系运算,得到的结果都为不成立

3、 空值不参与任何聚合运算,(空值转换!!)

4、 排序的时候,空值永远是最大的

【例】查询EMP表中没有发奖金的员工。

SELECT * FROM EMP E WHERE COMM IS NULL;

 

    10 、集合运算

集合运算就是将两个或者多个结果集组合成为一个结果集。集合运算包括:

Ø INTERSECT(交集),返回两个查询共有的记录。

Ø UNION ALL(并集),返回各个查询的所有记录,包括重复记录。

Ø UNION(并集),返回各个查询的所有记录,不包括重复记录。

Ø MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。

当使用集合操作的时候,要注意

1.查询所返回的列数以及列的类型必须匹配,列名可以不同。

2.只有UNION ALL不会去重。其他三个都需要排序后去重,性能比较差。

【例】查询出dept表中哪个部门下没有员工。只需求出dept表中的部门号和emp表中的部门号的补集即可。

SELECT D.DEPTNO FROM DEPT DMINUSSELECT E.DEPTNO FROM EMP E;

  刚开始编写文章,很多地方都有不足,希望以后可以为大家贡献出更好的文章,谢谢大家!

    ps:还没有讲解如何安装数据库软件,我会在公众号的菜单栏中添加了安装教程供大家安装,谢谢cbfe98ccbc04d7ce579901baeba38cee.pngcbfe98ccbc04d7ce579901baeba38cee.png,碰到安装上的问题也可以给作者发消息或者留言~~

                    1a5ed9416c955c0fd19b28d1957acfaf.png  感觉还不错的话,点下在看鼓励一下作者吧  1a5ed9416c955c0fd19b28d1957acfaf.png

   没有关注的也可以关注下公众号~再次感谢88d9e4ed815f8f83e51bf1a98d3ac97b.png88d9e4ed815f8f83e51bf1a98d3ac97b.png88d9e4ed815f8f83e51bf1a98d3ac97b.png

efdcb2a047a23ba2d94e3a79eca0352f.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值