Oracle运算符

操作符;

算术运算符
加:+
减:-
乘:*
除:/
取余:Mod(X,Y)

比较运算符:
1、等于:=
2、大于:>
3、小于:<
4、不等于:!= 或<>
5、小于等于:<=
6、大于等于:>=

逻辑运算符有三个:
1、 与:AND
2、 或:OR
3、 非:NOT

字符串连接:||

示例:
SQL语句:select ename,sal,sal*12+2000 from emp where sal>2000;
如下图所示:

消除重复行:
查询消除某个列重复数据。
SQL关键字:Distinct
SQL语句:select distinct 列名 from 表名

示例:
SQL语句:select distinct deptno from emp order by deptno asc;

NULL操作
SQL语句:is null/is not null;
主键不能为空。
1、是空值SQL语句:Is null
示例:
SQL语句:select empno,ename,sal,comm from emp where comm is null;
结果如下图所示:

2、非空值SQL语句:Is not null
示例:
SQL语句:select empno,ename,sal,comm from emp where comm is not null;

IN操作:
在列中选择中符合条件的相应的行,即在一个表中的某一列选择多行的情况。
判断某一列符合IN括号后面的N个值。
SQL语句:where 列名 in(值,...,值)

示例:
选择工作为销售员、经理、分析师的员工姓名,工作,工资;

SQL语句:Select ename,job,sal from emp where job in('SALESMAN','PRESIDENT','ANALYST');

等价于:

注意:
1、因为调用了函数IN(),因此执行速度要慢;
2、or在明确知道某一行的字段的时候使用;
3、用从一个表查询出的结果(结果可能是一个也可能是多个结果)去另一个表查询的时候,无法知道查询出的结果字段,此时只能使用IN操作。

扩展:
SQL语句:select ename,sal,job from emp where job not in('SALESMAN','PRESIDENT' ,'ANALYST');

SQL语句:select ename,sal,job from emp where job!='SALESMAN' AND job!='PRESIDENT' AND job!='ANALYST';

实例
A表 B表 C表
学号 姓名 课程编号 课程名称 学号 课程编号
001 张三 A 语文 001 A
002 李四 B 数学 002 B
…… …… C 英语 003 C
…… …… …… ……

请写出如下SQL语句
1)查询出选择“语文”课程的学号、姓名。
Select 姓名,学号 from A where 学号 IN(Select 学号 from C where 课程编号=(Select 课程编号 from B where 课程名称=’语文’));

2)查询出张三选课的课程名称。
Select 课程名称 from B where 课程编号 IN(Select 课程编号 from C where 学号=(Select 学号 from A where 姓名=’张三’ ));

原文地址:https://www.cnblogs.com/xianmin/p/14016788.html