select条件查询的格式如下:
SELECT 查询列表 FROM 表名 WHERE 筛选条件;根据筛选条件可以分为以下几类:
按照条件按表达式进行筛选
常用条件运算符如下:> 、<、=、!=、<>、<=、>=
按照逻辑表达式进行筛选
逻辑运算符的主要作用:用于连接条件表达式
& 、 || 、! 、and、or、not
模糊查询
like、between and 、in、is null
①:%:代表任意多个字符
②:_:代表任意单个字符
举个栗子:
/**查询员工工资大于10000的员工信息**/ SELECT * FROM employees WHERE salary > 1000; /**查询部门标号不等于90号的员工名和部门编号 **/ SELECT name,department_id FROM employees WHERE department_id <> 90; /**查询工资在1000-2000之间的员工名,工资 **/ SELECT name,salary FROM employees WHERE salary >= 1000 and salary <=2000; /**查询部门编号不再20-40之间或者工资高于15000员工信息 **/ SELECT * FROM employees WHERE department_id < 20like:
/**查询员工名中包含a的员工信息**/ SELECT * FROM employeess WHERE last_name like '%a%'; /**查询员工名中第三个字符为n,第五个字符为m的员工信息 **/ SELECT * FROM employees WHERE last_name like '__n_m%'; /**查询员工名中第二个字符_的员工信息**/ /**方法一:使用转义字符"\"**/ SELECT * FROM employees WHERE last_name like '_\_%'; /**方法二:自定义转义字符**/ SELECT * FROM employees WHERE last_name like '_$_%' ESCAPE '$';between and 、in
/**查询员工工资在1000-2000之间的员工信息(包含临界值)**/ SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000; /**查询员工工种编号为IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号**/ /**方法一:**/ SELECT job_id,last_name FROM employees WHERE job_id ='IT_PROG' OR job_id ='AD_VP' OR job_id ='AD_PRES' ; /**方法二:**/ SELECT job_id,last_name FROM employeess WHERE job_id in ('IT_PROG','AD_VP','AD_PRES');in关键字的特点:
判断某字段的值是否属于in列表项中的某一项in列表中的值都是统一类型或者相互兼容(即可以相互转换)is null
/**查询员工没有奖金的员工名和奖金率**/ SELECT last_name,commission_pct FROM employeess WHERE commission_pct IS NULL; /**查询员工有奖金的员工名和奖金率**/ SELECT last_name,commission_pct FROM employeess WHERE commission_pct IS NOT NULL;安全等于 <=>
/**查询员工工资等于10000的员工信息**/ SELECT * FROM employees WHERE salary <=> 1000; /**查询员工没有奖金的员工名和奖金率**/ SELECT last_name,commission_pct FROM employeess WHERE commission_pct <=> NULL; 正常数值的判断null判断可读性安全等于 <=>可以判断可以判断低is null不可以判断可以判断高 /**查询员工号为124的员工名和部门号以及年薪**/ SELECT last_name, department_id, slary*12(1+IFNULL(comission_pct,0)) AS 年薪 FROM employees WHERE department_id = 124; /**查询employeess表中都涉及到了哪些部门编号**/ SELECT DISTINCT department_id FROM employees ;思考题:
/**语句1:**/ SELECT * FROM employees; /**语句2:**/ SELECT * FROM emplooyees WHERE comission_pct LIKE '%%' AND last_name LIKE'%%'; /**语句3:**/ SELECT * FROM emplooyees WHERE comission_pct LIKE '%%' OR last_name LIKE'%%';问题1:语句1和语句2查询结果是否相同?
> 不相同,如果comission_id为null(即没有没有任何字符)是查询不出来的; > 当comission_id不可能为null时,两者的查询结果是相同的问题2:语句1和语句3查询结果是否相同
> 相同,因为last_name不可能为null值,此时即使comission_id为null也会被查询出来。