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;