天天看点

限制查询

1、 限制查询

 就是根据一些特定的条件,查找指定的内容。

查出所有在10部门工作的雇员

 只要是部门编号为“10”就表示合法记录。

  SELECT * FROM emp WHERE deptno=10 ;

例如:要查询所有工资大于1000的全部员工信息

 SELECT * FROM emp WHERE sal>1000 ;

 要查询所有奖金大于等于300的全部雇员信息:

 SELECT * FROM emp WHERE comm>=300 ;

不等于:!=、<>

 例如:要查询雇员姓名不是SMITH的全部雇员。(除SMITH之外的全部雇员信息)

  SELECT * FROM emp WHERE ename!='smith' ;

 以上代码查询时出现了SMITH,因为oracle中的全部数据都是要区分大小写的。

  SELECT * FROM emp WHERE ename!='SMITH' ;

  SELECT * FROM emp WHERE ename<>'SMITH' ;

BETWEEN…AND…:范围查询

 例如:要查询雇员工资在1000~2000的全部雇员信息。

 SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 ;

IN操作符(给定查询范围)

 现在已经知道了三个雇员编号:7369、7876、7902,要求可以根据这雇员编号查询出全部的雇员信息。

 Empno的取值只能是(7369、7876、7902)

 SELECT * FROM emp WHERE empno IN (7369,7876,7902) ;

LIKE运算:模糊查询:

 给定一个关键字,之后可以根据此关键字查询出全部的内容:

 查询,雇员姓名中包含“S”的人员信息。

 SELECT * FROM emp WHERE ename LIKE '%S%';

 假设:要查询以字母“S”开头的全部的雇员信息

  SELECT * FROM emp WHERE ename LIKE 'S%';

 当然,也可以对查询进行指定位数的匹配:

  姓名中的第二个字母为“A”的全部雇员信息:

   SELECT * FROM emp WHERE ename LIKE '_A%';

 • %:表示匹配任意的字符

 • _:表示只匹配一个字符

IS NULL与IS NOT NULL:判断是否为空

例如:查询全部佣金为null的雇员信息:

  SELECT * FROM emp WHERE comm IS NULL;

 查询佣金不为null的雇员信息:

  SELECT * FROM emp WHERE comm IS NOT NULL;

查询:雇佣日期是1981年的全部雇员信息

 • 使用LIKE查询:

  SELECT * FROM emp WHERE hiredate LIKE '%81%';

 • 使用BETWEEN…AND进行查询:

  SELECT * FROM emp WHERE hiredate BETWEEN '1-1月 -1981' AND '31-12月 -1981';

 • 以后只要是碰见日期都可以用字符串表示(加入了“'”)

表示可以连接多个条件:

 • AND(与):如果两个条件都为真,则表示满足条件,之外都不满足。

 • OR(或):如果两个条件中有一个条件为真,则表示满足,之外都不满足。

 • NOT(非):可以把为真的条件变为假。

例如:查询雇员编号为7369,且职务为办事员的全部雇员信息:

 SELECT * FROM emp WHERE empno=7369 AND job='CLERK';

例如:查询在10部门工作或者职务为办事员的全部雇员信息:

 SELECT * FROM emp WHERE deptno=10 OR job='CLERK';

例如:查询所有佣金比工资高的全部雇员信息,且不是在10部门工作的人员

 SELECT * FROM emp WHERE comm>sal AND deptno<>10;

例如:查询不在10部门工作的全部雇员

 SELECT * FROM emp WHERE NOT deptno=10;

例如:查询工作即不是办事员又不是经理的全部雇员信息

 • SELECT * FROM emp WHERE job<>'CLERK' AND job<>'MANAGER';

 • 如果给定了范围使用IN操作最合适:

  |- SELECT * FROM emp WHERE job NOT IN ('CLERK','MANAGER');

查询:工作是销售人员或总裁且工资大于1200的全部雇员信息

 SELECT * FROM emp WHERE job IN ('PRESIDENT','SALESMAN') AND sal>1200;

可以为查出的数据进行排序:默认的排序为升序

例如:可以按工资由高到低进行排序

 SELECT * FROM emp ORDER BY sal desc;

可以同时对多个字段进行排序:

 例如:按工资由高到低排序,如果工资相等,则按照受雇日期由早到近排序。

 SELECT * FROM emp ORDER BY sal desc,hiredate;

也可以使用列的别名进行排序:

 SELECT empno,sal s,ename,hiredate h FROM emp ORDER BY s desc,h;

排序语句从语法上来看,必须写在WHERE语句之后

 查询,10部门中的全部雇员信息,之后按工资由高到低排序。

 SELECT * FROM emp WHERE deptno=10 ORDER BY sal desc ;

本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91208,如需转载请自行联系原作者