条件查询,模糊查询

14、条件查询

  14.1、语法格式:

    select

      字段1,字段2,字段3.....

    from

      表名

    where 

      条件;

    

  14.2、有哪些条件?

    1)= 等于

      查询薪资等于800的员工姓名和编号?

      select empno,ename from emp where sal = 800;

      查询SMITH的编号和薪资?

      select empno,sal from emp where ename = 'SMITH';

    2)<> 或 != 不等于

      查询薪资不等于800的员工姓名和编号?

      select empno,ename from emp where sal != 800;

      select empno,ename from emp where sal <> 800;

    3)< 小于

      查询薪资小于2000的员工姓名和编号?

      select empno,ename from emp where sal < 2000;    

    4)<= 小于等于

      查询薪资小于等于2000的员工姓名和编号?

      select empno,ename from emp where sal <= 2000;

    5)> 大于

      查询薪资大于3000的员工姓名和编号?

      select empno,ename from emp where sal > 3000;

    6)>= 大于等于    

      查询薪资大于等于3000的员工姓名和编号?

      select empno,ename from emp where sal >= 3000;

    7)between....and.... 两个值之间,等同于 >= and <= 

      查询薪资在2450和3000之间的员工信息?包括2450和3000

      第一种:

      select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

      第二种:

      select empno,ename from emp where sal between  2450 and 3000;

      注意:使用between and必须遵循左小右大

          between and是闭区间,包括两端的值

    8)is null 为 null (is not null 不为空)

      查询哪些员工的津贴/补助为null

      select empno,ename,sal,comm from emp where comm is null;     

 

      查询哪些员工的津贴/补助不为null

      select empno,ename,sal,comm from emp where comm is not null;     

      注意:在数据库中null不能使用等号进行衡量。需要使用 is = null

        数据库中的null代表什么也没余,不是一个值,不能使用等号

    9)and 并且

      查询工作岗位是MANAGER并且工资大于2500的员工信息

      select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;

    10)or 或者

      查询工作岗位是MANAGER或者是SALESMAN的员工?

      select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';

      and和or同时出现,有优先级吗?

      查询工资大于2500,并且部门编号为10或20的员工?

      select ename from emp where sal sal > 2500 and deptno = 10 or deptno = 20;

      以上语句会先执行and 后执行or  表示找出工资大于2500并且部门编号为10的员工,或者20部门所有员工

      所以要加()

      select ename from emp where sal sal > 2500 and (deptno = 10 or deptno = 20);

      注意:and和or同时出现,and优先级高,要or先执行必须先加小括号

    11)in 包含,相当于多个or (not in 不在这个范围中)

      查询工作岗位是MANAGER和SALESMAN的员工

      select empno,ename,job from emp where job = ’MANAGER‘ or job = 'SALESMAN';

      select empno,ename,job from emp where job in('MANAGER','SALESMAN');

      注意:in不是一个区间,后面是具体值

      查询薪资是800和5000的员工信息?

      select ename,sal from emp where sal = 800 or sal = 5000;

      select ename,sal from emp where sal in (800,5000);

      not in 表示不在这几个值当中的数据

      select ename,sal from emp where sal not in (800,5000);

    12)not 可以取非,主要用在is 或in中

    13)like 称为模糊查询,支持%或下划线匹配      

       %匹配任意个字符

      下划线:一个下划线只匹配一个字符

      找出名字汇总含有O的?
      select ename from emp where ename like '%O%';

      找出名字以T结尾?

      select ename from emp where ename like '%T';

      找出名字以K开始?

      select ename from emp where ename like 'K%';

      找出第二个字母是A的?

      select ename from emp where ename like '_A%';

      找出第三个字母是R的?

      select ename from emp where ename like '__R%';

    注意:

      t_student学生表

      name字段

      zhangsan

      lisi

      wangwu

      jack_son

      找出名字中有"_"的?

      select name from t_student where name like '%\_%'; //  \转义字符

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2022-01-20 20:40  doremi429  阅读(190)  评论(0编辑  收藏  举报