条件查询
语法:
select 查询条件 (III)
from 表名 (I)
where 筛选条件 (II)
分类:
1、按条件表达式筛选
条件运算符: <、>、=、<>(不等于)、!=、<=、>=。
2、按逻辑表达式筛选
逻辑表达式: &&、||、!、and、or、not。
&&和and:全真为真,一假全假
||和or:全假为假,一真全真
!和not:取反
3、模糊查询(复杂的条件查询)
like、between and、in、is (not) null。
#like:一般和通配符(%、_)搭配使用。
与 % 搭配:任意多个字符,包含0个字符
与 _ 搭配:任意单个字符
between and:包含临界值,临界值不能颠倒。
in:判断某字段的值是否属于in列表中发某一项。in列表的值类型必须一致或兼容。
is(not)null:!=或<>不能判断null值,is null和is not null可以判断null值,不可以判断数值。
#安全等于 <=>:既可以判断null值又可以判断普通数值。
例如:
查询部门编号不等于90号的员工名和部门编号
SELECT last_name,depaerment_id FROM employees WHERE department_id <> 90;(建议使用)
或者
SELECT last_name,depaerment_id FROM employees WHERE department_id != 90;
查询部门编号不是在90到110之间或者工资高于15000的员工信息
SELECT * FROM employees WHERE NOT(department_id>=90 AND department_id<=110) OR salary>15000;
或者
SELECT * FROM employees WHERE NOT(department_id BETWEEN 90 AND 110) OR salary>15000;
或者
SELECT * FROM employees WHERE department_id<90 OR department_id>110 OR salary>15000;
查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT last_name, salary FROM employees WHERE last_name LIKE '__n_l%';
查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_%'; (\:转义字符)
或者
SELECT last_name FROM employees WHERE last_name LIKE '$_%' ESCAPE $; (escape $:将$变成 转义字符,$可以写成任意字符)
查询员工的工种编号是IT_PROG、AD_VP中的一个员工名和工种编号
SELECT last_name,job_id FROM employees WHERE job_id='IT_PROG' OR job_id='AD_AP';
或者
SELECT last_name,job_id FROM employees WHERE job_id IN ('IT_PROG' , 'AD_AP');
查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL;
或者
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL;
查询员工号为176的员工姓名,部门编号和年薪(commission奖金率可能为null值,需要用ifnull将null值转换成0)
SELECT last_name,department,salary12(1+ IFNULL (commission_pct,0)) AS 年薪 FROM employees WHERE job_id<=>176;