MySQL的SELECT注意事项,正则表达式,常用函数,explain的简单解析

SELECT

  • 使用ORDER BY和LIMIT关键字可以检索出表中最高后最低的值。

  • MySQl在查询执行匹配时默认不区分大小写。

  • 单引号用来限定字符串,如果将值与串类型的列进行比较,则需要限定引号,用来与数值列进行比较的值不要用引号。

  • 在任何时候使用具有AND和OR操作符的WHERE字句,都应该使用圆括号明确的分组操作符

  • MySQL支持使用NOT对IN、BETWEEN和 EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件 取反有很大的差别。

通配符的使用(通配符搜索的处理一般要比其他搜索所花时间长)

  • 不要过度使用通配符,如果其他操作符能达到相同目的,应该使用其他操作符。

  • 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用 在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起 来是最慢的。

  • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

正则表达式

使用REGEXP关键字后跟表达式来匹配,默认不区分大小写,如果要区分大小写则要使用BINARY关键字,例如 SELECT 字段 FROM 表名 REGEXP BINARY '正则表达式'。

  • 正则表达式中的 . 表示匹配任意一个字符。

  • |表示OR

  • ^匹配除指定字符外的任何东西, ^的双重用途 ^有两种用法。在集合中(用[和]定义),用它 来否定该集合,否则,用来指串的开始处。

  • 匹配特殊字符时前要使用‘\\’转义

正则表达式REGEXP与LIKE的区别:

  • LIKE后的匹配字段需要加通配符来实现模糊查询,不加通配符就相当于完全匹配查询。

  • REGEXP后的匹配字段可以不加通配符依然是模糊查询。

函数

文本处理函数

Concat():拼接字符串函数

Trim():去掉值左右两边的空格

RTrim():去掉值右边的空格

LTrim():去掉值左边的空格

Upper():将值转换为大写

Lower():将串转换为小写

Length():返回串的长度

Left():返回串左边的字符

Soundex():返回串的字符,SOUNDEX是一个将任何文 本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似 的发音字符和音节,使得能对串进行发音比较而不是字母比较。

SubString():返回子串的字符

时间处理函数

AddDate() 增加一个日期(天、周等)

AddTime() 增加一个时间(时、分等)

CurDate() 返回当前日期

CurTime() 返回当前时间

Date() 返回日期时间的日期部分

DateDiff() 计算两个日期之差

Date_Add() 高度灵活的日期运算函数

Date_Format() 返回一个格式化的日期或时间串

Day() 返回一个日期的天数部分

DayOfWeek() 对于一个日期,返回对应的星期几

Hour() 返回一个时间的小时部分

Minute() 返回一个时间的分钟部分

Month() 返回一个日期的月份部分

Now() 返回当前日期和时间

Second() 返回一个时间的秒部分

Time() 返回一个日期时间的时间部分

Year() 返回一个日期的年份部分

数值处理函数

Abs() 返回一个数的绝对值

Cos() 返回一个角度的余弦

Exp() 返回一个数的指数值

Mod() 返回除操作的余数

Pi() 返回圆周率

Rand() 返回一个随机数

Sin() 返回一个角度的正弦

Sqrt() 返回一个数的平方根

Tan() 返回一个角度的正切

COUNT()函数有两种使用方式。

  • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空 值(NULL)还是非空值。

  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略 NULL值

MAX()函数

对非数值数据使用MAX() ,虽然MAX()一般用来找出最大的 数值或日期值,但MySQL允许将它用来返回任意列中的最大 值,包括返回文本列中的最大值。在用于文本数据时,如果数 据按相应的列排序,则MAX()返回最后一行,忽略NULL值

MIN()函数

对非数值数据使用MIN() ,MIN()函数与MAX()函数类似, MySQL允许将它用来返回任意列中的最小值,包括返回文本 列中的最小值。在用于文本数据时,如果数据按相应的列排序, 则MIN()返回最前面的行。同样忽略NULL值。

explain执行计划查看存储过程

MySQL的SELECT注意事项,正则表达式,常用函数,explain的简单解析_第1张图片

id:sql子查询子语句执行顺序

select_type:查询类型

table:当前SQL语句执行的表名

partition:是不是一个分区表(又没有分区的字段信息)

type:查询对应的类型,高效率 system>const>eq_ref>ref>range>index>all,低效率。

possible_keys:可能用到的索引

key:当前SQL语句执行时用到的索引

key_len:使用索引的长度

ref:对应列的引用

rows:过滤行数(估值)

filtered:过滤的东西

Extra:可选的信息(额外的信息)

你可能感兴趣的:(MySQL,mysql)