MySql之条件查询

#进阶2:条件查询
/*

语法:
select
查询列表(第三步执行)
from
表名(第一步执行)

     where
            筛选条件;(第二步执行)

分类:
一、按条件表达式筛选
简单条件运算符:> < = != <> >= <=
二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
三、模糊查询

        like
        between  and
        in
        is  null

*/
代码实现

#进阶2:条件查询
/*

语法:
      select 
              查询列表(第三步执行)
        from
               表名(第一步执行)
               
         where
                筛选条件;(第二步执行)
                
分类:
      一、按条件表达式筛选
      简单条件运算符:> < = != <>  >= <=
      二、按逻辑表达式筛选
      逻辑运算符:
                &&   ||     !
                and  or     not
                
                &&和and:两个条件都为true,结果为true,反之为false
                ||或or:只要有一个条件为true,结果为true,反之为false
                !或not: 如果连接的条件本身为false,结果为true,反之为false
        三、模糊查询
        
            like
            between  and
            in
            is  null
                

*/

#一、按条件表达式筛选
#案例1: 查询工资》10000的员工信息
SELECT  * FROM  employees  WHERE  salary>20000;

#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id 
FROM  employees WHERE  department_id<>90;
#<>相当于!=
#二、逻辑表达式筛选
#案例1:查询工资:在10000到20000之间的员工名、工资以及奖金
SELECT last_name,salary,commission_pct  FROM employees WHERE salary
BETWEEN 10000 AND 20000;
SELECT last_name,salary,commission_pct  FROM employees 
WHERE    salary>= 10000  AND salary<=20000;

#案例2:查询部门编号不是在90-110之间,或者工资高于150的员工信息
SELECT * FROM  employees WHERE department_id>110 OR department_id<90 
OR salary>=15000;
SELECT * FROM  employees 
WHERE  NOT( department_id>=90 AND department_id<=110)
OR salary>=15000;


#三、模糊查询
/*
like
特点:1.一般和通配符搭配使用
通配符:% 任意多个字符,包含0个字符
_任意单个字符
between and
in
is null not null
*/
#1.like
#案例1:查询员工名中包含字符a的员工信息
SELECT * FROM  employees WHERE last_name LIKE  '%a%';
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name,salary  FROM  employees
 WHERE  last_name LIKE '__e_a%';
SELECT last_name,salary  FROM  employees
 WHERE  last_name LIKE '__n_l%';

#案例3:查询员工名中第二个字符为_的员工名
SELECT  last_name  FROM  employees WHERE  last_name  
LIKE '_\_%';
#通过使用转义字符 $也可以
SELECT  last_name  FROM  employees WHERE  last_name  
LIKE '_a_%'   ESCAPE 'a';


```sql
#2.between and
/*
注意事项:
1.使用between and 可以提高语句的简洁度
2.包含临界值
3.两个临界值不要颠倒位置,两个值的类型必须一致


*/
#案例1:查询员工编号在100到120之间的员工信息
SELECT  * FROM   employees   WHERE
 employee_id  BETWEEN 100 AND 120;
 
 #3.in关键字
 #涵义:判断某字段的值是否属于in列表中的某一项
 #特点:1.使用in提高语句简洁度;2.in后连接的括号内值必须统一或兼容
 #案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
 SELECT  job_id ,last_name  FROM  employees 
  WHERE job_id IN('IT_PROG','AD_VP','AD_PRES');
  #4.is null
  /*
  =或者<>不能用于判断null值
  is null 或者is not null可以判断nul值
  
  */
  #案例1:查询没有奖金的员工名和奖金率
   SELECT  last_name,commission_pct  FROM  employees 
  WHERE salary=NULL;#出不来结果,因为该种写法不对
  
SELECT  last_name,commission_pct  FROM  employees 
  WHERE  commission_pct   IS NULL;  
  
  
  
#安全等于 <=>
SELECT  last_name,commission_pct
FROM  employees
WHERE commission_pct <=> NULL;

#案例2:查询员工工资为12000的员工信息
SELECT * FROM  employees
WHERE  salary <=> 12000;
#is null pk <=>
IS NULL :仅仅可以判断NULL值 可读性高
<=>     :既可以判断NULL值,又可以判断普通的数值 可读性低
#2:查询员工号为176的员工的姓名和部门号和年薪
SELECT last_name,
       department_id,
       salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
 FROM  employees;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值