SQL语句

3.限定查询WHERE

1) 最基本的限定查询

SELECT DISTINCT *|列名 别名

FROM 表名

{WHERE 条件(s)}

如:SELECT * FROM emp WHERE sal>1500;

2) IS (NOT) NULL

如查询每月可以得到奖金的雇员信息:SELECT * FROM emp WHERE comm IS NOT NULL;

如查询没有奖金的雇员:SELECT * FROM emp WHERE comm IS NULL;

 

3) AND和 OR和NOT

同时满足两个条件用AND连接

如查询工资大于1500且每月可以得到奖金的雇员信息:

SELECT * FROM emp WHERE sal>1500 AND comm IS NOT NULL;

满足一个条件即可的用OR连接

如查询工资大于1500或者每月可以得到奖金的雇员信息:

SELECT * FROM emp WHERE sal>1500 OR comm IS NOT NULL;

用NOT取反

如查询工资不大于1500且每月不可以得到奖金的雇员信息(相当于整体的条件取反):

SELECT * FROM emp WHERE NOT(sal>1500 AND comm IS NOT NULL);

4) 指定范围BETWEEN

字段 BETWEEN 最小值 AND 最大值,等价于:字段>=最小值 AND字段<=最大值

如查询工资大于1500且小于3000的员工信息:

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000;

如查询在1981年雇佣的员工信息,即在1981年1月1日~1981年12月31日之间雇佣的雇员,注意日期表示的时候要加"'"

SELECT * FROM emp

WHERE hiredate BETWEEN '1-1月 -81' AND '31-12月 -81';

5) 范围查询IN

字段 (NOT) IN(值1,值2,……,值n)

如查询雇员编号是7369、7499、7521的员工信息:

SELECT * FROM emp WHERE empno IN (7369,7499,7521);

如果在制定的查询范围中指定了额外的内容,不影响程序运行

如SELECT * FROM emp WHERE ename IN ('SMITH' , 'ALLEN' , 'KING' , '#$#$#$#$' );

6) 模糊查询LIKE

两种通配符:

%:可以匹配任意长度的内容

_:可以匹配一个长度的内容

如查询雇员姓名中第二个字母是M的员工信息:

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

如查询雇员姓名中包含M的员工信息(即可以在任意的位置上出现M):

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

如查询1981年雇佣的员工信息:

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

如查询工资中包含6的员工信息:

SELECT * FROM emp WHERE sal LIKE '%6%';

7) 比较计算符号

在操作条件中可以使用:>、>=、=、<、<=

不等于符号有两种:<>或者!=

如查询固原编号不是7369的员工信息:

SELECT * FROM emp WHERE empno <>7369;

SELECT * FROM emp WHERE empno !=7369;

4. 对结果进行排序ORDER BY

SELECT DISTINCT *|列名 别名

FROM 表名

{WHERE 条件(s)}

{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}

 

ASC升序、DESC降序,默认是升序

如查询按工资降序排列员工信息:

SELECT * FROM emp ORDER BY sal DESC;

如查询10部门的所有雇员信息,按照工资高低排序,如果工资相等,按照雇用日期从早到晚排序:

SELECT * FROM emp

WHERE deptno=10 ORDER BY sal DESC,hiredate ASC;