限定查询
当数据量过大,全部数据无法直接查看,这时需针对所需数据进行筛选,而筛选就是限定查询的功能。
限定查询的语法格式:
SELECT [DISTINCT] * | 列名称 [AS] [列别名] FROM 表名称
[ WHERE 条件(s)];
编写where 子句判断条件时,可以同时指定多个判断条件的连接,而连接主要通过逻辑运算符实现,逻辑运算符有 **与(AND) 、或(OR) 、非(NOT)**三种
1. 统计出基本工资高于1500的全部员工信息
SELECT * FROM emp WHERE sal > 1500;
对于SQL语法而言,具备三个子句
第一步:执行FROM子句,来控制数据来源;
第二步:执行WHERE子句,使用限定符进行数据行的过滤
第三步:执行SELECT子句,确定要显示的数据列。
对数据进行限定查询
2. 查询所有不是办事员的雇员信息
1. SELECT * FROM emp WHERE job <> 'CLERK'
2. SELECT * FROM emp WHERE job!='CLERK';
3.查询工资范围在1500-3000的全部雇员信息
SELECT * FROM emp WHERE sal >= 1500 AND sal <=3000;
4. 查询10部门中的经理或者20部门的业务员的信息
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK');
5.查询不是办事员的且基本工资大于2000的全部雇员信息
1. SELECT * FROM emp WHERE job != 'CLERK' AND sal >2000
2. SELECT * FROM emp WHERE NOT(job = 'CLERK' OR sal <= 2000);2. SELECT * FROM emp WHERE NOT(job = 'CLERK' OR sal <= 2000);
范围查询
3.查询工资范围在1500-3000的全部雇员信息
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;
6.查询在1981 年 雇佣的全部雇员信息
SELECT * FROM emp WHERE hiredate BETWEEN '01-1月 -81' AND ‘31-12月 -81’;
判断内容是否为null : IS NULL、IS NOT NULL
语法 :
判断为NULL : 字段 | 值 IS NULL;
判断不为NULL : 字段| 值 IS NOT NULL (NOT 字段 | 值 IS NULL)
7.询收取佣金的员工的不同工作
SELECT DIETINCT job FROM emp WHERE comm IS NOT NULL;
列表范围查询: IN 、 NOT IN
在指定数据范围内: 字段 | 值 IN (值,…)
不在指定数据范围内: 字段 | 值 NOT IN (值,…)
LIKE 模糊查询
语法:
满足模糊查询: 字段 | 值 LIKE 匹配标记
不满足模糊查询: 字段 | 值 NOT LIKE 匹配标记
如果想对某一列进行模糊查询,可以使用LIKE 子句完成,通过LIKE 可以进行关键字的模糊查询,在LIKE 子句中有两个通配符:
百分号(%):可匹配任意类型和长度的字符,如果是中文则使用两个百分号(%%);
下划线(_):可匹配单个任意字符,常用来限制表达式的字符长度;
8.查询雇员姓名是以S靠头的全部雇员信息
SELECT * FROM emp WHERE ename LIKE 'S%';
9.查询雇员姓名第二个字母是M 的全部雇员信息
SELECT * FROM emp WHERE ename LIKE '_M%';
10.查询雇员姓名长度为6或者超过6个的雇员信息
SELECT * FROM emp WHERE enmae LIKE '______%';(6个下划线)
11.(集合以上知识)查询10部门中的经理或者20部门的业务员,既不是经理又不是业务员但其佣金大于或等于2000的所有员工的详细资料,并且要求这些雇员的姓名之中包含字母S或字母K
SELECT * FROM emp
WHERE ((deptno = 10 AND job = 'MANAGER' ) OR (deptno = 20 AND job = 'CLERK')
OR (job NOT IN ('MANAGER','CLERK') AND sal >=2000)) AND (ename LIKE '%S%' OR ename LIKE '%K%');