码迷,mamicode.com
首页 > 数据库 > 详细

lyt经典版MySQL基础——进阶2:条件查询

时间:2020-07-24 21:12:11      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:案例   _id   单个字符   pre   mis   als   顺序   条件表达式   rtm   

  1 #进阶2:条件查询
  2 /*
  3 语法:
  4     select
  5         查询列表
  6     from
  7         表名
  8     where
  9         筛选条件;
 10         
 11 分类:
 12     一、按条件表达式筛选
 13     条件运算符:> < = != <> >= <=
 14     
 15     二、按逻辑表达式筛选
 16     逻辑运算符:
 17     作用:用于连接条件表达式
 18         && || !
 19         and or not
 20     &&和and:两个条件都为true,结果为true,反之为false
 21     ||和or:只要有一个条件为true,结果为true,反之为false
 22     !和not:如果连接的条件本身为false,结果为true,反之为false
 23         
 24     三、模糊查询
 25         like
 26         between and
 27         in 
 28         is null
 29 */
 30 
 31 #案例1:查询工资>12000的员工信息
 32 SELECT
 33     *
 34 FROM
 35     employees
 36 WHERE 
 37     salary>12000;
 38     
 39 #案例2:查询部门编号不等于90号的员工名和部门编号
 40 SELECT 
 41     last_name,department_id
 42 FROM 
 43     employees
 44 WHERE 
 45     department_id != 90;
 46     
 47 #二、按逻辑表达式筛选
 48 #案例1:查询工资在10000到20000之间的员工名、工资以及奖金
 49 SELECT 
 50     last_name,salary,commission_pct 
 51 FROM 
 52     employees
 53 WHERE salary BETWEEN 10000 AND 20000; 
 54 #案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
 55 SELECT * FROM employees
 56 WHERE department_id <90 OR department_id>110 OR salary>15000;
 57 
 58 #三、模糊查询
 59 /*
 60 like
 61 特点:
 62 (1)一般和通配符搭配使用
 63     通配符:
 64     % 任意多个字符,包含0个字符
 65     _ 任意单个字符
 66     
 67 between and
 68 in
 69 is null | is not null
 70 */
 71 #1.like
 72 #案例1:查询员工名中包含字符a的员工信息
 73 SELECT * FROM employees 
 74 WHERE last_name LIKE %a%;
 75 #案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资
 76 SELECT last_name,salary FROM employees
 77 WHERE last_name LIKE __n_l%;
 78 #案例3:查询员工名中第二个字符为_的员工名
 79 SELECT last_name FROM employees
 80 WHERE last_name LIKE _\_%;
 81 
 82 SELECT last_name FROM employees
 83 WHERE last_name LIKE _a_% ESCAPE a;  -- ESCAPE转义
 84 
 85 #2.between and
 86 /*
 87 (1)使用between and可以提高语句的简洁度
 88 (2)包含两个临界值
 89 (3)两个临界值不能调换顺序
 90 */
 91 #案例1:查询员工编号在100到120之间的员工信息
 92 SELECT * FROM employees 
 93 WHERE employee_id >=100 AND employee_id<=120;
 94 
 95 SELECT * FROM employees 
 96 WHERE employee_id BETWEEN 100 AND 120;
 97 
 98 #3.in
 99 /*
100 含义:判断某字段的值是否属于in列表中的某一项
101 特点:
102     (1)使用in提高语句简洁度
103     (2)
104 */
105 #案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
106 SELECT last_name,employee_id FROM employees
107 WHERE job_id=IT_PROG OR job_id=AD_VP OR job_id=AD_PRES;
108 
109 SELECT last_name,employee_id FROM employees
110 WHERE job_id IN(IT_PROG,AD_VP,AD_PRES);
111 
112 #4.is null
113 /*
114 =或<>不能用于判断null值
115 is null或is not null可以判断null值
116 */
117 #案例1:查询没有奖金的员工名和奖金率
118 SELECT last_name,commission_pct FROM employees 
119 WHERE commission_pct IS NULL;
120 #案例2:查询有奖金的员工名和奖金率
121 SELECT last_name,commission_pct FROM employees 
122 WHERE commission_pct IS NOT NULL;
123 
124 #5.安全等于 <=>
125 #案例1:查询没有奖金的员工名和奖金率
126 SELECT last_name,commission_pct FROM employees 
127 WHERE commission_pct <=> NULL;
128 #案例2:查询工资为12000的员工信息
129 SELECT * FROM employees 
130 WHERE salary<=>12000;
131 
132 #is null pk <=>
133 /*
134 IS NULL:仅仅可以判断NULL值
135 <=>:既可以判断NULL值,又可以判断普通的数值,可读性较低
136 */
137 
138 #练习:
139 #2.查询员工号为176的员工的姓名和部门号和年薪
140 SELECT last_name,department_id,
141 salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
142 FROM employees;

 

lyt经典版MySQL基础——进阶2:条件查询

标签:案例   _id   单个字符   pre   mis   als   顺序   条件表达式   rtm   

原文地址:https://www.cnblogs.com/yanwuliu/p/13373279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!