文章目录
进阶二:条件查询(加上where)
1、语法:
select 查询列表
from 表名
where 筛选条件;(java中的if)
2、执行顺序:
1.先是执行from语句,先找表
2.where字句(进行where筛选)
3.select字句
sql不等于符号是“<>”,大于,小于即是不等于。
使用sql特有的查询 指定一个转义字符使用关键字 escape ,如下就指定KaTeX parse error: Expected group after '_' at position 57: …st_name` LIKE '_̲_%’ ESCAPE ‘$’;
3、三种查询条件
1.按条件表达式筛选
关系运算符:>,<,<=,>=,=,<>(不等于,但是!=也行,但是不建议)
2.按逻辑运算符:and,or,not
&&,||,!(都支持但是不建议)
3.模糊查询:
like:
in:
between and
is null
一、按关系表达式筛选(注意:sql不等号为<>)
#案例一:查询部门编号不是100的员工信息
SELECT *
FROM
employees
WHERE department_id
<> 100 ;
#案例2:查询工资小于15000的姓名,工资
SELECT CONCAT(first_name
,last_name
) AS “姓 名”,salary
FROM employees
WHERE salary
<15000;
二、按照逻辑表达式筛选
#案例1:查询部门编号不是50-100之间员工姓名,部门编号,邮箱
SELECT last_name
,department_id
,email
FROM employees
WHERE NOT(department_id
>=50 AND department_id
<=100);
#案例2:查询奖金率>0.03或者员工编号在60-110之间的员工信息
SELECT *
FROM employees
WHERE commission_pct
>0.03 OR (employee_id
>=60 AND employee_id
<=110);
三、模糊查询(属于部分匹配)
1.like,常和通配符搭配使用
/*一般和通配符搭配使用,对字符型数据进行部分匹配查询
常见的通配符
_表示任意一个单个字符
%任意多个字符(0-多个)
*/
#案例1:查询姓名中包含字符a的员工信息。
#’%a%’:意思是:a前面有任意个字符,a后面也有任意个字符
SELECT *
FROM employees
WHERE last_name
LIKE ‘%a%’;
#案例2:查询姓名最后一个字符为e的员工信息。
SELECT *
FROM employees
WHERE last_name
LIKE ‘%e’;
#案例3:查询姓名第一个字符为e的员工信息。
SELECT *
FROM employees
WHERE last_name
LIKE ‘e%’;
#案例4:查询姓名第三个字符为x的员工信息。
SELECT *
FROM employees
WHERE last_name
LIKE ‘__x%’;
#案例5:查询姓名第二个字符为_的员工信息。
#存在特殊字符查询时使用转义_(java写法,不建议)
SELECT *
FROM employees
WHERE last_name
LIKE ‘_%’;
#使用sql特有的查询 指定一个转义字符使用关键字 escape
SELECT *
FROM employees
WHERE last_name
LIKE 'KaTeX parse error: Expected group after '_' at position 1: _̲%' ESCAPE '’;
2.in
/*
功能:查询某个字段的值是否属于指定列表之内
a in(常量值1,常量值2,常量值3…)
意思是a只要满足其中一个常量值就可以了
in/not in
a not in(常量值1,常量值2,常量值3…)
*/
#案例一:查询部门编号是30/50/90的员工名,部门编号
SELECT last_name
,department_id
FROM employees
WHERE department_id
IN(30,50,90);
#案例二:查询工种编号不是ST_CLERK或IT_PROG的员工信息
#非数值型数据需要使用单引号围起来
SELECT *
FROM employees
WHERE job_id
NOT IN(‘ST_CLERK’,‘IT_PROG’);
3.between and关键字
/*
功能:判断某个字段的值是否介于xx之间
between and /not between and
*/
#案例一:查询部门编号是30-90之间的部门编号,员工姓名
#数字顺序不能颠倒
SELECT department_id
,last_name
FROM employees
WHERE department_id
BETWEEN 30 AND 50;
#案例二:查询查询年薪不是在10000-20000之间,员工姓名,工资
#查询年薪字段salary
12(1+IFNULL(commission_pct,0))(我们自己组合出这个字段)
SELECT last_name
,salary
,salary
12(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary
12(1+IFNULL(commission_pct,0)) NOT BETWEEN 100000 AND 200000;
4.is null /is not null
#案例1:查询没有奖金的员工信息
=不能判断null的值
SELECT *
FROM employees
WHERE commission_pct
IS NULL;
#案例2:查询有奖金的员工信息
SELECT
FROM
employees
WHERE commission_pct
IS NOT NULL ;
5.注意:=不能判断null的值,只能判断数值
=不能判断null的值,只能判断数值
is只能判断null值
<=> 安全等于 既能判断普通内容,又能判断null值 安全等于
SELECT *
FROM employees
WHERE commission_pct
<=> NULL;
常见的通配符
1、_表示任意一个单个字符
2、%任意多个字符(0-多个)