关于SQL易忘的十四个知识点

主要记录SQL尤其是MySQL中,一些看了就忘,需要经常查的小知识点~

1. 下划线_通配符与百分号%通配符的区别

下划线的用途与%一样,但是%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少。
在这里插入图片描述

2. 匹配不区分大小写

通过使用BINARY可以区分,如:

WHERE prod_name REGEXP BINARY 'JetPack .000'

3. MySQL正则表达式

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL
用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。

4. LIKE和REGEXP的区别

LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。这是一个非常重要的差别。

5. 匹配

匹配字符
在这里插入图片描述
匹配特殊字符
为了匹配特殊字符,必须用\为前导。\-表示查找-,\.表示查找.。这种处理就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义。这包括.、|、[]以及迄今为止使用过的其他特殊字符。
\也用来引用元字符(具有特殊含义的字符)。
在这里插入图片描述
例:
在这里插入图片描述
定位符
在这里插入图片描述
例:
在这里插入图片描述
注:^的双重用途
^有两种用法。在集合中(用[和]定义),用它来否定该集合,否则,用来指串的开始处。

6. 文本处理函数

在这里插入图片描述
SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。使用Soundex()函数进行搜索,它匹配所有发音类似于Y.Lie的联系名:
在这里插入图片描述
拼接:将值联结到一起构成单个值。
解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。

SELECT Concat(ven_name, '(', vend_country, ')')

7. 日期和时间处理函数

在这里插入图片描述
在这里插入图片描述

8. 数值处理函数

在这里插入图片描述

9. 聚集函数

在这里插入图片描述
其中,在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行,MIN()返回第一行。
COUNT()函数有两种使用方式。使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

10. HAVING和WHERE的区别

“Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
“Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
在这里插入图片描述

11. 组合查询UNION

UNION 返回匹配行,不保留重复行
UNION ALL 返回匹配行,包括重复行

UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。

12. 全文本搜索

在这里插入图片描述
查询扩展
在这里插入图片描述
表中的行越多(这些行中的文本就越多),使用查询扩展返回的结果越好。

布尔文本搜索
在这里插入图片描述
在这里插入图片描述
在布尔方式中,不按等级值降序排序返回的行。

13. 数据插入

插入一行
在这里插入图片描述
插入多行
在这里插入图片描述
插入检索出的数据
在这里插入图片描述

14. 更新数据、删除数据

#更新多个列
UPDATE customers
SET cust_name = 'The Fudds',
	cust_email = '[email protected]'
WHERE cust_id = 10005 ;     #不要省略WHERE子句

#删除某个列的值
UPDATE customers
SET cust_email = NULL    #其中NULL用来去除cust_email列中的值。
WHERE cust_id = 10005 ; 

#删除数据
DELETE FROM customers
WHERE cust_id = 10005 ;
#DELETE不需要列名或通配符。DELETE删除整行而不是删除列,但DELETE不删除表本身。为了删除指定的列,请使用UPDATE语句。

参考资料

《MySQL必知必会》Ben Forta 著,刘晓霞 钟鸣 译

原创文章 4 获赞 2 访问量 266

猜你喜欢

转载自blog.csdn.net/weixin_45399074/article/details/105895445
今日推荐