Where子句
1、查询emp表中20号部门的员工信息
select * from emp where deptno = 20;
2、查询姓名是SMITH的员工,字符串使用'',内容大小写敏感
select * from emp where ename = 'SMITH';
3、查询1980年12月17日入职的员工,注意oracle默认日期格式(DD-MON-RR表示2位的年份)
select * from emp where hiredate = '17-12月-80';
4、查询工资大于1500的员工
select * from emp where sal > 1500;
5、查询工资不等于1500的员工【!=或<>】
select * from emp where sal <> 1500;
6、查询薪水在1300到1600之间的员工,包括1300和1600
select * from emp where (sal>=1300) and (sal<=1600);
或
select * from emp where sal between 1300 and 1600;
7、查询薪水不在1300到1600之间的员工,不包括1300和1600
select * from emp where sal NOT between 1300 and 1600;
8、查询入职时间在"1981-2月-20"到"1982-1月-23"之间的员工
select * from emp where hiredate between '20-2月-81' and '23-1月-82';
注意:
1)对于数值型,小数值在前,大数值在后
2)对于日期型,年长值在前,年小值在后
9、查询20号或30号部门的员工,例如:根据ID号,选中的员工,批量删除
select * from emp where (deptno=20) or (deptno=30);
或
select * from emp where deptno in (30,20);
10、查询不是20号或30号部门的员工
select * from emp where deptno NOT in (30,20);
11、查询姓名以大写字母S开头的员工,使用%表示0个,1个或多个字符
select * from emp where ename like 'S';
等价
select * from emp where ename = 'S';
select * from emp where ename like 'S%';
注意:
凡是精确查询用=符号
凡是不精确查询用like符号,我们通常叫模糊查询
12、查询姓名以大写字母N结束的员工
select * from emp where ename like '%N';
13、查询姓名第一个字母是T,最后一个字母是R的员工
select * from emp where ename like 'T%R';
14、查询姓名是4个字符的员工,且第二个字符是I,使用_只能表示1个字符,不能表示0个或多个字符
select * from emp where ename like '_I__';
15、插入一条姓名为'T_IM'的员工,薪水1200
insert into emp(empno,ename) values(1111,'T_IM');
16、查询员工姓名中含有'_'的员工,使用\转义符,让其后的字符回归本来意思【like '%\_%' escape '\'】
select * from emp where ename like '%\_%' escape '\';
17、插入一个姓名叫'的员工
insert into emp(empno,ename) values(2222,'''');
18、插入一个姓名叫''的员工
insert into emp(empno,ename) values(2222,'''''');
19、查询所有员工信息,使用%或%%
select * from emp;
select * from emp where ename like '%';
select * from emp where ename like '%_%';
20、查询佣金为null的员工
select * from emp where comm is null;
注意:null不能参数=运算
null能参数number/date/varchar2类型运算
21、查询佣金为非null的员工
select * from emp where comm is not null;
22、查询无佣金且工资大于1500的员工
select *
from emp
where (comm is null) and (sal>1500);
23、查询工资是1500或3000或5000的员工
select *
from emp
where sal in (4000,10000,1500,3,300,3000,5000);
24、查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式一,使用!=或<>)
select *
from emp
where (job='MANAGER') or (job<>'ANALYST');
25、查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式二,使用not)
select *
from emp
where (job='MANAGER') or (not(job='ANALYST'));