就是根据一些特定的条件,查找指定的内容。
只要是部门编号为“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' ;
例如:要查询雇员工资在1000~2000的全部雇员信息。
SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 ;
现在已经知道了三个雇员编号:7369、7876、7902,要求可以根据这雇员编号查询出全部的雇员信息。
Empno的取值只能是(7369、7876、7902)
SELECT * FROM emp WHERE empno IN (7369,7876,7902) ;
给定一个关键字,之后可以根据此关键字查询出全部的内容:
查询,雇员姓名中包含“S”的人员信息。
SELECT * FROM emp WHERE ename LIKE '%S%';
假设:要查询以字母“S”开头的全部的雇员信息
SELECT * FROM emp WHERE ename LIKE 'S%';
当然,也可以对查询进行指定位数的匹配:
姓名中的第二个字母为“A”的全部雇员信息:
SELECT * FROM emp WHERE ename LIKE '_A%';
• %:表示匹配任意的字符
• _:表示只匹配一个字符
例如:查询全部佣金为null的雇员信息:
SELECT * FROM emp WHERE comm IS NULL;
查询佣金不为null的雇员信息:
SELECT * FROM emp WHERE comm IS NOT NULL;
• 使用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(非):可以把为真的条件变为假。
SELECT * FROM emp WHERE empno=7369 AND job='CLERK';
SELECT * FROM emp WHERE deptno=10 OR job='CLERK';
SELECT * FROM emp WHERE comm>sal AND 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 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;
查询,10部门中的全部雇员信息,之后按工资由高到低排序。
SELECT * FROM emp WHERE deptno=10 ORDER BY sal desc ;