📜  Oracle视图

📅  最后修改于: 2020-11-15 03:27:03             🧑  作者: Mango

Oracle视图

在Oracle中,视图是实际上并不存在的虚拟表。它存储在Oracle数据字典中,不存储任何数据。可以在调用时执行。

通过连接一个或多个表的查询创建视图。

Oracle创建视图

句法:

CREATE VIEW view_name AS
SELECT columns
FROM tables
WHERE conditions;

参数:

  • view_name:它指定要创建的Oracle VIEW的名称。

例:

让我们以创建视图为例。在此示例中,我们将首先创建两个表供应商和订单。

供应商表:

 
CREATE TABLE  "SUPPLIERS"
   (    "SUPPLIER_ID" NUMBER, 
    "SUPPLIER_NAME" VARCHAR2(4000), 
    "SUPPLIER_ADDRESS" VARCHAR2(4000)
   )
/
 

订单表:

CREATE TABLE  "ORDERS" 
   (    "ORDER_NO." NUMBER, 
    "QUANTITY" NUMBER, 
    "PRICE" NUMBER
   )
/

执行以下查询以创建视图名称sup_orders。

创建视图查询:

CREATE VIEW sup_orders AS
SELECT suppliers.supplier_id, orders.quantity, orders.price
FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = supplier_id
WHERE suppliers.supplier_name = 'VOJO';
View created.
0.21 seconds

现在,您可以通过以下查询检查Oracle VIEW:

SELECT * FROM sup_orders;
SUPPLIER_ID    QUANTITY    PRICE
  3             35              70
  3             26             125
  3             18             100
3 rows returned in 0.00 seconds

Oracle更新视图

在Oracle中,CREATE OR REPLACE VIEW语句用于修改Oracle VIEW的定义而不删除它。

句法:

CREATE OR REPLACE VIEW view_name AS
  SELECT columns
  FROM table
  WHERE conditions; 

例:

执行以下查询以更新名为sup_orders的Oracle VIEW的定义,而不删除它。

CREATE or REPLACE VIEW sup_orders AS
  SELECT suppliers.supplier_id, orders.quantity, orders.price
  FROM suppliers
  INNER JOIN orders
  ON suppliers.supplier_id = supplier_id
  WHERE suppliers.supplier_name = 'HCL';

现在,您可以通过以下查询检查Oracle VIEW:

SELECT * FROM sup_orders;

输出:

SUPPLIER_ID    QUANTITY    PRICE
      1             35             70
      1             26            125
      1             18            100
row(s) 1 - 3 of 3        

Oracle DROP VIEW

DROP VIEW语句用于完全删除或删除VIEW。

句法:

DROP VIEW view_name;

例:

DROP VIEW sup_orders;