万叶集🎉 隐约雷鸣,阴霾天空。 🎉🎉 但盼风雨来,能留你在此。 🎉
前言:
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
专栏系列(点击解锁)学习路线(点击解锁)知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。该工具目前的应用场景已不多,文档已删,为了排版好看才留着。
文章目录
该章节我们来学习条件查询,有了条件查询,就可以查找出符合条件的查找记录了。比如说 “10” 和 “20” 部门月薪超过 “2000” 的员工信息,只有条件查询才能帮我们筛选出这种想要的信息记录。
🐳 条件查询
很多时候,用户感兴趣的并不是数据表里的全部记录,而只是数据当中能够满足某一种条件或某几种条件的记录。这一类条件要用
WHERE
子句来实现数据的筛选,语法如下:
SELECT......FROM......WHERE 条件 [AND|OR] 条件 ......;-- 如果 WHERE 子句后面的多个条件必须都满足,使用 AND 关键字,代表 "逻辑与" 关系。-- 如果 WHERE 子句后面的多个条件满足一条即可,则使用 OR 关键字,代表 "逻辑或" 关系。
条件查询示例 SQL 如下:
利用 WHERE 子句 与 AND 关键字,实现条件查询的 “逻辑与” 的结果集展示
SELECT empno, ename, sal FROM t_emp WHERE deptno=10AND sal >=2000;-- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 ,且月薪大于等于 2000 的员工信息
利用 WHERE 子句 与 AND、OR 关键字,实现条件查询的 “逻辑与”、“逻辑或” 的结果集展示
SELECT empno, ename, sal FROM t_emp WHERE(deptno=10OR deptno =20)AND sal >=2000;-- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 或者 20 ,且月薪大于等于 2000 的员工信息
🐳 四类运算符
使用 WHERE 子句的时候,判断条件是否成立会用到四种运算符,如下:
序号运算符1数学运算符2比较运算符3逻辑运算符4按位运算符
🐬 数学运算符
序号表达式意义例子1+加法1+2+32-减法5-2-13乘法554/除法230/155%求模10%3
以上这些和 Python 中的算术运算符是一样的对于我们来说是没有什么难度的。
数学运算符 SQL 语句示例,如下:
查询 10 部门中年收入超过 15000 且工龄超过 20年 的员工的信息。
SELECT empno, ename, sal, hiredate FROM t_emp WHERE deptno =10AND(sal + IFNULL(comm,0))*12>=15000AND DATEDIFF(NOW(),hiredate)/365>=20-- IFNULL(expr1,expr2):IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值-- DATEDIFF(expr1,expr2):DATEDIFF 函数的语法,计算第一个日期与第二个日期的偏差时间差-- NOW():NOW 函数可以获得当前日期
🐬 比较运算符 - 1
序号表达式意义例子1>大于sal > 35002>=大于等于sal >=35003<小于sal <30004<=小于等于sal <=30005=等于deptno = 106!=不等于deptno != 307IN包含deptno IN (10, 20, 30)
这些比较运算符的用法呢与 Python 中的比较运算符用法是一样的,没有什么可解释的。接下来我们就编写一个查询语句,去查询 10、 20、 30 部门里 1985年以前入职的,而且不能是 "SALESMAN" 职位的员工。
SQL例句如下:
SELECT empno, ename, sal, deptno, hiredate FROM t_emp WHERE deptno IN(10,20,30)AND job !='SALESMAN'AND hiredate <'1985-01-01';
🐬 比较运算符 - 2
序号表达式意义例子8IS NULL为空comm IS NULL9IS NOT NULL不为空comm IS NOT NULL10BETWEEN AND范围sal BETWEEN 2000 AND 300011LIKE模糊查询ename like “A”12REGEXP正则表达式ename REGEXP “[a-zA-Z]{4}”
SQL 语句示例如下:(查找 “comm” 字段为 “NULL” ,月薪在 2000 到 3000 之间,且姓名中包含有 “A” 字符 的员工信息)
SELECT ename, sal, comm FROM t_emp WHERE comm ISNULLAND sal BETWEEN2000AND3000AND ename LIKE"%A%";
再给大家演示一个
正则表达式
的SQL 语句案例:(
这里大家需要新增一条
ename
字段为中文的数据【通过图形操作点击 "+" 号即可完成】
)
SELECT ename, sal, comm FROM t_emp WHERE comm ISNOTNULLAND sal BETWEEN2000AND3000AND ename REGEXP"^[\\u4e00-\\u9fa5]{2,4}$";-- REGEXP:正则表达式匹配的是中文的字符集范围,且中文的长度是 2-4
🐬 逻辑运算符
逻辑运算符是用来定义表达式之间的逻辑关系,见下表:
序号表达式意义例子1AND与关系sal > 3500 AND comm IS NULL2OR或关系empno = 7935 OR deptno =203NOT非关系NOT deptno =204XOR异或关系sal > 2000 XOR comm IS NULL
PS:"XOR" 需要注意的地方是,只有当两个 条件都为 TRUE 或者 FLASE 的情况下才会返回 TRUE 或者 FLASE ;当两个条件不一致的情况下则返回 FLASE 。
接下来看一个 “XOR” 异或关系的 SQL 语句示例:
SELECT deptno, ename, sal FROM t_emp WHERENOT deptno IN(10,20)XOR sal >=2000;
🐬 按位运算符(也叫做二进制按位运算)
二进制按位运算的本质是将参与运算的两个操作数,按照对应的二进制数逐位进行逻辑运算;所以做
按位运算
之前,会先将操作数变成二进制数,然后进行位运算,计算的结果再从二进制变为十进制输出。(二进制运算在 MySQL 中运用的特别的少,所以这里简单的介绍一下,按位运算符就好了。)
运算符作用&按位与|按位或^按位异或!取反<<左移>>右移
按位运算SQL参考示例如下:
🐬 WHERE 子句的注意事项
在 WHERE 子句中,条件执行的顺序是从左到右的。所以我们应该把索引条件,或者筛选掉记录条件最多的条件卸载最左侧。
示例如下:
SELECT empno, ename FROM t_emp WHERE ename ="FORD"AND sal >=2000;-- 如果说 ename 字段有索引的话,那么索引字段一定要写在条件的左侧,这样可以提高数据集的查询效率。
SELECT empno, ename FROM t_emp WHERE deptno =10AND sal >=2000;-- 从数据表中我们知道月薪大于等于 2000 的人有很多,但是在 10编号 部门的人员却不多。-- 所以通过先筛选部门可以筛选掉大量的数据,如此也是可以提高数据集的查询效率的。
🐬 各种子句的执行顺序
在 SQL 语句中,各种字句的执行顺序的优先级如下
FROM ---> WHERE ---> SELECT ---> ORDER BY ---> LIMIT
版权归原作者 不渴望力量的哈士奇 所有, 如有侵权,请联系我们删除。