最近项目实在太忙,连着加了两个礼拜的班,所以造成了拖更,在这里给读者朋友说声抱歉,老韩一定会尽量挤出来时间给大家继续数据库的分享。今天分享的内容是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所示,会发现这个内存临时表不存在了;
图1
图2
磁盘临时表这里不做过多讲解,暂时了解即可。
二、正则表达式;
正则模式
示例、查找student表中10-19岁的同学信息;
语句:select * from student where age REGEXP '^1',(这里只是来讲解一下正则的用法,不一定是最佳实践,当然可以使用别的方法来筛选。),使用关键字REGEXP,表示匹配后面的正则表达式。查询结果如下图所示:
筛选10-19的学生信息
读者朋友要戒骄戒躁,每天进步一点点,几个月后你会发现你真的很厉害了。上周跟着我干的一个小伙子已经去一个甲方企业做运维经理去了,非常好学的一个小伙子,毕业4年做到中层领导,也比较厉害了。
今天的分享就这两块,正则要求掌握,临时表不用深入研究,但是要知道。谢谢读者朋友的观看,如果觉得老韩分享的东西可以给你带来收获请点下关注,老韩感激不尽,你们每一次的关注、转发、收藏都是老韩持续更新的动力,谢谢观看,我们下期再见。