MySQL 查询常用操作(2) —— 条件查询 where

这篇具有很好参考价值的文章主要介绍了MySQL 查询常用操作(2) —— 条件查询 where。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL中常用的查询操作,首先是能直接从表中直接取出数据,接着能对查询结果做一些简单的处理,比如去重等,然后是根据条件查询数据,包括精准查询、模糊查询以及按照数据的某个范围或者指定多个指标进行查询,值得注意的是,MySQL中的一些查询会忽略空值。最后是将查询结果进行排序,主要包括升序和降序以及多个字段的先后排序处理。

第二部分主要介绍where语句——按照条件筛选数据。

一、具体方法

条件查询

select … where查询的基本语法

select * from 表名 where 条件;

条件使用where子句对表中的数据筛选,结果为true的行会出现在结果集中。

注意:

分为between、in、>、like null等

问题 类型 方法
查找学校是北大的学生信息 精准查询 where =、where in
查找除复旦大学的用户信息 非、比较运算符 <>、!=、not in
查找某个年龄段的用户信息 某个范围 >= 和 <=、between
找到学校为北大、复旦和山大的用户信息 同一列多指标查询 Where in
查看学校名称中含北京的用户 模糊查询 like
取出所有年龄值不为空的用户 过滤空值 <> ‘null’、!= ‘null’、is not null
寻找用户推荐人 对空值的处理 where 对空值的处理

二、实例

已知有用户信息表user_profile(device_id 设备ID, gender 性别, age 年龄, university 学校, gpa)

id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male 复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
题目1:取出所有北京大学的学生的数据,结果返回设备id和学校

【分类】:精准查询

【知识点】:=、in

求解代码
# 使用 =
select 
    device_id,
    university
from user_profile
where university = '北京大学';
# 使用 in
select 
    device_id,
    university
from user_profile
where university in ('北京大学');
结果
device_id university
2138 北京大学
6543 北京大学

题目2:取出除复旦大学以外的所有用户明细,结果返回设备id和学校

【分类】:、比较运算符

【知识点】:<>、!=、not in

求解代码
# 使用 <>
select 
    device_id,
    university
from user_profile
where university <> '复旦大学';
# 使用 !=
select 
    device_id,
    university
from user_profile
where university != '复旦大学';
# 使用 not in
select 
    device_id,
    university
from user_profile
where university not in('复旦大学');
结果
device_id university
2138 北京大学
6543 北京大学
2315 浙江大学
5432 山东大学
2131 北京师范大学

题目3: 取出用户年龄在20岁及以上且23岁及以下的设备ID、性别、年龄的数据

【分类】:某个范围

【知识点】: >= 和 <=、between

between: 闭区间,包括左右两边的数。
求解代码
# 使用 \>= 和 <=
select
    device_id,
    gender,
    age
from user_profile
where age >= 20 and age <= 23;

# 使用 between and
select
    device_id,
    gender,
    age
from user_profile
where age between 20 and 23;
结果
device_id gender age
2138 male 21
6543 female 20
2315 female 23

题目4: 取出学校为北大、复旦和山大的同学的相关数据

【分类】:同一列多指标查询

【知识点】:Where in

求解代码
select
    device_id,
    gender,
    age,
    university,
    gpa
from user_profile
where university in('北京大学','复旦大学','山东大学');
结果
device_id gender age university gpa
2138 male 21 北京大学 3.4
3214 male 复旦大学 4.0
6543 female 20 北京大学 3.2
5432 male 25 山东大学

题目5:取出所有大学中带有北京的用户的device_id、age、university的信息

【分类】:模糊查询

【知识点】:like

求解代码
select
    device_id,
    age,
    university
from user_profile
where university like '%北京%';
结果
device_id age university
2138 21 北京大学
6543 20 北京大学
2131 28 北京师范大学

题目6:取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息

【分类】:过滤空值

【知识点】:<> ‘null’、!= ‘null’、is not null

求解代码
# 使用 is not null
select 
    device_id,
    gender,
    age,
    university
from user_profile
where age is not null;
# 使用 != 'null'
select 
    device_id,
    gender,
    age,
    university
from user_profile
where age != 'null';
# 使用 <> 'null'
select 
    device_id,
    gender,
    age,
    university
from user_profile
where age <> 'null';
结果
device_id gender age university
2138 male 21 北京大学
6543 female 20 北京大学
2315 female 23 浙江大学
5432 male 25 山东大学
2131 male 28 北京师范大学

题目7:取出用户信息表中年龄 不是 20 的用户device_id、age、university信息

【分类】:对空值的处理

【知识点】:like

注意:
1. 使用in时,忽略null值,不会查询条件为null的数据;
2. 使用not in时,如果 not in后面的括号中没有null,会查询条件列中符合要求的数据,但会过滤掉条件为null的数据;
3. 使用not in时,如果 not in后面的括号中有null,直接返回false,查询结果为空。
求解代码
# 错误解法
select
	device_id,
    age,
    university
from user_profile
where age <> 20;
# 正确解法
select
	device_id,
    age,
    university
from user_profile
where ifnull(age,1) <> 20;
结果
device_id age university
2138 21 北京大学
3214 None 复旦大学
2315 23 浙江大学
5432 25 山东大学
2131 28 北京师范大学

创建 user_profile 表的代码文章来源地址https://www.toymoban.com/news/detail-409880.html

-- ----------------------------
-- Table structure for user_profile
-- ----------------------------
DROP TABLE IF EXISTS `user_profile`;
CREATE TABLE `user_profile`  (
  `id` int(11) NOT NULL,
  `device_id` int(11) NOT NULL,
  `gender` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `age` int(11) NULL DEFAULT NULL,
  `university` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `gpa` float NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user_profile
-- ----------------------------
INSERT INTO `user_profile` VALUES (1, 2138, 'male', 21, '北京大学', 3.4);
INSERT INTO `user_profile` VALUES (2, 3214, 'male', NULL, '复旦大学', 4);
INSERT INTO `user_profile` VALUES (3, 6543, 'female', 20, '北京大学', 3.2);
INSERT INTO `user_profile` VALUES (4, 2315, 'female', 23, '浙江大学', 3.6);
INSERT INTO `user_profile` VALUES (5, 5432, 'male', 25, '山东大学', 3.8);
INSERT INTO `user_profile` VALUES (6, 2131, 'male', 28, '北京师范大学', 3.3);

SET FOREIGN_KEY_CHECKS = 1;

到了这里,关于MySQL 查询常用操作(2) —— 条件查询 where的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 简明SQL条件查询指南:掌握WHERE实现数据筛选

    条件查询是用于从数据库中根据特定条件筛选数据行的一种方式,它避免了检索整个表中的数据。通常,使用 WHERE 子句来定义过滤条件,只有符合这些条件的数据行才会被返回。 SQL中的运算符有:=、!=、、 等,用于进行条件判断。 在逻辑运算中,常见的运算符包括: and:

    2024年02月09日
    浏览(70)
  • mysql根据条件导出表数据(`--where=“文本“`)

    本文只讲导出,导入可以参考不同MySQL服务的表以及库的数据迁移(/备份)-CSDN博客 现在先查下 migration_one.table_11 里有什么: 管理员终端打开输入: 得到结果: 执行结果: 得到: 如果只想要 name 以’he’开头的字段数据那么就只需要修改where文本里面的数据: 执行结果 t

    2024年02月05日
    浏览(59)
  • MySql按条件插入数据,MySQL插入语句写where条件,MySQL在插入时做幂等

    使用MySQL的删、改、查功能时,我们都可以根据where条件来对指定数据进行操作。 插入语句如何通过where条件,来判断是否允许插入呢? 此时表里有三条数据了: 上面sql执行结果: insert into test_table (id, content) select * from (select ‘4’, ‘内容4’) as tmp where not exists ( select 1 from

    2023年04月09日
    浏览(48)
  • Mysql join加多条件与where的区别

    最近在项目中遇到一个问题,感觉有点意思,在解决问题及查阅了相关资料后,打算写篇文章给朋友们分享一下。 问题现象: 问题是很常见的空指针问题,后端查询数据库数据,遍历进行相关业务处理时报空指针。通过断点调试发现问题就出在查询回来的数据上,返回的L

    2024年02月11日
    浏览(41)
  • 【SQL开发实战技巧】系列(三十):数仓报表场景☞树形(分层)查询如何排序?以及如何在树形查询中正确的使用where条件

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月09日
    浏览(69)
  • SQL sever数据库----基础增删改查操作与where条件限制

    在SQL sever中使用where语句,可以对各种操作添加限制条件 基础格式为 ———————— where 逻辑表达式 例如限制条件的查询 select 范围 from 表名 where 逻辑表达式 逻辑表达式就是一个判断 如 a 5 、a+69、a5 and b5 各种符号及作用如下面的表所示 比较运算符 符号 含义 大于 小于

    2023年04月18日
    浏览(48)
  • mysql查询语句中,是join先执行还是where先执行?

    在 MySQL 中,WHERE 子句会先于 JOIN 子句执行。 JOIN 子句用于连接两个或多个表,在 JOIN 子句中可以使用 ON 或 USING 子句来指定连接条件。 JOIN 子句会从两个表中返回符合连接条件的行,这些行会被合并成一个结果集。 而 WHERE 子句用于过滤查询结果集中的行,它可以使用各种条

    2024年02月14日
    浏览(40)
  • MyBatisPlus入门篇2 - 条件查询、查询投影、查询条件、id生成策略、多记录操作、逻辑删除

    目录 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。 封装User模型的查询条件,这里age是具有上下限的,User类里面的age作为下限,这里的age2作为上限。 domain.query.UserQuery.java ①if语句控制 ②条件参数控制 查询结果包含模型类中的部分属性

    2024年02月09日
    浏览(40)
  • 三个常用查询:根据用户名 / token查询用户信息+链表分页条件查询

    目录 1.根据用户名或者token查询用户信息 会员信息实体类 统一状态Result类  controller层 service层及实现类 dao层 测试: 2.链表分页条件查询 会员等级实体类 封装条件类PageVo  controller层 service层及实现类 dao层 Mapper.xml层 测试 vue前端参考 mybatisplus... 微服务项目前期环境:项目搭

    2024年02月15日
    浏览(47)
  • MySQL基础篇 | 简单的查询、条件查询、排序查询

    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:简单的查询 1. 查询一个字段 2. 查询多个字段  3. 查询全部字段 4. 计算员工的年薪 5. 将查询出来的字段显示为中文 二:条件查

    2023年04月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包