mysql的视图是什么_MySQL中的视图是什么?

9 个答案:

答案 0 :(得分:11)

普通视图只不过是可查询的查询。

示例:

您有两个表,订单和客户,订单包含字段ID,customer_id,performance_date和客户有id,first_name,last_name。

现在假设您要一起显示订单ID,效果日期和客户名称,而不是发出此查询:

SELECT o.id as order_id, c.first_name + ' ' + c.last_name as customer_name,

o.performance_date

FROM orders o inner join customers c

您可以将该查询创建为视图并将其命名为orders_with_customers,在您的应用程序中,您现在可以发出查询

SELECT *

FROM orders_with_customer

一个好处是抽象,您可以改变存储客户名称的方式,例如包含中间名,只需更改视图查询。使用该视图的所有应用程序都会继续这样做,但现在包含中间名。

答案 1 :(得分:3)

答案 2 :(得分:2)

很简单:视图是虚拟表。

视图基于对“真实”表的SELECT查询,但区别在于视图不存储与真实表不同的信息。视图仅引用表并将它们与SELECT所说的方式组合在一起。这使得经常使用的查询更加简化。

这是一个简单的例子。让我们假设您有一张员工表和一个部门表,您希望看到他们的薪水。首先,您可以为工资创建一个视图。

CREATE VIEW SALARIES

AS

SELECT e.name,

e.salary,

d.name

FROM employees AS e, deparments as d

WHERE e.depid = d.depid

ORDER BY e.salary DESC

此查询列出员工的姓名,他/她的薪水和部门,并按工资降序排列。完成此操作后,您可以使用以下查询:

SELECT * from SALARIES

在更大的范围内,您可以制作一个视图,计算员工的平均工资,并列出薪水低于平均工资的人员。在现实生活中,这样的查询要复杂得多。

答案 3 :(得分:1)

答案 4 :(得分:1)

您可以将视图视为即时生成的表。在您的查询中,它的行为类似于普通表,但它不是存储在磁盘上,而是在创建视图时定义的SQL语句中必要时动态创建。

要创建视图,请使用:

CREATE VIEW first_names AS SELECT first_name FROM people WHERE surname='Smith'

然后,您可以将此视图用作普通表。诀窍是当你更新表人时,first_names视图也会被更新,因为它只是SELECT语句的结果。

此查询:

SELECT * FROM first_names

将返回表格中名为Smith的人的所有名字。如果更新人员表并重新运行查询,您将看到更新的结果。

基本上,您可以使用嵌套的SELECT语句替换视图。但是,观点有一些优点:

较短的查询 - 嵌套的SELECT语句使查询更长

提高了可读性 - 如果视图具有合理的名称,则查询更容易理解

更快的速度 - 视图的SELECT语句存储在数据库引擎中并进行预解析,因此无需从客户端传输并一遍又一遍地进行解析

缓存和优化 - 数据库引擎可以缓存视图并执行其他优化

答案 5 :(得分:0)

答案 6 :(得分:0)

它们是常见过滤器的简写。

假设您有一个包含已删除列的记录表。通常,您不会对已删除的记录感兴趣,因此您可以创建一个名为Records的视图,从AllRecords表中过滤掉已删除的记录。

这将使您的代码清理,因为您不必在每个语句中附加/前置deleted != 1。

SELECT * FROM Records

会返回所有未删除的记录。

答案 7 :(得分:0)

简单来说就是

在SQL中,视图是虚拟表

基于SQL的结果集

言。

视图包含行和列

像一张真正的桌子。一个字段

视图是来自一个或多个真实的字段

数据库中的表。

您可以添加SQL函数,WHERE和

JOIN语句到视图和呈现

数据好像数据即将到来

来自一张桌子。

除此之外,您可以在table的基础view中插入行,前提是视图引用了唯一的一个表,而视图中未引用的列允许空值。

答案 8 :(得分:0)

视图是预定义某些查询的一种方式。它可以像表一样查询,由查询而不是一组磁盘数据定义。查询它可以查询表的结果。

在大多数情况下,查询视图可以看作等同于将视图的定义查询用作主查询中的子查询。视图允许查询更短且更模块化(因为公共部分在视图中单独定义)。它们还提供了优化的机会(尽管并非所有数据库都这样做;我不确定MySQL是否提供任何优化来更快地创建视图)。

如果更新基础表,则针对视图的查询将自动反映这些更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值