Mysql学习笔记(003)- 条件查询

条件查询

  1 #进阶2:条件查询
  2 /*
  3 
  4 语法:
  5     select 
  6         查询列表③
  7     from
  8         表名①
  9     where
 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 /*
 33 select
 34   *
 35 from
 36   employees
 37 where 
 38   salary > 12000;
 39 
 40 
 41 #案例2:查询部门编码不等于90号的员工名和部门编号
 42  select
 43   last_name,
 44   department_id
 45 from
 46   employees
 47 where department_id != 90;
 48 */
 49 #二、按逻辑表达式搜索
 50 #案例1:查询工资在10000和20000之间的员工名、工资以及奖金
 51 SELECT 
 52     last_name,
 53     salary,
 54     commission_pet
 55 FROM
 56     employees
 57 WHERE 
 58     salary>=10000 AND salary<=20000;
 59     
 60 #案例2:查询部门编号不是在90和110之间的员工信息
 61 SELECT 
 62     *
 63 FROM
 64     employees
 65 WHERE
 66     NOT(department_id>=90 AND department_id<=110) OR salary>15000;
 67     
 68 #三、模糊查询
 69  /*
 70 like
 71 特点:
 72 ①一般和通配符发配使用
 73     通配符:
 74     %任意多个字符,包含0个字符
 75     _任意单个字符
 76  77 between and
 78 in
 79 is null|is not null
 80 
 81 */
 82 #1.like
 83 
 84     
 85 #案例1:查询员工名中包含字符a的员工信息
 86  SELECT
 87   *
 88 FROM
 89   employees
 90 WHERE 
 91   last_name LIKE '%a%'; #abc
 92 
 93 #案例2:查询员工名中第三字符为e,第五个字符为a的员工名和工资
 94 SELECT
 95   last_name,salary 
 96 FROM 
 97   employees 
 98 WHERE 
 99   last_name LIKE '_n__l%';
100 
101 #案例3:查询员工名中第二个字符为_的
102 SELECT
103   last_name
104 FROM
105   employees
106 WHERE last_name LIKE '_\_%';
107 #where last_name like '_$_%' escape '$';
108 #2.btween and
109 /*
110 ①使用between and可以提高语句的简洁渡
111 ②包含临界值
112 ③两个临界值(不要调换顺讯)
113 */ 
114 #案例1:查询员工编号在100到120之间的与员工信息
115  SELECT
116   *
117 FROM
118   employees
119 WHERE employees_id >= 100
120   AND employ_id <= 120;
121 #----------------------------------
122  SELECT
123   *
124 FROM
125   employees
126 WHERE employee_id BETWEEN 100
127   AND 120;
128 
129 #3.in
130 /*
131 含义:判断某字段的值是否属于in列表中的某一项
132 特点:
133     ①使用in提高语句简洁度
134     ②in列表的值类型必须一致或者兼容
135     ③in不支持通配符,等价于=
136 */
137 #案例:查询员工的工种编号是IT_PROG、AD_VP、AD_FRES中的一个员工名和工种编号
138  SELECT
139   last_name,
140   job_id
141 FROM
142   employees
143 WHERE job_id = 'IT_PROT' OR job_id = 'AD_VP' OR job_id = 'AD_FRES';
144 #------------------------------------
145 SELECT
146   last_name,
147   job_id
148 FROM
149   employees
150 WHERE job_id = IN('IT_PROT','AD_VP','AD_FRES');
151 
152 #4.is null
153 /*
154 =或<>不能用于判断null值
155 is null或is not null可以判断null值
156 */
157 #案例1:查询没有奖金的员工名和奖金率
158  SELECT
159   last_name,
160   commission_pet
161 FROM
162   employees
163 WHERE commission_pet IS NULL;
164 #--------------------------
165 #案例1:查询没有奖金的员工名和奖金率
166  SELECT
167   last_name,
168   commission_pet
169 FROM
170   employees
171 WHERE commission_pet IS  NOT NULL;
172 #--------以下为错误----------
173  SELECT
174   last_name,
175   commission_pet
176 FROM
177   employees
178 WHERE 
179   salary IS 12000;
180   
181  #安全等于 <=>
182  #案例1:查询没有奖金的员工名和奖金率
183  SELECT
184   last_name,
185   commission_pet
186 FROM
187   employees
188 WHERE commission_pet <=> NULL;
189 
190 #案例2:查询工资为12000的员工信息
191  SELECT
192   last_name,
193   commission_pet
194 FROM
195   employees
196 WHERE salary <=> 12000;
197 
198 
199 #is null pk <=>
200 IS NULL:仅仅可以判断null值,可读性较高,建议使用
201 <=>    :既可以判断NULL值,又可以判断普通的数值,可读性较低

 

小结

posted @ 2019-12-25 11:07  klandehu  阅读(283)  评论(0)    收藏  举报