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

Posted 学而时习之,不亦说乎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lyt经典版MySQL基础——进阶2:条件查询相关的知识,希望对你有一定的参考价值。

  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:条件查询的主要内容,如果未能解决你的问题,请参考以下文章

lyt经典版MySQL基础——进阶6:连接查询-sql99语法-内连接外连接交叉连接

lyt经典版MySQL基础——进阶1:基础查询

lyt经典版MySQL基础——进阶2:常见函数-分组函数

lyt经典版MySQL基础——流程控制结构

lyt经典版MySQL基础——变量

lyt经典版MySQL基础——存储过程