铜川网站设计,百宝图建设工程电子网站,优秀网站介绍,广州网站设计权威乐云践新MySQL SELECT#xff0c;可以使用 WHERE 子句来指定查询条件#xff0c;从 FROM 子句的中间结果中选取适当的数据行#xff0c;达到数据过滤的效果。
语法格式如下#xff1a;
WHERE 查询条件 {判定运算1#xff0c;判定运算2#xff0c;…}其…MySQL SELECT可以使用 WHERE 子句来指定查询条件从 FROM 子句的中间结果中选取适当的数据行达到数据过滤的效果。
语法格式如下
WHERE 查询条件 {判定运算1判定运算2…}其中判定运算其结果取值为 TRUE、FALSE 和 UNKNOWN。
判定运算的语法分类如下 表达式1{|||||||}表达式2表达式1[NOT]LIKE表达式2表达式1[NOT][REGEXP|RLIKE]表达式2表达式1[NOT]BETWEEN表达式2AND表达式3表达式1IS[NOT]NULL单一条件的查询语句
在表 tb_students_info 中查询身高为 170cm 的学生的姓名输入的 SQL 语句和行结果如下所示。
mysql use test_db
Database changed
mysql SELECT name,height- FROM tb_students_info- WHERE height170;
---------------
| name | height |
---------------
| Susan | 170 |
---------------
1 row in set (0.17 sec)该语句采用了简单的相等过滤查询一个指定列 height 的具体值 170。
查询年龄小于 22 的学生的姓名输入的 SQL 语句和执行结果如下所示。
mysql SELECT name,age- FROM tb_students_info- WHERE age22;
------------
| name | age |
------------
| John | 21 |
------------
1 row in set (0.05 sec)可以看到查询结果中所有记录的 age 字段的值均小于 22 岁而大于或等于 22 岁的记录没有被返回。
多条件的查询语句
使用 SELECT 查询时可以增加查询的限制条件这样可以使查询的结果更加精确。MySQL 在 WHERE 子句中使用 AND 操作符限定只有满足所有查询条件的记录才会被返回。
可以使用 AND 连接两个甚至多个查询条件多个条件表达式之间用 AND 分开。
在 tb_students_info 表中查询 age 大于 21并且 height 大于等于 175 的学生的信息输入的 SQL 语句和执行结果如下所示。
mysql SELECT * FROM tb_students_info- WHERE age21 AND height175;
-----------------------------------------------------
| 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 的模糊查询
字符串匹配的语法格式如下
表达式1 [NOT] LIKE 表达式2字符串匹配是一种模式匹配使用运算符 LIKE 设置过滤条件过滤条件使用通配符进行匹配运算而不是判断是否相等进行比较。
相互间进行匹配运算的对象可以是 CHAR、VARCHAR、TEXT、DATETIME 等数据类型。运算返回的结果是 TRUE 或 FALSE。
利用通配符可以在不完全确定比较值的情形下创建一个比较特定数据的搜索模式并置于关键字 LIKE 之后。可以在搜索模式的任意位置使用通配符并且可以使用多个通配符。MySQL 支持的通配符有以下两种
1 百分号% 百分号是 MySQL 中常用的一种通配符在过滤条件中百分号可以表示任何字符串并且该字符串可以出现任意次。
使用百分号通配符要注意以下几点 MySQL 默认是不区分大小写的若要区分大小写则需要更换字符集的校对规则。百分号不匹配空值。百分号可以代表搜索模式中给定位置的 0 个、1 个或多个字符。尾空格可能会干扰通配符的匹配一般可以在搜索模式的最后附加一个百分号。2 下划线_ 下划线通配符和百分号通配符的用途一样下画线只匹配单个字符而不是多个字符也不是 0 个字符。
在 tb_students_info 表中查找所有以“T”字母开头的学生姓名输入的 SQL 的语句和执行结果如下所示。
mysql SELECT name FROM tb_students_info- WHERE name LIKE T%;
--------
| name |
--------
| Thomas |
| Tom |
--------
2 rows in set (0.12 sec)注意在搜索匹配时通配符“%”可以放在不同位置。
在 tb_students_info 表中查找所有包含“e”字母的学生姓名输入的 SQL 的语句和执行结果如下所示。
mysql SELECT name FROM tb_students_info- WHERE name LIKE %e%;
-------
| name |
-------
| Green |
| Henry |
| Jane |
-------
3 rows in set (0.00 sec)由执行结果可以看出该语句查询字符串中包含字母 e 的学生的姓名只要名字中有字母 e其前面或后面无论有多少个字符都满足查询的条件。
在 tb_students_info 表中查找所有以字母“y”结尾且“y”前面只有 4 个字母的学生的姓名输入的 SQL 语句和执行结果如下所示。
mysql SELECT name FROM tb_students_info- WHERE name LIKE ____y;
-------
| name |
-------
| Henry |
-------
1 row in set (0.00 sec)日期字段作为条件的查询语句
以日期字段作为条件可以使用比较运算符设置查询条件也可以使用 BETWEEN AND 运算符查询某个范围内的值。
BETWEEN AND 用来查询某个范围内的值该操作符需要两个参数即范围的开始值和结束值若字段值满足指定的范围查询条件则这些记录被返回。
在表 tb_students_info 中查询注册日期在 2016-01-01 之前的学生的信息输入的 SQL 语句和执行结果如下所示。
mysql SELECT * FROM tb_students_info- WHERE login_date2016-01-01;
----------------------------------------------------
| 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)在表 tb_students_info 中查询注册日期在 2015-10-01 和 2016-05-01 之间的学生的信息输入的 SQL 语句和执行结果如下所示。
mysql SELECT * FROM tb_students_info- 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)