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值,又可以判断普通的数值,可读性较低
小结

浙公网安备 33010602011771号