zoukankan      html  css  js  c++  java
  • 条件查询

    #条件查询
    /*
    语法:
       select 查询列表
       from 表名
       where 筛选条件;
       
       
    分类:
         一。按条件表达式筛选
             条件运算符:> < = != <>  >= <=
         二。按逻辑表达式筛选
         逻辑运算符:用于连接条件表达式
             逻辑运算符: && || ! 
                          and or not 
         三。模糊查询
              like
              between and
              in
              is null
              
    */
    #一 条件表达式
       #1.查询工资>12000的员工信息
         SELECT * FROM employees WHERE salary>12000;
       #2. 查询部门编号不等于90号的员工名和部门编号
        SELECT `first_name`,`department_id` 
        FROM `employees`
        WHERE
             `department_id`<>90# !=<> 一样
    
    
    #二 逻辑表达式
       #1 工资在10000~20000的员工名、工资和奖金
           SELECT `first_name`,`salary`,`commission_pct`
           FROM `employees`
           WHERE `salary`>10000 AND `salary`<20000
           
       #2 查询部门编号不是在90~110,或者工资高于15000的员工信息
         SELECT * FROM  `employees`
         WHERE
                  !(`department_id`>=90 AND `department_id`<=110) || `salary`>15000
         
    #三 模糊查询
    /*
    like:
    特点:(1) 一般和通配符搭配使用
    通配符
    % 任意多个字符
    _ 任意单个字符
    between and
    in
    is null|is 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%' ;
    
    #3 查询员工名中第二个字符为_的员工名
      SELECT  last_name  FROM `employees`
      WHERE last_name LIKE '_\_%'#第二个字符前必须加''
      
     SELECT  last_name  FROM `employees`
      WHERE last_name LIKE '_*_%'  ESCAPE '*'#escape指定的字符后面紧挨着的第一个字符被看作是普通字符而非通配符。功能同上,这里的‘*’也可以是其它的字符
      
      
      
    #2 between and
    /*
    (1)提高语句简洁度
    (2)包含临界值
    (3)2个临界值不要调换
    */
    #案例1: 查询员工编号在100~120间的员工信息
    SELECT * FROM `employees`
    WHERE `employee_id` >=100  AND `employee_id`<=120;
    
    
    SELECT * FROM `employees`
    WHERE `employee_id` BETWEEN 100 AND 120;
    
    #3 in
    /*
    in 列表的值类型必须一致或兼容
    列表内容不可用通配符
    */
    #查询员工的工种编号属于IT_PROG AD_VP AD_PRES 员工名和工种编号
    SELECT 
          last_name,`job_id`
          FROM `employees`
    WHERE `job_id` IN ('IT_PROG', 'AD_VP', 'AD_PRES');
    
    #4   is null
    /*
    =或<>不能用于判断null值
    is null或者 is not null 可以判断null值
    */
    #查询没有奖金的员工名和奖金率
    SELECT `last_name`,`commission_pct`
    FROM `employees`
    WHERE `commission_pct` IS NULL #必须用is,不能用=
    SELECT `last_name`,`commission_pct`
    FROM `employees`
    WHERE `commission_pct` IS NOT NULL
    
    #安全等于  <=>
    #1查询没有奖金的员工名和奖金率
    SELECT `last_name`,`commission_pct`
    FROM `employees`
    WHERE `commission_pct` <=> NULL #null
    #2 查询工资为12000的员工信息
    SELECT * FROM employees WHERE salary<=>12000;#常量值
    /*
    总结
    is null :仅仅可以判断NULL,可读性高,建议使用
    <=> : 既可以判断null值,又可以判断普通的数值,可读性低
    */
    #查询员工号为176的员工姓名和部门号和年薪    
    SELECT `last_name`,`department_id`,`salary`*12*(1+IFNULL(`commission_pct`,0)) 年薪
    #这里要考虑(1+IFNULL(`commission_pct`,0))
    FROM `employees`
    WHERE `employee_id` <=> 176
    #测试题
    #1查询没有奖金,且工资小于18000的salary,last_name
    SELECT salary,last_name
    FROM `employees`
    WHERE `commission_pct` IS NULL AND `salary`<18000;
    #2 查询job_id 不为`job_id`‘IT’  或者工资为12000的员工信息
    SELECT * FROM `employees`
    WHERE `job_id` <>'IT' OR salary=12000;
    #3 查询`departments` 表的结构
    DESC `departments`;
    #4 查询`departments`表涉及哪些位置编号
    SELECT DISTINCT `location_id` FROM `departments`;
    #5
    SELECT * FROM `employees`;
    SELECT * FROM `employees`
    WHERE `commission_pct` LIKE '%%' AND  last_name LIKE '%%';
    
    SELECT * FROM `employees`
    WHERE `commission_pct` LIKE '%%' OR  last_name LIKE '%%';
    #当where 语句为假时,该条数据不被选择。and:如`commission_pct` :null 此时为假,那么这条数据无法被选择。
    #但是or 两者都为假where语句才为假,同时`last_name`不可能为null。因此where语句不会为假,也就是所有数据都会被选择
    #因此 用or 时的功能和SELECT * FROM `employees`;一样。
  • 相关阅读:
    用Eclipse做J2Me开发的前期配置
    cglib和asm相关的文章
    bcp命令详解
    Oracle/PLSQL AFTER DELETE Trigger
    Mybatis(九)分页插件PageHelper使用
    Mybatis(八)逆向工程
    Mybatis(四)关联映射
    Mybatis(三)返回值四.注解配置
    Mybatis(二)参数(Parameters)传递
    Mybatis(一)实现单表的增删改查
  • 原文地址:https://www.cnblogs.com/tingtin/p/13274836.html
Copyright © 2011-2022 走看看