当前位置: 首页 > news >正文

mysql虚拟表的创建_mysql虚拟表

虚拟表,就是实际上并不存在(物理上不存在),但是逻辑上存在的表。

在MySQL中,存在的虚拟表:临时表、内存表和视图,派生表。

只能从select语句可以返回虚拟表的是视图和派生表。

一、派生表

当select语句的from子句中使用独立子查询时,就称其为派生表。

selectcolumn_listfrom(selectcolumn_listfromtable_1

) derived_table_namewhere derived_table_name.c1 > 0 ;

与子查询不同,派生表必须具有别名,以便稍后在查询中引用其名字。

如果派生表没有别名,则出错。

二、视图

1.创建视图--other

create view other as

select a.name as username, b.name as goodsname from

user as a, goods as b where a.id=b.id;2.删除视图drop view if exists other;

3.调用视图

select * from other;

视图创建一遍后会在navicat premium(MySQL可视化工具)保存下来,不可重复创建视图,

所以想重复调试创建视图,需先删除已创建的视图,在执行创建视图的SQL命令。

视图作用:

提高了重用性,就项一个函数,创建一次,可重复调用。

对数据库重构,却不影响原数据。

让数据更加清晰。想要什么样的数据,就创建什么样的视图。

即可以从select语句可以返回虚拟表,又可以通过构建表结构创建虚拟表的是临时表和内存表。

三、临时表

MySQL临时表在保存一些临时数据时是非常有用的。

临时表是建立在系统临时文件夹中的表,使用得当,完全可以像普通表一样进行各种操作。

临时表的数据和表结构都存储在内存中。

临时表只在当前MySQL连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间。

1.通过构建临时表结构创建临时表create temporary tabletmp_table (

nameVARCHAR(10) NOT NULL,

valueINTEGER NOT NULL);select * fromtmp_table;2.直接将查询结果导入临时表create temporary table tmp_table select * from other;

3.删除临时表

drop table tmp_table;

临时表的应用:

当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行拆分并且得到比较小的结果集合存放在临时表中。

程序执行过程中可能需要存放一些临时数据,这些数据在整个程序的会话过程中需要重复使用。

临时表默认是MyISAM(存储引擎),但是可以修改。

注意:

临时表与存在的表名相同的时候,存在的表会被隐藏,当临时表被drop,存在的表就可见了。

show tables语句不会列举临时表,但是会列出内存表。

四、内存表

表结构建在磁盘上,数据在内存里,当停止服务后,表中的数据会丢失,而表的结构不会丢失。

内存表也可以被看作是临时表的一种。

1.通过构建内存表结构创建内存表create tabletmp_table (

nameVARCHAR(10) NOT NULL,

valueINTEGER NOT NULL)ENGINE=MEMORY;select * fromtmp_table;

show tables;

2.直接将查询结果导入内存表

create table tmp_table engine=memory

select * from other;3.释放占用的内存--删除数据

delete fromtmp_table;--清空表

truncate tabletmp_table;--删除表

drop table tmp_table;

内存表特征:

对于varchar等变长类型,内存表使用固定的长度来存放。

内存表可以有非唯一的键。

内存表不能包含BLOB或TEXT列。

内存表支持AUTO_INCREMENT列。

内存表支持插入延迟,使读取优先。

当临时表变得很大时,MySQL会自动地把它转化为在磁盘上存储的表,而内存表不会自动转换。

在MySQL的主从服务器上,内存表可以被复制。

内存表最大的size受限于系统变量max_heap_table_size,默认值是16MB,这个变量是可以修改的。

内存表对所有用户的连接都是可见的,使得它非常适合做缓存。

内存表必须使用memory存储引擎。

五、内存临时表

1.通过构建表结构创建临时内存表create temporary tabletmp_table (

nameVARCHAR(10) NOT NULL,

valueINTEGER NOT NULL)ENGINE=MEMORY;select * fromtmp_table;

show tables;2.直接将查询结果导入内存表create temporary table tmp_table engine=memoryselect * from other;

参考:

https://dev.mysql.com/doc/refman/8.0/en/memory-storage-engine.html

https://blog.csdn.net/qq_43678418/article/details/87702348

原文:https://www.cnblogs.com/xl717/p/12144126.html

相关文章:

  • win 10 查看mysql密码_win10系统登录mysql时报错1045?查看解决方案
  • 安装好mysql怎么配置_安装好mysql怎么配置
  • pythonwx关闭窗口_如何在WX python中关闭已打开的窗口
  • mysql负载突然飙升_mysql负载飙高原因分析
  • CA系统mysql_MySQL性能优化
  • linux下安装mysql5.5_Linux下安装mysql5.5.19
  • mysql ignore oracle_Oracle impdp的ignore及 fromuser / touser 功能
  • mysql监控命令_MySQL数据库维护中监控所用到的常用命令
  • python windows api移动窗口_Python使用Windows API创建窗口示例【基于win32gui模块】
  • vue 列表内容自动向上滚动_vue 新闻列表滚动效果
  • java 清空文件夹_java 删除文件夹中的所有文件及文件夹
  • java sqlserver 2000_java数据库基本操作(sqlserver 2000为例)
  • java 按字节读入_Java按字节读取文件
  • idea java 注释模板_IDEA添加Java类注释模版的方法
  • java中数组问题_java中数组的数组问题
  • Android框架之Volley
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • dva中组件的懒加载
  • ES学习笔记(12)--Symbol
  • express + mock 让前后台并行开发
  • go append函数以及写入
  • idea + plantuml 画流程图
  • JAVA 学习IO流
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • nodejs调试方法
  • Python连接Oracle
  • ViewService——一种保证客户端与服务端同步的方法
  • 测试开发系类之接口自动化测试
  • 基于HAProxy的高性能缓存服务器nuster
  • 记一次删除Git记录中的大文件的过程
  • 力扣(LeetCode)357
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 普通函数和构造函数的区别
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 王永庆:技术创新改变教育未来
  • 一份游戏开发学习路线
  • const的用法,特别是用在函数前面与后面的区别
  • FaaS 的简单实践
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (function(){})()的分步解析
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (编译到47%失败)to be deleted
  • (转)jQuery 基础
  • (转)ObjectiveC 深浅拷贝学习
  • .Net 8.0 新的变化
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [2669]2-2 Time类的定义