- 限制数据和对数据排序
- where子句
- 作用:限制显示的数据 简单来说就是选择显示的行数据
- 语法:where 列名 操作符 操作数
- 注意:where 子句一定放在from子句后面
1、查询工作在20号部门的员工信息
select * from emp where deptno = 20;
- 比较操作符
< <= >= <> != = - 比较数值型数据
2、查询工资大于2000的员工姓名,工资
select ename,sal from emp where 2000<sal;
比较字符型数据 注意:需要用单引号引起来 而且严格区分大小写
3、查询工作是CLERK的员工信息
select from emp where job='CLERK';
select from emp where job='clerk';--严格区分大小写
比较日期型数据 注意:需要用单引号引起来 oracle默认日期格式为 DD-MON-RR格式 31-12月-1981
4、查询入职日期在1981年之后的员工信息
select from emp where hiredate>'31-12月-1981';
5、查询不在20号部门工作的员工信息
select from emp where deptno !=20;
select * from emp where deptno <>20;
- 特殊比较运算符
BETWEEN 下限 AND 上限 使用BETWEEN .. AND.. 运算符来判断要比较的值是否在某个范围内。
注意:包含上限和下限 - 比较数值类型
6、查询工资在1000到3000之间的员工信息
select * from emp where sal between 1250 and 3000; - 比较日期类型
7、查询入职日期在81年之后83之前的员工信息
select * from emp where hiredate between '31-12月-1981' and '1-1月-1983';
- IN运算符 使用IN运算符判断要比较的值是否和集合列表中的任何一个值相等
- 语法: in(集合列表)
8、查询工作在20或10号部门的员工信息
select from emp where deptno in (20,10);
9、查询职位是CLERK或MANAGER的员工信息
select from emp where job in('CLERK','MANAGER');
4.查询经理编号为7902, 7566, 7788的员工姓名,经理编号。
select ename,mgr from emp where mgr in(7902,7566,7788);
- LIKE运算符
- 使用LIKE运算符判断要比较的值是否满足部分匹配,也叫模糊查询
- %:代表零个或多个字符
- _:代表一个字符
- 使用LIKE运算符判断要比较的值是否满足部分匹配,也叫模糊查询
10、查询名字中包含M的员工信息
select from emp where ename like '%M%';--%:代表零个或多个字符
11、查询名字第二个字符为S的员工信息
select from emp where ename like 'M%';--:代表一个字符
12、查询名字开头为SM的员工信息
select from emp where ename like 'SM%';
可以使用ESCAPE标识符实现对“%”和 “_”的查找
13、查询名字开头为SM_的员工信息
select from emp where ename like 'SM@_%' escape '@';
- IS NULL 运算符
- 使用 IS NULL 运算符来判断要比较的值是否为空值NULL
14、查询奖金为null的员工信息
select * from emp where comm is null;
- 逻辑运算符 and与 or或 not非
-
作用:当需要和多个条件表达式进行比较时,需要使用逻辑运算符把多个表达式连接起来
-
语法: 表达式A and 表达式 B :当A和B都为true整个表达式才为true,否者为false
-
注意: 表达式A和表达式 B必须返回的都是boolean
15、查询职位是CLERK【并且】工资大于1000的员工姓名和工资
select ename,sal from emp where job='CLERK' and 1000<sal;
-- ---------------or ------------------
- 语法: 表达式A or 表达式 B :只要A或者B其中一个表达式为true,整个表达式为true,A和B都为false,整个表达式才为false
- 注意: 表达式A和表达式 B必须返回的都是boolean
16、查询职位是CLERK【或者】工资大于1000的员工姓名和工资
select ename,sal,job from emp where job='CLERK' or 1000<sal;
select *from emp
-----------------not-----------------------
- 逻辑非,用来对条件表达式取反。
- 一般与 between..and.. like in结合使用
17、查询入职日期不在81年之后83之前的员工信息
select from emp where hiredate not between '31-12月-1981' and '1-1月-1983';
18、查询员工姓名开头不是S的员工信息
select from emp where ename not like 'S%';
19、查询不工作在20号或10号部门的员工信息
select * from emp where deptno not in(10,20);
- 运算符的优先级
- 逻辑运算符的优先级:or<and
- 括号的优先级最高
- 先运算再比较最后做逻辑判断
20、查询工资大于1500并且职位是CLERK,或职位是SALESMAN的员工信息
select from emp where 1500<sal and job='CLERK' or job='SALESMAN';
21、查询工资大于1500并且职位是CLERK或者SALESMAN的员工信息
select from emp where (job='CLERK' or job='SALESMAN') and 1500<sal;
22、查询年薪在12000到60000之间 并且 工作是SALESMAN的员工信息(不计奖金)
select from emp where 12000<sal12 and sal*12<60000 and job='SALESMAN';
- 排序:order by子句
- 作用:对查询得到的结果集进行排序
- 语法:order by 列/列别名/列序号 排序规则
-+ 注意: - ①空值最大,降序排序时,null会在最前
- ②order by子句 必须在整个sql语句最后
- ③sql语句运行顺序:from-where-select-order by
- ④按照多列排序:中间用逗号隔开,而且有先后顺序
- asc:升序排序,默认
- desc:降序排序
-
数值类型
23、查询所有员工信息并按照工资进行升序排序
select from emp order by sal asc;
select from emp order by sal;
24、查询所有员工信息并按照工资进行降序排序
select from emp order by sal desc;
25、查询所有员工信息并按照奖金进行降序排序
select from emp order by comm desc;
26、查询工作在10号部门的员工信息并且按照工资进行降序排序
select * from emp where deptno=10 order by sal desc -
字符类型排序: 按照26个英文字母排序 A~Z
27、查询所有员工信息并按照员工姓名进行升序排序
select * from emp order by ename ; -
日期类型排序 日期越往后越大
28、查询所有员工信息并按照入职日期进行升序排序
select * from emp order by hiredate; -
按列别名排序
select ename,hiredate empdate,empno from emp order by empdate; -
按列序号排序:序号从1开始
select ename,hiredate ,empno from emp order by 2; -
按照多列排序:中间用逗号隔开,而且有先后顺序
29、查询20号部门员工信息并先按工作降序排序,再按照工资升序排序
select * from emp where deptno=20 order by job desc,sal desc;
木有代码高亮OωO