视图
定义
MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果
应用场景:
• 多个地方用到同样的查询结果
• 该查询结果使用的sql语句较复杂
优点
• 重用sql语句
• 简化复杂的sql操作,不必知道它的查询细节
• 保护数据,提高安全性
创建视图的语法:
create [or replace] view view_name
As
select_statement
[with|cascaded|local|check option]
例子
create view myv1
as
select product_name,product_category from product;
临时表
CREATE TEMPORARY TABLE SalesSummary (
product_name VARCHAR(50) NOT NULL,
total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00,
avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00,
total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
临时表作用与视图基本一致,这里不过多阐述。
视图与临时表的区别:
1、空间分配:物理空间的分配不一样,视图不分配空间, 临时表会分配内存空间
虚实:视图是一条预编译的SQL语句,并不保存实际数据,而临时表是保存在tempdb中的实际的表。即视图是一个快照,是一个虚表,而临时表是客观存在的表类型对象。它们的结构一个是表、一个快照。可以把视图想象成联合表的快捷方式。
3、视图可以一直存在。临时表存在于它被创建的整个数据库会话过程中,下次会话就不存在了。
2、视图只存在于单个查询当中,每次使用该视图名,其虚拟表就会根据现有的数据重新被创建。临时表不会主动更新。