- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - INSERT 查詢
- SQL - SELECT 查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查詢
- SQL - DELETE 查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION 與 UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - INNER JOIN
- SQL - LEFT JOIN
- SQL - RIGHT JOIN
- SQL - CROSS JOIN
- SQL - FULL JOIN
- SQL - 自連線
- SQL - DELETE JOIN
- SQL - UPDATE JOIN
- SQL - LEFT JOIN 與 RIGHT JOIN
- SQL - UNION 與 JOIN
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - CHECK 約束
- SQL - DEFAULT 約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY 與 ORDER BY
- SQL - IN 與 EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 使用檢視
檢視只不過是儲存在資料庫中並具有關聯名稱的 SQL 語句。檢視實際上是以預定義的 SQL 查詢形式組成的表。
檢視可以包含表的所有行或表的選定行。檢視可以從一個或多個表建立,這取決於編寫用於建立檢視的 SQL 查詢。
檢視是一種虛擬表,允許使用者執行以下操作:
以使用者或使用者類別認為自然或直觀的方式組織資料。
以某種方式限制對資料的訪問,以便使用者只能看到(有時)修改他們需要的內容,而不會更多。
彙總來自多個表的資料,可用於生成報表。
建立檢視
資料庫檢視使用CREATE VIEW語句建立。檢視可以從單個表、多個表或另一個檢視建立。
要建立檢視,使用者必須根據具體的實現擁有相應的系統許可權。
基本的CREATE VIEW語法如下:
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
您可以像在普通的 SQL SELECT 查詢中一樣,在 SELECT 語句中包含多個表。
示例
考慮 CUSTOMERS 表具有以下記錄:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
以下是如何從 CUSTOMERS 表建立檢視的示例。此檢視將用於獲取 CUSTOMERS 表中的客戶姓名和年齡。
SQL > CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS;
現在,您可以像查詢實際表一樣查詢 CUSTOMERS_VIEW。以下是一個示例。
SQL > SELECT * FROM CUSTOMERS_VIEW;
這將產生以下結果。
+----------+-----+ | name | age | +----------+-----+ | Ramesh | 32 | | Khilan | 25 | | kaushik | 23 | | Chaitali | 25 | | Hardik | 27 | | Komal | 22 | | Muffy | 24 | +----------+-----+
WITH CHECK OPTION
WITH CHECK OPTION 是 CREATE VIEW 語句的一個選項。WITH CHECK OPTION 的目的是確保所有 UPDATE 和 INSERT 都滿足檢視定義中的條件。
如果它們不滿足條件,則 UPDATE 或 INSERT 將返回錯誤。
以下程式碼塊包含建立具有 WITH CHECK OPTION 的相同檢視 CUSTOMERS_VIEW 的示例。
CREATE VIEW CUSTOMERS_VIEW AS SELECT name, age FROM CUSTOMERS WHERE age IS NOT NULL WITH CHECK OPTION;
在這種情況下,WITH CHECK OPTION 應該拒絕在檢視的 AGE 列中輸入任何 NULL 值,因為檢視是由 AGE 列中沒有 NULL 值的資料定義的。
更新檢視
檢視可以在某些條件下更新,如下所示:
SELECT 子句可能不包含 DISTINCT 關鍵字。
SELECT 子句可能不包含彙總函式。
SELECT 子句可能不包含集合函式。
SELECT 子句可能不包含集合運算子。
SELECT 子句可能不包含 ORDER BY 子句。
FROM 子句可能不包含多個表。
WHERE 子句可能不包含子查詢。
查詢可能不包含 GROUP BY 或 HAVING。
無法更新計算列。
為了使 INSERT 查詢能夠工作,必須在檢視中包含來自基表的所有 NOT NULL 列。
因此,如果檢視滿足上述所有規則,則可以更新該檢視。以下程式碼塊包含一個更新 Ramesh 年齡的示例。
SQL > UPDATE CUSTOMERS_VIEW SET AGE = 35 WHERE name = 'Ramesh';
這最終將更新基表 CUSTOMERS,並且相同的更新將反映在檢視本身中。現在,嘗試查詢基表,SELECT 語句將產生以下結果。
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 35 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
向檢視中插入行
可以將資料行插入到檢視中。應用於 UPDATE 命令的相同規則也適用於 INSERT 命令。
在這裡,我們不能在 CUSTOMERS_VIEW 中插入行,因為我們沒有在此檢視中包含所有 NOT NULL 列,否則您可以像在表中插入行一樣在檢視中插入行。
從檢視中刪除行
可以從檢視中刪除資料行。應用於 UPDATE 和 INSERT 命令的相同規則也適用於 DELETE 命令。
以下是如何刪除 AGE = 22 的記錄的示例。
SQL > DELETE FROM CUSTOMERS_VIEW WHERE age = 22;
這最終將從基表 CUSTOMERS 中刪除一行,並且相同的更新將反映在檢視本身中。現在,嘗試查詢基表,SELECT 語句將產生以下結果。
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 35 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
刪除檢視
顯然,如果不再需要檢視,則需要一種刪除檢視的方法。語法非常簡單,如下所示:
DROP VIEW view_name;
以下是如何從 CUSTOMERS 表中刪除 CUSTOMERS_VIEW 的示例。
DROP VIEW CUSTOMERS_VIEW;