返回顶部
首页 > 资讯 > 数据库 >MySQL之where使用详解
  • 695
分享到

MySQL之where使用详解

2024-04-02 19:04:59 695人浏览 独家记忆
摘要

目录1、简介2、正文2.1 where子句位置2.2 操作符2.3 空值null1、简介 当我们需要获取数据库表数据的特定子集时,可以使用where子句指定搜索

1、简介

当我们需要获取数据库表数据的特定子集时,可以使用where子句指定搜索条件进行过滤。where子句的使用场景非常丰富,它是Mysql语句中需要重点掌握的一个知识点。where实现的所有功能都可以在mysql之外实现,但是直接在Mysql中过滤查询速度更快,也能节省网络传输开销。

2、正文

首先准备一张User表,DDL和表数据如下所示,可以直接复制使用。


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
 
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
  `age` int(11) NOT NULL COMMENT '年龄',
  `sex` smallint(6) NOT NULL COMMENT '性别',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '李子捌', 18, 1);
INSERT INTO `user` VALUES (2, '张三', 22, 1);
INSERT INTO `user` VALUES (3, '李四', 38, 1);
INSERT INTO `user` VALUES (4, '王五', 25, 1);
INSERT INTO `user` VALUES (5, '六麻子', 13, 0);
INSERT INTO `user` VALUES (6, '田七', 37, 1);
INSERT INTO `user` VALUES (7, '谢礼', 18, 1);
 
SET FOREIGN_KEY_CHECKS = 1;

数据的初始顺序如下所示:


mysql> select * from user;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
|  7 | 谢礼   |  18 |   1 |
+----+--------+-----+-----+
7 rows in set (0.00 sec)

2.1 where子句位置

where子句位于from之后,比如:


mysql> select * from user where age=18;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  7 | 谢礼   |  18 |   1 |
|  8 | 李子柒 |  18 |   1 |
+----+--------+-----+-----+
3 rows in set (0.00 sec)

如果使用order by,where子句位于order by之前,比如:


mysql> select * from user where age = 18 order by name;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  8 | 李子柒 |  18 |   1 |
|  7 | 谢礼   |  18 |   1 |
+----+--------+-----+-----+
3 rows in set (0.00 sec)

2.2 操作符

where子句支持8个操作符,它们分别如下所示:

操作符 操作符说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN AND 两个值之间的区间 比如 BETWEEN 1 AND 100

接下来使用表中操作符一个个的进行where子查询。

2.2.1 操作符 =

操作符=可以用于查询完全匹配的数据,注意MySQL默认不区分英文大小写.

需求:
查询name等于李子捌的数据
语句:


select * from user where name = '李子捌';

结果:

+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
+----+--------+-----+-----+
1 row in set (0.00 sec)

操作符=如果存在多条匹配数据,那么符合where字句条件的数据均会返回,如果需要指定排序方式,可以结合order by对数据进行排序。

2.2.2 操作符 <> 和 !=

这两个操作符实现的效果相同,均是匹配不相等的数据。

需求:
查询name不等于李子捌的数据
语句:


select * from user where name <> '李子捌';
select * from user where name != '李子捌';

结果:

+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
|  7 | 谢礼   |  18 |   1 |
|  8 | 李子柒 |  18 |   1 |
+----+--------+-----+-----+
7 rows in set (0.00 sec)

2.2.3 操作符<= 、 <、>=、>
这四个操作符用于数值类型的列数据比较,但是如果作用于文本字段,MySQL也能执行只是返回的结果可能并不是你预期的数据(理论上没人会这么玩,但确实不报错!)

需求:
查询年龄小于等于20的所有用户
语句:


select * from user where age <= 20;

结果:

+----+--------+-----+-----+

| id | name   | age | sex |

+----+--------+-----+-----+

|  1 | 李子捌 |  18 |   1 |

|  5 | 六麻子 |  13 |   0 |

|  7 | 谢礼   |  18 |   1 |

|  8 | 李子柒 |  18 |   1 |

+----+--------+-----+-----+

4 rows in set (0.00 sec)

2.2.4 BETWEEN AND
BETWEEN AND 用于查询两个数值范围之间的值,这个范围是两个闭区间,因此包含起始值和结束值。比如BETWEEN 1 AND 100,包含1和100的数据。

需求:
查询年龄大于等于20小于等于50的用户
语句:


select * from user where age between 20 and 50;

+----+------+-----+-----+

| id | name | age | sex |

+----+------+-----+-----+

|  2 | 张三 |  22 |   1 |

|  3 | 李四 |  38 |   1 |

|  4 | 王五 |  25 |   1 |

|  6 | 田七 |  37 |   1 |

+----+------+-----+-----+

4 rows in set (0.00 sec)

2.3 空值null

空值null指的是不包含数据,它可以在建表的时候指定其中的列是否可以包含空值。需要注意null和数据值类型的0,字符类型的空格不一样,空值null指的是没有值。
关于空值null的查询,MySQL提供了专门的where子句is null。

需求:
查询name为空值的数据
语句:


select * from user where name is null;

结果:

Empty set (0.00 sec)

因为user表中不存在name值为空值的数据,所以没有数据返回。如果我们需要查询name列不为空的数据,该怎么查询呢?

这个时候我们可以使用is not null


mysql> select * from user where name is not null;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
|  7 | 谢礼   |  18 |   1 |
|  8 | 李子柒 |  18 |   1 |
+----+--------+-----+-----+

到此这篇关于MySQL之where使用详解的文章就介绍到这了,更多相关MySQL where使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL之where使用详解

本文链接: https://lsjlt.com/news/157104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL之where使用详解
    目录1、简介2、正文2.1 where子句位置2.2 操作符2.3 空值null1、简介 当我们需要获取数据库表数据的特定子集时,可以使用where子句指定搜索...
    99+
    2024-04-02
  • MYSQL之on和where的区别解读
    目录on和where的区别区别on & where条件区别和执行顺序一、案例二、on、where、having 区别以及顺序三、优化分析总结on和where的区别...
    99+
    2023-03-20
  • tp5中where与whereor如何同时使用
    小编给大家分享一下tp5中where与whereor如何同时使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!tp5中的where与...
    99+
    2023-06-14
  • mysql中where的用法
    where 子句用于过滤 mysql 数据结果,通过指定条件选择满足特定标准的行。条件可以包含比较运算符、逻辑运算符、通配符、常量和变量。示例:- 根据年龄过滤:selec&#...
    99+
    2024-04-29
    mysql
  • mysql中where的作用
    where 子句用于根据条件过滤 mysql 查询结果,将满足条件的行包含在结果中。它通过指定表达式进行条件筛选,例如值比较、范围比较或逻辑运算,支持复杂查询和特定数据的获取。...
    99+
    2024-04-29
    mysql
  • MySQL之where条件数据筛选
    语法: -- select * from 表名 where 条件; 测试数据: -- 建表语句 create table `student` ( `sid` int(11) primary key auto_incr...
    99+
    2022-01-01
    MySQL之where条件数据筛选
  • 详解mysql 使用left join添加where条件的问题分析
    当前需求: 有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。 最开始的错误写法一: SELEC&#...
    99+
    2022-05-29
    mysql left join where
  • Mysql中where与on的区别及何时使用详析
    之前在写连表查询的时候,老是分不清楚where和on的区别,导致有时写的SQL会出现一点小的问题,这里专门写篇文章做下记录,如果你也分不清,那么请参考 二者的区别及什么时候...
    99+
    2024-04-02
  • MyBatis中不建议使用where 1=1原因详解
    目录前言错误的改造方式正确的改进方式不传任何参数的请求传递 1 个参数的请求传递 2 个参数的请求用法解析总结前言 最近接手了一个老项目,“愉悦的心情”自然无...
    99+
    2024-04-02
  • 关于Mysql中ON与Where区别问题详解
    今天工作的时候编写了一个SQL,大家一起来看一下 SELECT * FROM user user LEFT JOIN user_message msg ON user.i...
    99+
    2024-04-02
  • MySQL having关键字详解、与where的区别
    1、having关键字概览 1.1、作用 对查询的数据进行筛选 1.2、having关键字产生的原因 使用where对查询的数据进行筛选时,where子句中无法使用聚合函数,所以引出havin ...
    99+
    2023-10-25
    mysql 数据库 java
  • Mysql中where与having的区别实例详解
    以一道题来做引子 牛客,SQL30 计算总和 OrderItems表代表订单信息,包括字段:订单号order_num和item_price商品售出价格、quantity商品数量。 order_numitem_priceq...
    99+
    2023-01-09
    mysql where和having的区别 数据库中where和having的区别 sql语句where和having的区别
  • mysql中的where关键字如何使用
    这篇文章给大家分享的是有关mysql中的where关键字如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在mysql中,wher&#...
    99+
    2024-04-02
  • MySQL中where 1=1方法怎么使用
    这篇文章主要介绍了MySQL中where 1=1方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中where 1=1方法怎么使用文章都会有所收获,下面...
    99+
    2023-06-30
  • MYSQL之on和where的区别是什么
    这篇“MYSQL之on和where的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MYSQL之on和wh...
    99+
    2023-07-05
  • Python where函数怎么使用
    这篇“Python where函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python&n...
    99+
    2023-07-02
  • MySQL中where 1=1方法的使用及改进
    目录背景where 1=1的作用where 1<>1where 1=1的性能问题where 1=1的改进小结背景 刚入行的同学,看...
    99+
    2024-04-02
  • Unknown column 'column_name' in 'where clause' - 如何解决MySQL报错:where子句中的未知列
    MySQL是一种广泛使用的关系型数据库管理系统,它支持使用结构化查询语言(SQL)进行数据的存储、管理和检索。然而,在使用MySQL进行查询时,有时我们会遇到报错,其中一个常见的错误是:Unknown column 'column_name...
    99+
    2023-10-21
    MySQL 解决 报错
  • thinkphp的where()方法怎么使用
    这篇文章主要讲解了“thinkphp的where()方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp的where()方法怎么使用”吧!wher&...
    99+
    2023-06-22
  • LINQ中如何使用Where扩展
    本篇文章为大家展示了LINQ中如何使用Where扩展,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们除了可以如下方式书写带Where子句的LINQ外:from p&n...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作