在Oralce中,对于一些操作需要添加运算符来对查询删除等进行条件的筛选,这些符号成为运算符,其包含算术运算符、比较运算符、逻辑运算符、连接运算符。
QL操作符优先级从高到低为:算数操作符 - 连接操作符 - 比较操作符 - NOT逻辑操作符 - AND逻辑操作符 - OR逻辑操作符。
算术运算符
算数运算符包括 + - * /,通过算术运算符可以生成一个新列,新列的值只是用于显示,不计入旧表之中,如果想要把运算的值存入旧表中需要其余的操作。我们可以把生成的新列产生别名来记录,使用别名的方法为 select 列名 别名 from 表名。输出一个表,显示ename和empno+mgr。
select ename,empno+mgr from emp;
select ename,empno+mgr 和 from emp;
比较运算符
比较运算符一般用于比较,其包括 =、<>、!=、、<=、>=、between and、in、like、is null,分别为等于、不等、不等、小于、大于、小于等于、大于等于、在xxx之间、匹配、模糊匹配、为空。
=、<>、!=、、<=、>= 用于比较。
between and运算符:使用between操作来查询列值包含指定区间内的行,这个区间也可以为日期(日期的默认形式为日-月-年,月为英文显示)。
in运算符:会与后面查询结果或列出的的所有值进行匹配。
like运算符:使用like运算符一般和通配符一起使用,通常使用通配符%和_达到模糊匹配的效果。其中%表示零个或者多个字符,_表示一个字符。
is null:判断该值是否为空,如果为空则返回,否则不返回。使用= <> !=来判断
select ename from emp where mgr=7698;
select ename from emp where mgr<>7698;
select ename from emp where mgr!=7698;
使用between进行日期判断
select ename from emp where hiredate between '01-may-1980' and '01-may-1981';
查询工作为MANAGER或CLERK的信息
select empno,ename,job from emp where job in ('MANAGER','CLERK');
使用like查询empno中以79开头的值
select empno,ename,job from emp where empno like '79%';
练习:
select empno,ename,sal from emp where sal>1500;
查询emp表中薪资大于1500的员工编号、员工姓名、薪资
select empno,ename,sal from emp where job<>'salesman';
查询emp表中非salesman的员工编号、员工姓名
select * from emp where hiredate>'01-jan-1980' and hiredate
显示1980-01-01到1981-05-05雇佣的员工信息
select * from emp where hiredate>to_date('1980/01/01','yyyy/mm/dd') and hiredate
显示1980-01-01到1981-05-05雇佣的员工信息
逻辑运算符
逻辑运算符用于组合多个比较多个运算的结果以生成一个真或假的结果,逻辑运算操作符包括与(and) 或(or) 非(not)。select empno,ename,job from emp where empno>=7600 and empno <=7800;
连接运算符
连接运算符用于将多个字符串或者数据值合并成一个字符串,常用的连接运算符是||,可以表示输出结果的时候显示的值。select ('钱是'||mgr)mgr from emp;
注:别名介绍
使用as来命令别名或者不添加直接使用
列名 as 别名 或者 列名 别名select ename,empno+mgr 和 from emp;
附
(1)emp表介绍
字段 类型 描述
empno NUMBER(4) 表示雇员编号,是唯一编号
ename VAECHAR2(10) 表示雇员姓名
job VARCHAR2(9) 表示工作职位
mgr NUMBER(4) 表示一个雇员的领导编号
hiredate DATE 表示雇佣日期
sal NUMBER(7,2) 表示月薪,工资
comm NUMBER(7,2) 表示奖金,或者称为佣金
deptno NUMBER(2) 部门编号
(2)Date类型
使用Date有两种形式
第一种是'日-月-年'日直接用数字,月用英语表示,年为四位的年份。
第二种是to_date('xx-xx-xxxx','dd-mm-yyyy')使用todate字符转换,前面的日期年月日顺序无所谓,只需要与后面的dd mm yyyy相对应即可。
dd 表示日,mm 表示月,yyyy 表示年。
(3)通配符
- 匹配一个字符 A like 'c_'
%匹配0或多个任意长度字符串 b like 'c%'
[] 括号内指定范围内的一个字符 c like '9w[1-2]'
'_S%'第二个字符是s的字符串
'%30\%%' escape '\'包含30%的字符串
escape设置了\为赚意字符,\表示转意,即第二个%表示字符,第一和第三个全表示0个或任意长度的字符串
escape关键字是指定转义字符的,上面的转义字符就是 \
例子:
select ename as 姓名 from emp where ename like 'A%';
select ename as 姓名 from emp where ename like '%S%';
select * from emp where ename like '%b_%' escape 'b';