DISTINCT,使用后让sql只返回不同的结果(去掉重复的结果)
示例代码
SELECT DISTINCT user_id FROM `users`
LIMIT,限制查询结果返回条数,例如
SELECT * FROM `user` LIMIT 5
返回为
可以进一步指定起始行,例如
SELECT * FROM `user` LIMIT 4,4
mysql5以上支持的另一种写法为
SELECT * FROM `user` LIMIT 4 OFFSET 4
order by,对结果进行排序.
SELECT * FROM `user` orders ORDER BY username,id;
示例如上,注意,只有在约束条件1(例如id均为10)的值相同的前提下,才会使用约束条件2进行排序,否则仍然使用约束条件1作为最优先排序条件
DESC,让关键字降序(Z到A)进行排序
配合limit可以找到最大值或者最小值(非计算)
SELECT * FROM `user` orders ORDER BY id DESC limit 1
WHERE 条件过滤
WHERE id = xx //当id等于xx时
WHERE id <> xx //当id不等于xx时
WHERE id != xx //当id不等于xx时
WHERE id > xx //当id大于xx时
WHERE id < xx //当id小于xx时
WHERE id <= xx //当id小于等于xx时
WHERE id >= xx //当id大于等于xx时
值的范围过滤
SELECT * FROM `user` WHERE id BETWEEN 2 AND 5
判定为null的列
SELECT * FROM `user` WHERE id IS NULl
AND 和 OR
如果没有小括号的话,AND的计算优先级要比OR更高(即使将OR放置在sql指令中的and前方).所以,如果要组合使用AND和 OR进行条件筛选的话,优先进行OR筛选应该用小括号将OR条件包括起来.
IN
通常配合小括号使用,指定条件范围,例如
IN从功能上来说和OR关键词差不多,但是执行效率更高.
SELECT * FROM `user` WHERE id IN (1,4,6)
NOT 关键词 对条件进行取反,即下列结果中排除1,4,6
SELECT * FROM `user` WHERE id NOT IN (1,4,6)
LIKE 与 %通配符
SELECT * FROM `user` WHERE username LIKE '张%'
使用搜索模式,并且%告诉mysql接受张开头无论后面有多少字符.
SELECT * FROM `user` WHERE username LIKE '%飞%'
使用搜索模式,并且%告诉mysql接受飞开头和尾部无论有多少字符.
SELECT * FROM `user` WHERE username LIKE '张%9'
使用搜索模式,并且%告诉mysql搜索张开头,9结尾的结果.
通配符,和%作用类似,但是通配符只能匹配单个字符
正则表达式
REGEXP
SELECT * FROM `user` WHERE username REGEXP '张|王'
值中包含张或者王的行都会显示出来.
SELECT * FROM `user` WHERE username REGEXP '飞[12]'
该sql中[12]表示为飞之后1或者2都可以.
另外可以用[0-9],[A-Z]限定范围.
SELECT * FROM `user` WHERE username REGEXP '明[1-3]'
常用的预定义字符集.(记英文字符太费劲了,还是A-Z比较快哦.)
SELECT * FROM `user` WHERE id REGEXP '[[:digit:]]{2}'
[:digit:]表示为匹配任意数字.{2}表示为匹配出现次数.即任意数字出现2次.
2位数id均被搜索出来了.
定位符^
拼接关键词 CONCAT
结果拼接
SELECT CONCAT(username,(create_time))
FROM `user`
将用户名和创建时间拼接为单个结果返回.
RTRIM 去掉值右边的所有空格.LTRIM去掉值左边所有的空格,TRIM去掉值2边所有的空格.
SELECT CONCAT (RTRIM(username),'(',RTRIM(create_time),')')
FROM `user`
AS 别名
将查询到的结果命名为一个别名表临时可供其他操作者引用.
SELECT CONCAT (RTRIM(username),'(',RTRIM(create_time),')') AS TEMP_USER
FROM `user`
常用文本处理函数,例如upper()
SELECT UPPER(`name`) FROM `employees`