1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 〖Python 数据库开发实战 - MySQL篇⑯〗- SQL 语句的条件查询

〖Python 数据库开发实战 - MySQL篇⑯〗- SQL 语句的条件查询

时间:2020-10-25 06:30:19

相关推荐

〖Python 数据库开发实战 - MySQL篇⑯〗- SQL 语句的条件查询

前言

✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌

🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆

📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀

💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

文章目录

🐳 条件查询🐳 四类运算符🐬 数学运算符🐬 比较运算符 - 1🐬 比较运算符 - 2🐬 逻辑运算符🐬 按位运算符(也叫做二进制按位运算)🐬 WHERE 子句的注意事项🐬 各种子句的执行顺序

该章节我们来学习条件查询,有了条件查询,就可以查找出符合条件的查找记录了。比如说 “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=10 AND sal >= 2000 ;-- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 ,且月薪大于等于 2000 的员工信息

利用 WHERE 子句 与 AND、OR 关键字,实现条件查询的 “逻辑与”、“逻辑或” 的结果集展示

SELECT empno, ename, sal FROM t_emp WHERE (deptno=10 OR deptno = 20) AND sal >= 2000 ;-- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 或者 20 ,且月薪大于等于 2000 的员工信息

🐳 四类运算符

使用 WHERE 子句的时候,判断条件是否成立会用到四种运算符,如下:

🐬 数学运算符

以上这些和 Python 中的算术运算符是一样的对于我们来说是没有什么难度的。

数学运算符 SQL 语句示例,如下:

查询 10 部门中年收入超过 15000 且工龄超过 的员工的信息。

SELECT empno, ename, sal, hiredateFROM t_empWHERE deptno = 10 AND (sal + IFNULL(comm,0)) * 12 >=15000AND DATEDIFF(NOW(),hiredate)/365 >= 20-- IFNULL(expr1,expr2):IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值-- DATEDIFF(expr1,expr2):DATEDIFF 函数的语法,计算第一个日期与第二个日期的偏差时间差-- NOW():NOW 函数可以获得当前日期

🐬 比较运算符 - 1

这些比较运算符的用法呢与 Python 中的比较运算符用法是一样的,没有什么可解释的。接下来我们就编写一个查询语句,去查询 10、 20、 30 部门里 1985年以前入职的,而且不能是 "SALESMAN" 职位的员工。

SQL例句如下:

SELECT empno, ename, sal, deptno, hiredateFROM t_empWHERE deptno IN (10, 20, 30) AND job != 'SALESMAN' AND hiredate < '1985-01-01';

🐬 比较运算符 - 2

SQL 语句示例如下:(查找 “comm” 字段为 “NULL” ,月薪在 2000 到 3000 之间,且姓名中包含有 “A” 字符 的员工信息)

SELECT ename, sal, commFROM t_empWHERE comm IS NULLAND sal BETWEEN 2000 AND 3000 AND ename LIKE "%A%";

再给大家演示一个正则表达式的SQL 语句案例:(这里大家需要新增一条ename字段为中文的数据【通过图形操作点击 "+" 号即可完成】)

SELECT ename, sal, commFROM t_empWHERE comm IS NOT NULLAND sal BETWEEN 2000 AND 3000 AND ename REGEXP "^[\\u4e00-\\u9fa5]{2,4}$";-- REGEXP:正则表达式匹配的是中文的字符集范围,且中文的长度是 2-4

🐬 逻辑运算符

逻辑运算符是用来定义表达式之间的逻辑关系,见下表:

PS:"XOR" 需要注意的地方是,只有当两个 条件都为 TRUE 或者 FLASE 的情况下才会返回 TRUE 或者 FLASE ;当两个条件不一致的情况下则返回 FLASE 。

接下来看一个 “XOR” 异或关系的 SQL 语句示例:

SELECT deptno, ename, salFROM t_empWHERE NOT 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 = 10 AND sal >= 2000;-- 从数据表中我们知道月薪大于等于 2000 的人有很多,但是在 10编号 部门的人员却不多。-- 所以通过先筛选部门可以筛选掉大量的数据,如此也是可以提高数据集的查询效率的。

🐬 各种子句的执行顺序

在 SQL 语句中,各种字句的执行顺序的优先级如下

FROM ---> WHERE ---> SELECT ---> ORDER BY ---> LIMIT

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。