• 限制数据和对数据排序
  • 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运算符判断要比较的值是否满足部分匹配,也叫模糊查询
      • %:代表零个或多个字符
      • _:代表一个字符

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;

最后修改:2020 年 11 月 18 日 12 : 48 PM
如果觉得我的文章对你有用,请随意赞赏