当前位置: 首页 > news >正文

MySQL数据库05:DQL查询运算符

文章目录

一、运算符简介

二、算术运算符

三、比较运算符

四、逻辑运算符

五、条件查询

五、位运算符(了解)

5.1按位与

5.2按位或

5.3按位异或

5.4按位右移

5.5按位左移

5.6按位取反


一、运算符简介

        数据库中的表结构确立后,表中的数据代表的意义就已经确定。通过MSQL运算符进行运算,就可以获取到表结构以外的另一种数据。例如,学生表中存在一个birth字段,这个字段表示学生的出生年份,而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据。

MySQL支持4种运算符:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

二、算术运算符

算术运算符 说明
+加法运算
-减法运算
*乘法运算
/或DIV除法运算
%或MOD取余运算,换回余数

        对于算术运算符中的加减乘除,如果我们直接进行数字之间的运算,则会直接在终端上打印计算的结果:

-- 1.算术运算符
select 6 + 2;
select 8 - 4;
select 3 * 2;
select 8 / 4;
select 5 % 2;

        接下来我们将算术运算与表结合起来,表数据仍然使用之前的商品数据:

-- 将所有商品的价格 + 10
select pname,price + 10 as new_price from product;
-- 将所有商品的价格上调10%
select pname,price * 1.1 as new_price from product;

        这里就是from从product这个表中查询pname和price + 10(price * 1.1)这2个数据,因为价格不能叫做价格+10(价格*1.1),因此将修改后的价格进行了重命名为new_price。

三、比较运算符

比较运算符说明
=等于
< 和 <=小于和小于等于
> 和 >=大于和大于等于
<=>安全的等于,两个操作码均为NULL时,其所得值为1;而当一个操作吗为NULL时,其所得值为0
<>或!=不等于
IS NULL 或ISNULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST当有两个或者多个参数时,返回最小值
GREATEST当有两个或者多个参数时,返回最大值
BETWEEN AND判断一个值是否落在两个值之间
IN判断一个值是IN列表中的任意一个值
NOT IN判断一个值不是IN列表中的任意一个值
LIKE通配符匹配
PEGEXP正则表达式匹配

四、逻辑运算符

逻辑运算符说明
NOT 或者 !逻辑非
AND 或者 &&逻辑与
OR 或者 ||逻辑或
XOR逻辑异或

五、条件查询

                比价运算符与逻辑运算符通常情况下都是在一起使用的,而运用他俩最多的场景就是条件查询,我们话不多说直接结合表从案例中理解:

-- 查询商品名称为“海尔洗衣机”的商品所有信息
(1)select * from product where pname = "海尔洗衣机";

        (1)查询商品名称为“海尔洗衣机”的商品所有信息查询我们需要先知道从哪个表查起,我们这里只有一个表,因此使用from product,然后执行查询操作使用select关键字,接着查询哪些字段呢?因为是查询所有信息,所有用 * 代表所有字段,即所有列,然后用where关键字加条件,条件为“海尔洗衣机”属于名称pname字段。

-- 查询价格为800的商品
(2)select * from product where price = 800;

        (2)查询价格为800的商品,没说查询哪些列,就默认所有列用*代替,接着是从product中查询所有为from product,执行查询操作select,条件where为价格price为800的商品。

-- 查询价格不为800的所有商品
(3)select * from product where price != 800;select * from product where price <> 800;select * from product where not (price = 800);

        (3)查询不等于800的商品只需要将(2)中的等于改为不等于就行,有3种方式一是使用!=,二是使用<>,这也表示不等于,三是使用not,将等于800的结果取反就行。

-- 查询价格大于等于60的所有商品
(4)select * from product where price >= 60;

        (4)查询价格大于60的商品只需要将条件改为大于等于60即可。

-- 查询价格在200到1000之间的商品
(5)select * from product where price >= 200&&price <= 1000;select * from product where price between 200 and 1000;

        (5)查询价格在200到1000之间的商品,只需要将条件修改为200到1000之间,可以使用区间,也可以使用逻辑与。

-- 查询价格为200或者800的所有商品
(6)select * from product where price in(200,800);select * from product where price = 200 or price = 800;select * from product where price = 200 || price = 800;

        (6)查询价格为200或者800的所有商品只需要修改条件,这里如果可以使用in关键字,in关键字之后更一个列表,只要值包含在in的列表中则表示为真,这里也就是说只要price在200或者800这个列表中,即要么等于200,要么等于800,结果就为真。或者使用逻辑或运算也能达到一样的效果。

-- 查询含有“裤”字的所有商品
(7)select * from product where pname like "%裤";

        (7)查询含有“裤”字的所有商品,查询的条件是名字,这里需要用到模糊查询,%用来匹配任意字符,这里就表示不管前面是什么,只要以“裤”结尾就查询,如果使用“%裤%”就表示不管前面和后面是什么,只要中间出现了“裤”就查询。

-- 查询以“海”开头的所有商品
(8)select * from product where pname like "海%";

        (8)查询以“海”开头的所有商品,只需要改变一下模糊查询条件,“海%”表示的是首字符为海,后面的内容不重要。

-- 查询第二个字为“蔻”的所有商品
(9)select * from product where pname like "_蔻%";

        (9)查询第二个字为“蔻”的所有商品,就需要修改模糊查询条件,怎么确定第二个字,这就要用到下划线_,下划线_代表的是单个字符,所以这里"_蔻%"表示第1个字不重要,第2个字为蔻,之后的不重要。

-- 查询category_id为null的商品
(10)select * from product where category_id is null;

        (10)查询category_id为null的商品,这里就需要将条件改为是null,但是不能直接将category_id等于null,因为我们之前说过null和任意值包括它本身都不相等,所有要用is null。

-- 查询category_id不为null的商品
(11)select * from product where category_id is not null;

        (11)查询category_id不为null的商品,需要将条件改为is not null,也不能直接!=null。

-- 使用least求最小值
(12)select least(10,5,20) as small_number;select least(10,null,20) as small_number;-- 如果求最小值时,有个值为null,则不会进行比较,结果直接为null

        (12)使用least求最小值,就向least中传入几个参数,最后返回其中的最小值as存入small_number变量中。如果求最小值时,有个值为null,则不会进行比较,结果直接为null。

-- 使用greatest求最小值
(13)select greatest(10,5,20) as big_number;select greatest(10,null,20) as big_number;-- 如果求最大值时,有个值为null,则不会进行比较,结果直接为null

        (13)使用greatest求最小值,就向greatest中传入几个参数,最后返回其中的最小值as存入big_number变量中。如果求最大值时,有个值为null,则不会进行比较,结果直接为null。

五、位运算符(了解)

        位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

位运算符说明
|按位或
&按位与
^按位异或
<<按位左移
>>按位右移
~按位取反,反转所以比特位

        举例如下:

select 3&5; -- 按位与
select 3|5; -- 按位或
select 3^5; -- 按位异或
select 3>>1; -- 按位右移
select 3<<1; -- 按位左移
select ~3; -- 按位取反

5.1按位与

select 3&5; -- 按位与

3的二进制为:0011

5的二进制为:0101

按位与:从低到高依次比较,二者都为1时结果为1,否则为0

3: 0011

5: 0101

----------

    0001

所以3和5按位与的结果为0001,翻译为十进制就是1。

5.2按位或

select 3|5; -- 按位或

3的二进制为:0011

5的二进制为:0101

按位或:从低到高依次比较,二者其中之一为1,则整体结果就为1

3: 0011

5: 0101

----------

    0111

所以3和5按位与的结果为0111,翻译为十进制就是7。

5.3按位异或

select 3^5; -- 按位异或

3的二进制为:0011

5的二进制为:0101

按位或:从低到高依次比较,二者相反为1,相同为0

3: 0011

5: 0101

----------

    0110

所以3和5按位与的结果为0110,翻译为十进制就是6。

5.4按位右移

select 3>>1; -- 按位右移

3的二进制为:0011

按位或:符号>>的左边是操作对象,右边是移动长度,按位右移就是将左边对象的二进制位整体向右移动几位,头部补0,尾部溢出的位直接舍掉

3: 0011

    0001 1

所以3按位右移1位的结果为0001,翻译为十进制就是1。

5.5按位左移

select 3<<1; -- 按位左移

3的二进制为:0011

按位或:符号<<的左边是操作对象,右边是移动长度,按位左移就是将左边对象的二进制位整体向左移动几位,头部溢出的位不用舍掉,尾部补0。

3: 0011

  00110

所以3按位左移1位的结果为00110,翻译为十进制就是6。

5.6按位取反

select ~3; -- 按位取反

我们之前不是说3的二进制位为:0011吗,那按位取反不应该是1100等于10吗?这里为什么是这么大的一个数呢?其实这是因为在64位机器上3的二进制是64位格式的:

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011

按位取反:

1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1100

这样取反过后就是一个非常大的数字。

        关于位运算符我们只需要了解一下就行,知道有这些东西,我们在日常查找中用到的不多。

        这次我们了解了查询中运算符的应用,下一节我们将学习排序查询的相关知识,尽情期待!

http://www.dtcms.com/a/512477.html

相关文章:

  • 橙米网站建设网站建设合同制人员招聘
  • 织梦网站图片修改文化墙 北京广告公司
  • VTK——双重深度剥离
  • Linux小课堂: 软件安装与源码编译实战之从 RPM 到源码构建的完整流程
  • 【Python编程】之面向对象
  • Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
  • 【AI增强质量管理体系结构】AI+自动化测试引擎 与Coze
  • 音频共享耳机专利拆解:碰击惯性数据监测与阈值减速识别机制研究
  • 青岛专业网站设计公司网站后台程序怎么做
  • MySQL创建用户、权限分配以及添加、修改权限
  • 【循环神经网络基础】
  • 郑州网站建设与设计校园网站建设年度总结
  • 中国新冠一共死去的人数网站优化和提升网站排名怎么做
  • 太仓手机网站建设阿里云如何做网站
  • 第二篇:按键交互入门:STM32 GPIO输入与消抖处理
  • JSP九大内置对象
  • 如何选择大良网站建设网站建设插件代码大全
  • 卡码网语言基础课(Python) | 17.判断集合成员
  • 温州专业网站建设成都营销推广公司
  • 淘客做网站还是做app佛山seo网站优化
  • 组合数常见的四种计算方法
  • 美容医疗服务小程序:功能集成,解锁一站式变美新体验
  • 网站建设的展望 视频搭建公司内部网站
  • Mac 从零开始配置 VS Code + Claude/Codex AI 协同开发环境教程
  • 鸿蒙flutter 老项目到新项目的遇到迁移坑点
  • 网站开发z亿玛酷1专注响应式官网设计
  • SD comfy:教程3 - 音频生成
  • 百度网盘登录福建键seo排名
  • Xshell效率实战系列一:内置Xftp快速启动——从1分钟到10秒的传输革命
  • 公路建设网站自己编写网站