在MySQL

时间:2015-11-17 01:37:06

标签: mysql sql

这实际上是一个两部分问题。

首先:我想知道是否有办法在我刚创建的视图中显示信息。我无法在线找到任何类似于可用于视图的DISPLAY Tables查询。

创建我的视图的查询是:

创建视图View1 AS 选择 * 来自CustOrder 在哪里shipToName =' Jim Bob'

其次,一旦我发现如何从上面显示特定视图,我该如何找到最高的" paidPrice" (CustOrder表中的一列)?

提前谢谢大家!

2 个答案:

答案 0 :(得分:3)

回答问题1:

SHOW CREATE VIEW view_name;

参考: http://dev.mysql.com/doc/refman/5.7/en/show-create-view.html

答案 1 :(得分:1)

视图只是存储的SELECT语句,但从客户端的角度来看,它们大多等同于真实表。要与您创建的视图进行交互,您可以简单地针对它发出SELECT语句。

-- Regular SELECT statements, no different
-- from querying against a real table.
-- Get all rows from the view
SELECT * FROM View1

-- Get the MAX() value from a column
SELECT MAX(paidPrice) AS maxprice FROM View1

您还可以创建表示多个联接表的视图。这是一种常见的用例,其中经常连接许多表以进行查询。您可以使用视图来处理联接,并仅将某些列公开给某些数据库用户,而不是授予对模式的完全访问权。

CREATE VIEW joinview AS (
  SELECT 
    t1.id,
    t1.col1,
    t1.col2,
    -- The view will only expose the alias
    t1.col3 AS aliased_name,
    -- Use an alias to avoid a column name collision
    t2.col1 AS t2c1, 
    -- The view will expose the column name without the table name
    t2.col99
  FROM 
    t1 INNER JOIN t2 ON t1.id = t2.t1_id
);

现在,视图只会以SELECT查询的形式公开列。您将不再需要引用各个表,因为它会产生平坦的输出。

-- Retrieve 2 columns from the join view
SELECT col99, aliased_name FROM joinview

最后,因为视图就像普通表一样,您也可以将它们连接到其他表或视图。但是在使用连接组装视图时要小心,以确保基础表被适当地编入索引。否则,视图可能表现不佳(就像没有适当索引时执行的普通SELECT查询一样)。