0
点赞
收藏
分享

微信扫一扫

MySQL40--WHERE子句

WHERE子句

WHERE子句用于有条件地从表中选取数据;
在WHERE子句中可以使用MySQL支持的任何运算符以及函数(聚合函数除外);

-- 查找salePrice>=50的记录   
SELECT id,bookname,salePrice FROM t13 WHERE salePrice >= 50;

-- 查找salePrice介于50~100之间的记录 
SELECT id,bookname,salePrice FROM t13 WHERE salePrice BETWEEN 50 AND 100;

-- 查找id为15的记录 
SELECT id,bookname,salePrice FROM t13 WHERE id=15;

-- 查询emp表中,工资大于2500的,员工的编号(empno),姓名(ename),工资(sal)
SELECT empno,ename,sal
FROM emp
WHERE sal>2500;

-- 查询student表中,班级(sclASs)是1年2班的学员信息
SELECT * FROM student WHERE sclASs='1年2班';

-- 查询emp表中,工资(sal)不等于1250的,员工信息
SELECT * FROM emp WHERE sal<>1250;

-- 查询emp表中,工资(sal)在1000~5000之间的,员工的编号(empno),姓名(ename),工资
SELECT empno,ename,sal
FROM emp
WHERE 1000<=sal AND sal<=5000;
-- AND 表示与(并且)的意思,可以通过AND来连接多个条件

-- 查询emp表中,工资(sal)大于1000并且部门编号(deptno)是30号部门的,员工的编号(empno),姓名(ename),工资(sal),部门编号(deptno)
SELECT empno,ename,sal,deptno
FROM emp
WHERE sal>1000 AND deptno=30;

-- 查询emp表中,职位(job)是SALESMAN并且工资(sal)小于等于1500的,员工的编号(empno),姓名(ename),职位(job),工资(sal),根据员工编号(empno)降序排列
SELECT empno,ename,job,sal
FROM emp
WHERE job='SALESMAN' AND sal<=1500
ORDER BY empno DESC;

-- 查询emp表中,工资大于4000或者职位(job)是SALESMAN,员工的编号(empno),职位(job),工资(sal)
SELECT empno,job,sal
FROM emp
WHERE sal>4000 OR job='SALESMAN';
-- OR 表示或(或者)的意思,可以通过OR来连接多个条件

-- 查询emp表中,员工编号(empno),是7521、7839、7902的员工信息  ---面试题
SELECT * FROM emp
WHERE empno=7521 OR empno=7839 OR empno=7902;

-- 查询student表中,班级(sclASs)是1年1班、2年1班、1年3班的学员信息
SELECT * FROM student WHERE sclASs='1年1班' OR sclASs='2年1班' OR sclASs='1年3班';

-- 查询emp表中,工资(sal)不等于1250的,员工的编号(empno),姓名(ename),工资(sal),根据工资(sal)降序排列
SELECT empno,ename,sal
FROM emp
WHERE sal<>1250
ORDER BY sal DESC;

SELECT empno,ename,sal
FROM emp
WHERE NOT sal=1250
ORDER BY sal DESC;
-- 说明: NOT 表示非(取反)的意思,一般将NOT添加在列名前。

-- 查询emp表中,奖金(comm)为NULL的,员工信息
SELECT * FROM emp WHERE comm IS NULL;

-- 查询emp表中,上级领导编号(mgr)为NULL的,员工信息
SELECT * FROM emp WHERE mgr IS NULL;

-- 查询emp表中,有奖金(comm)的员工信息
SELECT * FROM emp WHERE NOT comm IS NULL AND comm<>0;
SELECT * FROM emp WHERE comm>0;
SELECT * FROM emp WHERE comm IS NOT NULL AND comm<>0;

-- 查询emp表中,有上级领导编号(mgr)的,员工信息
SELECT * FROM emp WHERE mgr IS NOT NULL;

-- 查询student表中,分数在70~100之间的,学员的编号(sid),姓名(sname),分数(score)
SELECT sid,sname,score
FROM student
WHERE score>=70 AND score<=100;

SELECT sid,sname,score
FROM student
WHERE score BETWEEN 70 AND 100;
-- BETWEEN....AND 主要用于查询某个取值范围的数据
-- (a) 使用BETWEEN...AND进行查询,可以取到2个边界值
-- (b) 当使用AND进行查询时,条件中带=号,结果和BETWEEN...AND查询的结果相同

-- 查询student表中,分数不在70~100之间的,学员的编号(sid),姓名(sname),分数(score) --2种方法
SELECT sid,sname,score
FROM student
WHERE NOT score BETWEEN 70 AND 100;

SELECT sid,sname,score
FROM student
WHERE score<70 OR score>100;

-- 查询emp表中,员工编号(empno)是7521、7369、7902、7921的员工信息
SELECT * FROM emp WHERE empno=7521 OR empno=7369 OR empno=7902 OR empno=7921;
SELECT * FROM emp WHERE empno in(7521,7369,7902,7921);

-- 查询emp表中,员工职位(job)是CLERK、MANAGER、ANALYST的员工信息
SELECT * FROM emp WHERE job in('CLERK','MANAGER','ANALYST');

-- 查询emp表中,员工职位(job)不是CLERK、MANAGER、ANALYST的员工信息
SELECT * FROM emp WHERE NOT job in('CLERK','MANAGER','ANALYST');

-- 查询emp表中,员工姓名(ename)首字母是M的,员工的姓名、职位(job)、工资(sal)
-- 分析: Mdfdf M ---> M%
SELECT ename,job,sal FROM emp WHERE ename LIKE 'M%';
-- LIKE-(模糊查询)
-- (a) % 表示0个或者多个任意字符
-- (b) _ 表示任意1个字符

-- 查询student表中,姓孙的学员信息
SELECT * FROM student WHERE sname LIKE '孙%';

-- 查询emp表中,员工姓名(ename)尾字母是N的,员工的姓名、职位(job)、工资(sal)
-- 分析: 2ddN N ----->%N
SELECT ename,job,sal FROM emp
WHERE ename LIKE '%N';

-- 查询emp表中,员工姓名(ename)包含(含有)字母N的,员工的姓名、职位(job)、工资(sal)
-- 分析: Ndf 3tN N 3fNgfg --- %N%
SELECT ename,job,sal FROM emp
WHERE ename LIKE '%N%';

-- 查询emp表中,员工姓名(ename)倒数第2个字母是N的,员工的姓名、职位(job)、工资(sal)
-- 分析:dsfN3 Ny --->%N_
SELECT ename,job,sal FROM emp
WHERE ename LIKE '%N_';

-- 查询emp表中,员工姓名(ename)倒数第3个字母是N的,员工的姓名、职位(job)、工资(sal)
-- 分析:dsfN3e Nyu
SELECT ename,job,sal FROM emp
WHERE ename LIKE '%N__';

-- 查询emp表中,员工姓名(ename)由5个字符组成的,员工信息
SELECT * FROM emp
WHERE ename LIKE '_____';



举报

相关推荐

0 条评论