1、 限制查询
就是根据一些特定的条件,查找指定的内容。
就是根据一些特定的条件,查找指定的内容。
查出所有在10部门工作的雇员
只要是部门编号为“10”就表示合法记录。
SELECT * FROM emp WHERE deptno=10 ;
例如:要查询所有工资大于1000的全部员工信息
SELECT * FROM emp WHERE sal>1000 ;
要查询所有奖金大于等于300的全部雇员信息:
SELECT * FROM emp WHERE comm>=300 ;
只要是部门编号为“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' ;
例如:要查询雇员姓名不是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 ;
例如:要查询雇员工资在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) ;
现在已经知道了三个雇员编号: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%';
• %:表示匹配任意的字符
• _:表示只匹配一个字符
给定一个关键字,之后可以根据此关键字查询出全部的内容:
查询,雇员姓名中包含“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;
例如:查询全部佣金为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';
• 以后只要是碰见日期都可以用字符串表示(加入了“'”)
• 使用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(非):可以把为真的条件变为假。
• AND(与):如果两个条件都为真,则表示满足条件,之外都不满足。
• OR(或):如果两个条件中有一个条件为真,则表示满足,之外都不满足。
• NOT(非):可以把为真的条件变为假。
例如:查询雇员编号为7369,且职务为办事员的全部雇员信息:
SELECT * FROM emp WHERE empno=7369 AND job='CLERK';
SELECT * FROM emp WHERE empno=7369 AND job='CLERK';
例如:查询在10部门工作或者职务为办事员的全部雇员信息:
SELECT * FROM emp WHERE deptno=10 OR job='CLERK';
SELECT * FROM emp WHERE deptno=10 OR job='CLERK';
例如:查询所有佣金比工资高的全部雇员信息,且不是在10部门工作的人员
SELECT * FROM emp WHERE comm>sal AND deptno<>10;
SELECT * FROM emp WHERE comm>sal AND deptno<>10;
例如:查询不在10部门工作的全部雇员
SELECT * FROM emp WHERE NOT deptno=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');
• 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 WHERE job IN ('PRESIDENT','SALESMAN') AND sal>1200;
可以为查出的数据进行排序:默认的排序为升序
例如:可以按工资由高到低进行排序
SELECT * FROM emp ORDER BY sal desc;
例如:可以按工资由高到低进行排序
SELECT * FROM emp ORDER BY sal desc;
可以同时对多个字段进行排序:
例如:按工资由高到低排序,如果工资相等,则按照受雇日期由早到近排序。
SELECT * FROM emp ORDER BY sal desc,hiredate;
例如:按工资由高到低排序,如果工资相等,则按照受雇日期由早到近排序。
SELECT * FROM emp ORDER BY sal desc,hiredate;
也可以使用列的别名进行排序:
SELECT empno,sal s,ename,hiredate h FROM emp ORDER BY s desc,h;
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 ;
查询,10部门中的全部雇员信息,之后按工资由高到低排序。
SELECT * FROM emp WHERE deptno=10 ORDER BY sal desc ;
本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91208,如需转载请自行联系原作者