【MySQL】必知必会知识点

LIMIT含义

SELECT category FROM "books" LIMIT 4 ;

上面代码意为:返回不多于4行

SELECT category FROM "books" LIMIT 4 , 3;

或者

SELECT category FROM "books" LIMIT 4 OFFSET 3;

意为从行3开始取4行(数值都是从0开始)

排序数据

按多个列排序

SELECT prod_id, prod_price,prod_name
FROM products
ORDER BY prod_price, prod_name;

首先按价格排序,然后按名字排序,仅在价格相同的情况下,才再按名字排序,如果价格中的值都是唯一的,则不会按名字排序。

降序

SELECT prod_id,prod_price, prod_name
FROM products
ORDER BY prod_price DESC, prod_name ;

DESC关键字只应用到直接位于其前面的列名。
上面代码只对 prod_price 降序排列,prod_name仍按升序排列。

通配符

百分号 % 通配符

  1. % 可在搜索模式中任意位置使用,可以使用多个通配符
  2. 可以放在开头、结尾、开头和结尾、中间。
  3. % 代表搜索模式中给定位置的0个、 1个或多个字符
  4. 不能匹配用值NULL作为产品名的行

下划线 _ 通配符

  1. 只匹配单个字符而不是多个字符
  2. 总是匹配一个字符,不能多也不能少

正则表达式

OR匹配

| 功能上相当于 OR
查询字段 prod_name 的值中包含 1000或2000:

SELECT * FROM `products` WHERE prod_name REGEXP '1000|2000';

查询几个字符之一

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '[124]000';

这里使用了 [124]000 相当于上面的 1000|2000|4000

匹配范围查询

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '[1-4]000';

[1-4]000 意为 1000|2000|3000|4000
注意:此外,范围不一定只是数值的, 也可以[a-z]匹配任意字母字符

匹配特殊字符

特殊字符比如:. [] | 和 - 等。
查询的时候需要加上转义 \ 作为前导

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '\\.';

匹配字符类

查询数字、所有字母字符或所有数字字母字符等的匹配,如下表:

说 明
[:alnum:]任意字母和数字(同[a-zA-Z0-9])
[:alpha:]任意字符(同[a-zA-Z])
[:blank:]空格和制表(同[\t])
[:cntrl:]ASCII控制字符( ASCII 0到31和127)
[:digit:]任意数字(同[0-9])
[:graph:]与[:print:]相同,但不包括空格
[:lower:]任意小写字母(同[a-z])
[:print:]任意可打印字符
[:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]包括空格在内的任意空白字符(同[\f\n\r\t\v])
[:upper:]任意大写字母(同[A-Z])
[:xdigit:]任意十六进制数字(同[a-fA-F0-9])

匹配多个实例

重复元字符
元 字 符说 明
*0个或多个匹配
+1个或多个匹配(等于{1,})
?0个或1个匹配(等于{0,1})
{n}指定数目的匹配
{n,}不少于指定数目的匹配
{n,m}匹配数目的范围( m不超过255)

举例:查找一个单词并且还能够适应一个尾随的s(如果存在),

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '\\([0-9] toms?\\)';

结果:

语句中的 [0-9] 表示范围有数字0-9的,后面的toms?表示匹配和它前面的字符次数为0或1(即s可选可不选)

定位符

定位元字符
元 字 符说 明
^文本的开始
$文本的结尾
[[:<:]]词的开始
[[:>:]]词的结尾

上面查询的是一个字符串中的任意位置,如果想定位到某个位置,就需要定位符:

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '^\\([0-9] toms?\\)';

版权声明:本文为TheChany原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。