最近项目实在太忙,连着加了两个礼拜的班,所以造成了拖更,在这里给读者朋友说声抱歉,老韩一定会尽量挤出来时间给大家继续数据库的分享。今天分享的内容是mysql临时表和正则表达式,希望读者朋友能有所收获。

一、临时表;

临时表:MySQL用于存储一些中间结果集的表,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

为什么要用临时表呢?比如要执行一些比较复杂的sql语句时候,往往一次查询并不能查询到我们需要的数据,这个时候就会用到临时表,如查询语句select * from (select * from student )a,这个查询语句中瓜号内部是一个结果集,后面跟别名a,这个a就相当于是一个临时表。

什么时候会用到临时表呢?

1、union查询;

2、使用聚合函数查询;

3、子查询;

4、semi-join(半连接);

5、group by 和 order by;

6、更新表;

……

临时表分为内存临时表和磁盘临时表,内存临时表顾名思义在内存中的表,当与mysql的连接断开之后,这个表的数据和结构就会被销毁,磁盘临时表在断开连接后数据会被清空,但是表的结构还是存在的。

创建内存临时表,标准语句为:CREATE TEMPORARY TABLE 内存表名 (字段) ENGINE = MEMORY;最后一个属性表示这个表为内存临时表,老韩的mysql版本为8.XXX最后一个关键字用engine,如果是5.5之前的版本这个地方要用type。

接下来举个例子;

语句:CREATE TEMPORARY TABLE laohanlinshi as select * from student,效果如图1:创建临时表,表名为laohanlinshi,内容是student表全部内容,相当于把student表复制一份,当我们关闭这个连接重新连接数据库的时候查询结果如图2所示,会发现这个内存临时表不存在了;

mysql局部临时表 mysql 全局临时表_正则

图1

mysql局部临时表 mysql 全局临时表_正则表达式_02

图2

磁盘临时表这里不做过多讲解,暂时了解即可。

二、正则表达式;

mysql局部临时表 mysql 全局临时表_mysql_03

正则模式

示例、查找student表中10-19岁的同学信息;

语句:select * from student where age REGEXP '^1',(这里只是来讲解一下正则的用法,不一定是最佳实践,当然可以使用别的方法来筛选。),使用关键字REGEXP,表示匹配后面的正则表达式。查询结果如下图所示:

mysql局部临时表 mysql 全局临时表_mysql局部临时表_04

筛选10-19的学生信息

读者朋友要戒骄戒躁,每天进步一点点,几个月后你会发现你真的很厉害了。上周跟着我干的一个小伙子已经去一个甲方企业做运维经理去了,非常好学的一个小伙子,毕业4年做到中层领导,也比较厉害了。