MySQL WHERE 筛选数据

语法

SELECT
	field1,
	field2
FROM
	table_name
WHERE
	field1 = value1 [AND|OR] field2 = value2

运算符支持 =、!=、>、<、>=、<=、<=> 、IN、LINK、REGEXP
逻辑操作支持 AND、OR 且 AND 优先级大于 OR

例子

//结构
CREATE TABLE `user`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL,
  `age` tinyint(4) NOT NULL,
  `sex` tinyint(4) NOT NULL,
  `tel` char(11) NOT NULL,
  PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8;

//单条件查询
SELECT * FROM `user` WHERE `id` = 1;

//AND查询
SELECT * FROM `user` WHERE `name` = '张三' AND `sex` = 1;

//OR查询
SELECT * FROM `user` WHERE `name` = '张三' OR `name` = '李四';

//查询子句
SELECT * FROM `user` WHERE (`name` = '张三' OR `name` = '李四') AND `sex`= 1;

//IN查询
SELECT * FROM `user` WHERE `name` IN ('张三','李四','王五');

//LIKE 模糊查询 '%'代表任意字符 '_'代表占位符
SELECT * FROM `user` WHERE `name` LIKE '张%'; 

//REGEXP 正则查询 
SELECT * FROM `user` WHERE `name` REGEXP '^[张王]{1}.*';

//BETWEEN 范围查询 查询两个值之间的数据且包含这两个值
SELECT * FROM `user` WHERE `tel` BETWEEN '13800138001' AND '13800138003';

LIKE 通配符

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]、[!charlist] 不在字符列中的任何单一字符

REGEXP 正则表达式

关键字 描述
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式
[…] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’
[^…] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’
p1|p2|p3 匹配 p1 或 p2 或 p3。例如,‘z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}
{n} n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次

你可能感兴趣的:(MySQL)