使用WHERE子句对表中的数据进行筛选,满足条件的记录行会出现在结果集中(对记录进行筛选,符合条件的记录才能被查询出来)

语法格式

SELECT * FROM 表名 WHERE 条件;

WHERE子句在表名(FROM子句)之后给出


WHERE后面支持多种条件表达:

1.比较运算

2.模糊查询

3.范围查询

4.空判断

5.逻辑运算

1.比较运算

比较运算符 说明
= 等于
!= 或 <> 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于

数据导入

DROP TABLE IF EXISTS `products`;
CREATE TABLE `products`  (`id` int(11) NOT NULL,`prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`prod_price` decimal(10, 2) DEFAULT NULL,`vend_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `products` VALUES (1, 'Book', 9.00, 1001);
INSERT INTO `products` VALUES (2, 'Fruit', 12.00, 1002);
INSERT INTO `products` VALUES (3, 'TV', 15.00, 1003);
INSERT INTO `products` VALUES (4, 'Computer', 20.00, 1003);
INSERT INTO `products` VALUES (5, 'Pen', 5.00, 1001);

products表

id:产品id  prod_name:产品名称  prod_price:产品价格  vend_id:供应商id

问题1:检索价格小于10美元的所有产品

SELECT prod_name, prod_price
FROM products
WHERE prod_price < 10;

结果展示:

问题2:检索价格大于等于10美元的所有产品

SELECT prod_name, prod_price
FROM products
WHERE prod_price >= 10;

结果展示:

问题3:检索出不是由供应商1003制造的所有产品

-- 解法1
SELECT vend_id, prod_name
FROM products
WHERE vend_id <> 1003;-- 解法2
SELECT vend_id, prod_name
FROM products
WHERE vend_id != 1003;

结果展示:

问题4:检索出产品名称为'Fruit'的所有信息

SELECT *
FROM products
WHERE prod_name = 'Fruit';

结果展示:

2.模糊查询

LIKE与通配符过滤数据

3.范围查询

IN | NOT IN 表示在一个非连续的范围内进行查询

BETWEEN...AND...表示在一个连续的范围内进行查询

IN | NOT IN过滤数据

BETWEEN...AND...过滤数据

4.空判断

NULL过滤数据

5.逻辑运算

逻辑操作符 说明
AND

检索满足所有给定条件的行

OR

检索匹配任一给定条件的行

NOT

检索否定后跟条件的行

数据导入

DROP TABLE IF EXISTS `products`;
CREATE TABLE `products`  (`id` int(11) NOT NULL,`prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`prod_price` decimal(10, 2) DEFAULT NULL,`vend_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `products` VALUES (1, 'Book', 9.00, 1001);
INSERT INTO `products` VALUES (2, 'Fruit', 12.00, 1002);
INSERT INTO `products` VALUES (3, 'TV', 15.00, 1003);
INSERT INTO `products` VALUES (4, 'Computer', 20.00, 1003);
INSERT INTO `products` VALUES (5, 'Pen', 5.00, 1001);

products表

id:产品id  prod_name:产品名称  prod_price:产品价格  vend_id:供应商id

问题1:检索出由供应商1003制造的产品且该产品价格低于18美金(输出结果顺序:id,prod_name,prod_name)

SELECT id,prod_price,prod_name
FROM products
WHERE vend_id = 1003 AND prod_price < 18;

结果展示:

问题2:检索出由供应商1002或者1003制造的产品(输出结果顺序:prod_name,prod_price)

SELECT prod_name,prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;

结果展示:

问题3:检索出不是由供应商1001制造的所有产品

SELECT *
FROM products
WHERE NOT vend_id = 1001;

结果展示:

计算次序(优先级)

WHERE可包含任意数目的AND和OR操作符,允许两者结合以进行复杂和高级的过滤

SELECT prod_name,prod_price, vend_id FROM products
WHERE vend_id = 1001 OR vend_id = 1003 AND prod_price = 9;

结果展示:

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符

问题4:检索出由供应商1002或者1003制造出的产品,且该产品的价格为9美元

解决方法:使用圆括号明确地分组相应的操作符

SELECT prod_name,prod_price, vend_id FROM products
WHERE (vend_id = 1001 OR vend_id = 1003) AND prod_price = 9;

结果展示:

圆括号具有较AND或OR操作符高的计算次序

如果不加括号,条件运算按照NOT、AND、OR的优先级进行,即NOT优先级最高,其次是AND,最后是OR。加上括号可以改变优先级

在WHERE子句中使用圆括号

任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义

要组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算

[Mysql] 条件查询相关推荐

  1. MySQL 条件查询 limit、in、between and、like等等

    MySQL 条件查询 环境: CREATE TABLE `test_user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`userna ...

  2. MySQL学习-MySQL条件查询

    MySQL条件查询 操作的表 1.条件查询概述 2.条件查询between and] 3.条件查询is null和is not null 4.and和or的优先级的问题 5.条件查询in 6.模糊查询 ...

  3. Mysql 条件查询(like、between、and、in······)

    目录 Mysql 条件查询 示例 一.比较运算和逻辑运算符符 二.范围运算符 三.列表运算符 四.模糊匹配符 五.空值判断符 Mysql 条件查询 Mysql 条件查询即where子句后跟条件 运算符 ...

  4. mysql 条件查询分页_百万数据下mysql条件查询及分页查询的注意事项

    接上一节<百万数据mysql分页问题>,我们加上查询条件:select id from news where cate = 1 order by id desc limit 500000 ...

  5. MySQL 条件查询

    一.带关系运算符的查询 在select语句中最常见的格式如下: select 字段名1 , 字段名2,,,, from 表名 where 条件表达式 举例,查询表student中id=4的学生姓名,过 ...

  6. MySQL条件查询语句(一)

    条件查询 注意:条件查诟需要用到 where 询句,where 必须放到 from 询句表的后面: 执行顺序:先from再where过滤后再检索出来. 1..支持如下运算 2.等号(=)操作符 (1) ...

  7. php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...

    WHERE 语句 SQL中使用where可能会有一些不安全的动态参数传入或者一些复杂的SQL语句,但是Medoo提供非常简介和安全的方法来实现这些. 基础使用 在基础使用中. 你可以使用一些符号对参数 ...

  8. MySQL条件查询简单汇总

    条件查询语法:     select          查询列表     from         表名     where         筛选条件;          分类:     一.按条件表 ...

  9. MySQL 条件查询(多条件,模糊查询,范围查询,空值查询),分组查询,分组过滤

    WHERE 条件查询 WHERE关键字用指定的条件从表中查询数据. 语法格式: WHERE 查询条件 条件查询: 有比较运算和逻辑运算的查询条件. 带有BETWEEN AND 关键字的查询条件. 配合 ...

  10. Mysql条件查询以及分组查询

    语法 条件查询语法:select 查询列表 from 表名 where 筛选条件;(这里的筛选条件如果满足才会显示出来,不满足允许的时候就不会显示) 分组查询语法:select 分组函数 , 列1(要 ...

最新文章

  1. 如何水平居中一个元素
  2. TowerKing随笔汇总集
  3. 反射的本质——元数据
  4. java spring 过滤器_spring中过滤器与拦截器的区别
  5. 稀疏性和L1正则化基础 Sparsity and Some Basics of L1 Regularization
  6. linux7.0ftp,Linux(Centos7)搭建FTP服务
  7. lighttpd sqlite3 php,fedora linux平台下搭建lighttpd+php+sqlite
  8. 这款App被端了!曾是蔡徐坤一亿微博转发量的幕后推手 半年吸金800万
  9. keras系列︱利用fit_generator最小化显存占用比率/数据Batch化
  10. 生日python十种日期格式_Python可视化-二十四节气与生日间隔天数统计
  11. 哪些项目适合写进Java程序员面试简历?推荐这10类
  12. 怎么通过服务器性能计算tpmc,如何对服务器性能计算的公式参考(tpmc-tpcc)...pdf
  13. 2020年7月19日训练总结
  14. 飞马哥:正确推广模式框架的解析
  15. 机器学习期末考试满分试卷答案
  16. 常用分类词汇表-英美菜谱
  17. HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)
  18. signature=c2533d7d1f3a9e27480c43aef903d102,2 AUTHORS, INCLUDING: Uwe Helmke
  19. 相当全的JS及.NET正则表达式语法
  20. iOS面试备战-网络篇

热门文章

  1. 排序算法总结(Python版)
  2. python排序大全
  3. word论文常用格式设定技巧【公式对齐、制表符公式编号等】
  4. 晴天科技冲刺深交所:半年营收6.9亿 85后丁一波本科肄业
  5. 手机老是弹出系统服务器更新,苹果手机为什么老是会弹出系统更新,是不是要更新呢...
  6. Transact-SQL语言简介
  7. 数据结构与算法之美笔记(三)排序
  8. postgresql linux 命令,postgresql基本命令使用
  9. 在这场火牛骗局中,我成功地薅到了羊毛
  10. Python SMTP 发送邮件