语法
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 次 |