【MySQL】MySQL基础03 — SQL学习 — DQL — 条件查询(转载请注明出处)

SQL学习 — DQL — 条件查询

DQL语言学习

数据查询语言(Data Query Language),关键字 select

  • 使用DQL前,先输入USE 库名;

2.条件查询
  • 语法:

    select `查询列表`
    from 表名
    where 筛选条件;
  • 分类:

    /*
    分类:
    一、按条件表达式筛选
    条件运算符:> < = !=(<>) >= <=
    二、按逻辑表达式筛选
    作用:用于连接条件表达式
    逻辑运算符:&&-and ||-or !-not
    三、模糊查询
    like
    between and
    in
    is null
    */

2.1 条件表达式筛选
# 一、按条件表达式筛选
# 案例1:查询工资>12000的员工信息
SELECT * FROM employees
WHERE salary > 12000;
# 案例2:查询部门编号不等于90号的员工名和部门编号
SELECT
CONCAT(last_name,first_name) AS "员工名",
department_id
FROM
employees
WHERE
department_id <> 90;

2.2 逻辑表达式筛选
# 二、按逻辑表达式筛选
# 案例1:查询工资在1000020000之间的员工名、工资以及奖金
SELECT
CONCAT(last_name,first_name) AS "员工名",
salary,
commission_pct
FROM
employees
WHERE
salary >= 10000 AND salary <= 20000;
# 案例2:查询部门编号不是在90~110之间,或者工资高于15000的员工信息
SELECT
*
FROM
employees
WHERE
department_id < 90 OR department_id > 110
# not(department_id >= 90 AND department_id <= 110)
OR
salary > 15000;

2.3 模糊查询
# 三、模糊查询总结
/*
like特点:
1. 一般和通配符搭配使用
通配符: % 任意多个字符,包含0个字符
_ 任意单个字符
between and注意事项:
1.使用between and 可以提高语句的简洁度
2.包含临界值
3.两个临界值不能颠倒
in含义:判断某字段的值是否属于in列表中的某一项
in特点:
1.使用in提高语句简洁度
2.in列表中的值类型必须一致或兼容
3.in不支持模糊查询,必须实打实的内容
is null注意事项:
1. != 或 <> 不能用于判断null值
2. is null 或 is not null可以判断null值
*/
# like案例
# like案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees
WHERE last_name LIKE '%a%';
# like案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT
last_name, salary
FROM
employees
WHERE
last_name LIKE '__n_l%';
# like案例3:查询员工名中第二字符为_的员工名
/*
需要用到转义的知识,有两种方式
方式一常规转义字符\:\_
方式二MySQL转义语法:'_$_%' ESCAPE '$' ($可任意个字符)
*/
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%' ESCAPE '$';
# between and案例
# between and案例1:查询员工编号在100120之间的员工信息
SELECT * FROM employees
WHERE employee_id BETWEEN 100 AND 120;
# in案例
# in案例1:查阅员工的工种编号是 IT_PROT、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
last_name, job_id
FROM
employees
WHERE
job_id IN('IT_PROT', 'AD_VP', 'AD_PRES');
# is null案例
# is null案例1:查询没有奖金的员工名和奖金率
SELECT
last_name, commission_pct
FROM
employees
WHERE
commission_pct IS NULL;

2.4 安全等于
# 安全等于 <=>
# <=>案例1:查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
# <=>案例2:查询工资为12000的员工信息
SELECT *
FROM employees
WHERE salary <=> 12000;
# is null pk 安全等于<=>
/*
is null:仅仅可以判断null值,可读性强,建议使用
<=> : 既可以判断Null值,又可以判断普通的数值,可读性差
*/

2.5 条件查询练习
# 将以下内容复制到sql图像化客户端界面进行思考
1. 查询工资大于 12000 的员工姓名和工资
2. 查询员工号为 176 的员工的姓名和部门号,奖金率和年薪
3. 选择工资不在 500012000 的员工的姓名和工资
4. 选择在 2050 号部门工作的员工姓名和部门号
5. 选择公司中没有管理者的员工姓名及 job_id
6. 选择公司中有奖金的员工姓名,工资和奖金级别
7. 选择员工姓名的第三个字母是 a 的员工姓名
8. 选择姓名中有字母 a 和 e 的员工姓名
9. 显示出表 employees 表中 first_name 以 'e'结尾的员工信息
10. 显示出表 employees 部门编号在 80-100 之间 的姓名、职位
11. 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位
12. 查询没有奖金,且工资不小于18000的员工名和工资
13. 查询employees表中,job_id不为'IT'或者工资为12000的员工信息
14. 查询部门departments表中涉及到了哪些位置编号
15. 经典面试题:试问
SELECT * FROM employees;
SELECT * FROM employees
WHERE commission_pct LIKE '%%' AND last_name LIKE '%%';
结果是否一样?并说明原因。
--------------------------------------------------------------
SELECT * FROM employees;
那么和
SELECT * FROM employees
WHERE commission_pct LIKE '%%' OR last_name LIKE '%%';
相比,结果是否一样?

2.6 条件查询练习答案

文件名:02SQL_conditionquery.sql
链接:https://pan.baidu.com/s/11Xqwc9F7W3SZwaRH_8sFhA?pwd=ccjz
提取码:ccjz

posted @   陈景中  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示