在使用 MySQL SELECT语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。

语法格式如下:

WHERE {,,…}

其中,判定运算其结果取值为 TRUE、FALSE 和 UNKNOWN。

判定运算的语法分类如下:

1、{=||>=|<=>|<>|!=}

2、[NOT]LIKE

3、[NOT][REGEXP|RLIKE]

4、[NOT]BETWEENAND

5、IS[NOT]NULL

单一条件的查询语句

【实例 1】在表 测试表 中查询身高为 170cm 的学生的姓名,输入的 SQL 语句和行结果如下所示。

mysql> use 测试库

Database changed

mysql> SELECT name,height FROM 测试表 WHERE height=170;

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

| name  | height |

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

| Susan |    170 |

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

1 row in set (0.17 sec)

该语句采用了简单的相等过滤,查询一个指定列 height 的具体值 170。

【实例 2】查询年龄小于 22 的学生的姓名,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT name,age FROM 测试表 WHERE age<22;

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

| name | age  |

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

| John |   21 |

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

1 row in set (0.05 sec)

可以看到,查询结果中所有记录的 age 字段的值均小于 22 岁,而大于或等于 22 岁的记录没有被返回。

多条件的查询语句

使用 SELECT 查询时,可以增加查询的限制条件,这样可以使查询的结果更加精确。MySQL 在 WHERE 子句中使用 AND 操作符限定只有满足所有查询条件的记录才会被返回。

可以使用 AND 连接两个甚至多个查询条件,多个条件表达式之间用 AND 分开。

【实例 3】在 测试表 表中查询 age 大于 21,并且 height 大于等于 175 的学生的信息,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT * FROM 测试表 WHERE age>21 AND height>=175;

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

| id | name   | dept_id | age  | sex  | height | login_date |

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

|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |

|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |

|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |

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

3 rows in set (0.06 sec)

注意:上例的 WHERE 子句中只包含一个 AND 语句,把两个过滤条件组合在一起,实际上可以添加多个 AND 过滤条件,增加条件的同时增加一个 AND 关键字。

使用 LIKE 的模糊查询

字符串匹配的语法格式如下:

[NOT] LIKE

字符串匹配是一种模式匹配,使用运算符 LIKE 设置过滤条件,过滤条件使用通配符进行匹配运算,而不是判断是否相等进行比较。

相互间进行匹配运算的对象可以是 CHAR、VARCHAR、TEXT、DATETIME 等数据类型。运算返回的结果是 TRUE 或 FALSE。

利用通配符可以在不完全确定比较值的情形下创建一个比较特定数据的搜索模式,并置于关键字 LIKE 之后。可以在搜索模式的任意位置使用通配符,并且可以使用多个通配符。MySQL 支持的通配符有以下两种:

一、百分号(%)

百分号是 MySQL 中常用的一种通配符,在过滤条件中,百分号可以表示任何字符串,并且该字符串可以出现任意次。

使用百分号通配符要注意以下几点:

1、MySQL 默认是不区分大小写的,若要区分大小写,则需要更换字符集的校对规则。

2、百分号不匹配空值。

3、百分号可以代表搜索模式中给定位置的 0 个、1 个或多个字符。

4、尾空格可能会干扰通配符的匹配,一般可以在搜索模式的最后附加一个百分号。

二、下划线(_)

下划线通配符和百分号通配符的用途一样,下划线只匹配单个字符,而不是多个字符,也不是 0 个字符。

注意:不要过度使用通配符,对通配符检索的处理一般会比其他检索方式花费更长的时间。

【实例 4】在 测试表 表中,查找所有以“T”字母开头的学生姓名,输入的 SQL 的语句和执行结果如下所示。

mysql> SELECT name FROM 测试表 WHERE name LIKE 'T%';

+--------+

| name   |

+--------+

| Thomas |

| Tom    |

+--------+

2 rows in set (0.12 sec)

注意:在搜索匹配时,通配符“%”可以放在不同位置。

【实例 5】在 测试表 表中,查找所有包含“e”字母的学生姓名,输入的 SQL 的语句和执行结果如下所示。

mysql> SELECT name FROM 测试表 WHERE name LIKE '%e%';

+-------+

| name  |

+-------+

| Green |

| Henry |

| Jane  |

+-------+

3 rows in set (0.00 sec)

由执行结果可以看出,该语句查询字符串中包含字母 e 的学生的姓名,只要名字中有字母 e,其前面或后面无论有多少个字符,都满足查询的条件。

【实例 6】在 测试表 表中,查找所有以字母“y”结尾,且“y”前面只有 4 个字母的学生的姓名,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT name FROM 测试表 WHERE name LIKE '____y';

+-------+

| name  |

+-------+

| Henry |

+-------+

1 row in set (0.00 sec)

日期字段作为条件的查询语句

以日期字段作为条件,可以使用比较运算符设置查询条件,也可以使用 BETWEEN AND 运算符查询某个范围内的值。

BETWEEN AND 用来查询某个范围内的值,该操作符需要两个参数,即范围的开始值和结束值,若字段值满足指定的范围查询条件,则这些记录被返回。

【实例 7】在表 测试表 中查询注册日期在 2016-01-01 之前的学生的信息,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT * FROM 测试表 WHERE login_date

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

| id | name  |dept_id | age  | sex  | height | login_date |

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

|  1 | Dany  |       1 |   25 | F    |    160 | 2015-09-10 |

|  3 | Henry |       2 |   23 | M    |    185 | 2015-05-31 |

|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |

|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |

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

4 rows in set (0.04 sec)

【实例 8】在表 测试表 中查询注册日期在 2015-10-01 和 2016-05-01 之间的学生的信息,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT * FROM 测试表 WHERE login_date BETWEEN '2015-10-01' AND '2016-05-01';

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

| id | name  |dept_id | age  | sex  | height | login_date |

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

|  5 | Jim   |       1 |   24 | M    |    175 | 2016-01-15 |

|  6 | John  |       2 |   21 | M    |    172 | 2015-11-11 |

|  7 | Lily  |       6 |   22 | F    |    165 | 2016-02-26 |

|  8 | Susan |       4 |   23 | F    |    170 | 2015-10-01 |

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

4 rows in set (0.02 sec)

注意:查询日期数据的时候注意一下字段类型,最好是弄成时间日期型的字段。如果是文本型字段的话数据格式是国际通用型的话也能查询的到数据,如果不是国际通用型的日期格式的话查询的时候能查询到数据,但是会出错。具体的话大家可以自己去测试一下。

如有疑问可以联系本人:

mysql+where+且,MySQL WHERE相关推荐

  1. qt mysql now()_Qt + mysql 運用 (項目一)

    自己整合了一些資料方便以后查看,另外參考了一些資料嘗試做了個學生管理系統 以下資料若有錯誤或有侵權的地方,請前輩們指正,謝謝! 在Qt項目中右鍵執行qmake,之后在運行. 另外一種方法是在MVS20 ...

  2. windows nodejs mysql_windows server 安装 mysql + nondejs连接mysql

    下载 安装 下载完后,将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\mysql 下. 接下来需要配置下 MySQL 的配置文件 打开刚刚解压的文件夹 C:\mysql ,在该文件夹 ...

  3. fedora mysql 客户端_fedora mysql 安装

    本例使用的是 mysql-5.0.45.tar.gz 安装编译前提: Yum install gcc Yum install gcc-c++ 1.第一个MYSQL安装 编译1.带上参数 ./confi ...

  4. window mysql 字符集_Windows mysql默认字符集修改

    一.通过MySQL命令行修改: mysql> SET character_set_client = utf8 ; mysql> SET character_set_connection = ...

  5. mysql启用keepalive_keepalive+mysql 主主配置

    1.   环境说明: 机器名 eth0 说明 server01 192.168.100.30/24 Mysql.keepalive server02 192.168.100.31/24 Mysql.k ...

  6. 使用MySQL Proxy解决MySQL主从同步延迟

    MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方 面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的, ...

  7. mysql isreg_`Innodb` MySQL中如何优雅的删除大表跑路

    最近很想写写MySQL相关的内容,就从这个话题出发吧 有人说删MySQL表谁不会 不就是 drop table TABLENAME 如果在生产环境中,你对一张TB级别的大表,敲下这行命令 那么你的主管 ...

  8. oracle收购Mysql后,Mysql的安装配置方法

    自从Oracle收购MySQL后,略微发生了一些小小的变化,原来mysql安装完成后默认是没有密码的,但是新版的mysql安装完成后oracle提供了一个free password放着/root/.m ...

  9. centos7 安装mysql php_Centos7安装mysql与php的方法

    本文主要和大家分享Centos7安装mysql与php的方法,希望能帮助到大家. 相关mysql视频教程推荐:<mysql教程> 官网下载安装mysql-server 依次使用下面三个命令 ...

  10. mysql $lt_MongoDB与Mysql常用命令解释

    本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解. MongoDB是由数据库(database/repository) ...

最新文章

  1. linux at shell,shell 用at命令来计划执行作业
  2. 阅读笔记: 凸包的例子(一)
  3. 《设计师要懂心理学》-第五章-人如何集中注意力
  4. WPF---Xaml中改变ViewModel的值
  5. NOIP2016 愤怒的小鸟
  6. MacOs桌面自动被打乱的原因
  7. ML的BD框架-Hadoop.Mahout.Strom.Spark/GraphLab
  8. css实现一级下拉菜单
  9. MacOS 常用命令汇总
  10. 苹果对体无完肤的 iOS 11 最后的弥补
  11. 浏览器css透明属性opacity
  12. oracle sql详细教程下载,Oracle SQL 实用基础教程 PPT
  13. 教大家一种迅雷下载百度云文件方法
  14. Android 11 OTA升级集成
  15. 【侯捷】C++STL标准库与泛型编程(第二讲)
  16. ff15测试软件翻译,最终幻想15数据详细分析 FF15详细的数值参数测试
  17. cadcene17.4改背景颜色
  18. 面试官:Spring 用了哪些设计模式?说三种即可 = =
  19. 基金申请-13:如何查论文的影响因子和SCI分区?
  20. Zotero6.0来了,内容丰富,适合初学者(插件安装,翻译器更新)

热门文章

  1. 保护数据安全的三种武器
  2. 2010最后一篇:使用PyQt4开发的一个开源小程序QaoBa
  3. 李湘确逢“第二春” 1月已再婚11月便当妈(图)
  4. 通俗易懂的图解堆排序
  5. Python之经典编程练习题及源码
  6. 单载波调制和OFDM调制比较
  7. 深入理解Hadoop集群和网络
  8. Linux下的I/O复用与epoll详解
  9. C++ 协程与网络编程
  10. 云计算实训总结_云计算实习报告.doc