MySQL学习笔记 ------ 条件查询

一、语法

SELECT 查询列表

FROM 表名

WHERE 筛选条件;

二、筛选条件的分类

1、按条件表达式筛选

(1) 简单条件运算符:> < = <> != >= <= <=>安全等于

(2)案例1:查询工资 >12000 的员工信息

cpp 复制代码
SELECT 
    *
FROM
    employees
WHERE
    salary>12000;

(3)案例2:查询部门编号不等于90号的员工名和部门编号

cpp 复制代码
SELECT 
    last_name,
    department_id
FROM
    employees
WHERE
    department_id<>90;

2、按逻辑表达式筛选

(1)逻辑运算符:&& || ! and or not

(2)作用:用于连接条件表达式

&& 和 and:两个条件都为true,结果为true,反之为false;

|| 或 or: 只要有一个条件为true,结果为true,反之为false;

! 或 not: 如果连接的条件本身为false,结果为true,反之为false;

(3)案例1:查询工资z在10000到20000之间的员工名、工资以及奖金

cpp 复制代码
SELECT
    last_name,
    salary,
    commission_pct
FROM
    employees
WHERE
    salary>=10000 AND salary<=20000;

(4)案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

cpp 复制代码
SELECT
    *
FROM
    employees
WHERE
    NOT(department_id>=90 AND  department_id<=110) OR salary>15000;

3、模糊查询

模糊运算符:like、 between and、in、is null、is not null

(1)like 特点及案例

1)特点

① 一般和通配符搭配使用:

② 通配符:

% 任意多个字符,包含0个字符;

_ 任意单个字符;

2)案例

① 案例1:查询员工名中包含字符 a 的员工信息

cpp 复制代码
select 
    *
from
    employees
where
    last_name like '%a%';#abc

② 案例2:查询员工名中第三个字符为 e,第五个字符为 a 的员工名和工资

cpp 复制代码
select
    last_name,
    salary
FROM
    employees
WHERE
    last_name LIKE '__e_a%';

③ 案例3:查询员工名中第二个字符为 _ 的员工名

cpp 复制代码
SELECT
    last_name
FROM
    employees
WHERE
    last_name LIKE '_$_%' ESCAPE '$';

(2)between and 特点及案例

1)特点

① 使用 between and 可以提高语句的简洁度;

② 包含临界值;

③ 两个临界值不要调换顺序;

2)案例:查询员工编号在100到120之间的员工信息

cpp 复制代码
#方式一

SELECT
    *
FROM
    employees
WHERE
    employee_id >= 120 AND employee_id<=100;

#方式二
SELECT
    *
FROM
    employees
WHERE
    employee_id BETWEEN 120 AND 100;

(3)in 特点及案例

含义:判断某字段的值是否属于 in 列表中的某一项

1)特点

① 使用 in 提高语句简洁度;

② in 列表的值类型必须一致或兼容;

③ in 列表中不支持通配符;

2)案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

cpp 复制代码
#方式一
SELECT
    last_name,
    job_id
FROM
    employees
WHERE
    job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';


#方式二

SELECT
    last_name,
    job_id
FROM
    employees
WHERE
    job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

(4)is null 特点及案例

1)特点

① = 或 < > 不能用于判断 null 值

② is null 或 is not null 可以判断 null 值

2)案例:查询没有奖金的员工名和奖金率

cpp 复制代码
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NULL;

(5)is not null 案例

1)案例:查询有奖金的员工名和奖金率

cpp 复制代码
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NOT NULL;

(6)安全等于 <=>

1)案例1:查询没有奖金的员工名和奖金率

cpp 复制代码
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct <=> NULL;

2)案例2:查询工资为12000的员工信息

cpp 复制代码
SELECT
    last_name,
    salary
FROM
    employees
WHERE 
    salary <=> 12000;

(7)is null pk <=>

1)IS NULL :仅仅可以判断NULL值,可读性较高,建议使用

2)<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低

普通类型的数值 NULL值 可读性

is null × √ √

<=> √ √ ×

相关推荐
帧栈22 分钟前
mysql基础(一)快速上手篇
mysql
future14121 小时前
C#学习日记
开发语言·学习·c#
Yo_Becky1 小时前
【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移
人工智能·pytorch·经验分享·笔记·python·程序人生·其他
即将头秃的程序媛1 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
丶意冷1 小时前
mybatisPlus分页方言设置错误问题 mybatisPlus对于Oceanbase的Oracle租户分页识别错误
java·数据库·oracle·oceanbase
fangeqin1 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
DIY机器人工房1 小时前
0.96寸OLED显示屏 江协科技学习笔记(36个知识点)
笔记·科技·stm32·单片机·嵌入式硬件·学习·江协科技
爱奥尼欧2 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
future14123 小时前
每日问题总结
经验分享·笔记
时序数据说3 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb