任何人都可以在這裏告訴我VIEW和WITH的區別,因爲我已經搜索了很多地方,我找不到任何關於它的東西。
我的想法是,查看和使用是一樣的,除了看法保存爲一個Schema對象,但我可能是錯的SQL查看和WITH子句之間的區別
回答
SQL視圖和子句非常相似。這裏有一些差異。
視圖在數據庫中創建一個實際對象,並具有關聯的元數據和安全功能。使用語句只是一個單一的查詢的一部分。
在很多數據庫中,視圖都有選項,例如索引它們或「實例化」它們。
使用語句提供了在某些數據庫中有遞歸CTE的機會。這是不可能的意見。
對於納入查詢的簡單子查詢,它們非常相似。這個選擇實際上取決於你是想創建一個可重用的代碼(視圖),還是關注於單個查詢(with)。
幾句話,WITH
是在DML使用條款,VIEW
是一個數據庫對象。查看定義可能包含使用WITH
的查詢。你可以考慮WITH
作爲派生表的是主DML定義,並且有指自身能力的變化(在微軟的術語)或內嵌視圖(在Oracle)(遞歸查詢)
WITH
也在SQLServer的使用在不同的上下文中(查詢提示)。
基本上,視圖的定義保存在數據庫中,可以被任何查詢重用,而WITH子句(或公用表表達式或CTE)綁定到一個特定查詢並且只能通過複製重用。
否則,它們將基本相同。
如果使用遞歸WITH子句,那麼除非視圖定義本身使用WITH子句(這是合法的),否則無法在VIEW中實現相同的結果。
謝謝。視圖的生命週期是無限期的,直到它被明確刪除,因爲它存儲在數據庫中? – Tim
是;視圖定義存儲在系統目錄中,這與CTE不同,它對於單個查詢是私有的(儘管如果它認爲可以提供幫助,沒有什麼可以阻止系統保存CTE,但大多數情況下它可能沒有多大幫助,如果有的話)。 –
- 1. ON子句和sql中的使用子句之間的區別
- 2. SQL語句和子句之間的區別
- 3. #if和if子句之間的區別?
- 4. SQL語句和查詢之間的區別
- 5. 想知道SQL中的'with'和'view'之間的區別
- 6. 子類和類別之間的區別?
- 7. PDO sql語句和正則sql之間的區別?
- 8. Return和Break之間的區別語句
- 9. 'wait'和'@'語句之間的區別
- 10. 語句和函數之間的區別
- 11. 函數和語句之間的區別
- 12. SQL「with」子句
- 13. Sql server DELETE和WITH子句
- 14. 連接中的WHERE和AND子句之間的區別
- 15. LINQ中的IEnumable和IQueryable「Where」子句之間的區別
- 16. 'OR'和'||'之間的區別在SQL中?
- 17. PDO:rowCount()和SQL COUNT(col)之間的區別
- 18. .SQL和.DUMP文件之間的區別
- 19. Apache Spark SQL和MongoDB之間的區別?
- 20. SQL - COALESCE和ISNULL之間的區別?
- 21. PROC SQL和sqldf之間的區別
- 22. mongo db之間的區別和/或子句
- 23. 頂部子句和集合rocount之間的區別
- 24. 離子和Android之間的區別sdk
- 25. SQL查詢之間有什麼區別?
- 26. 主頁和MVC查看主頁之間的區別
- 27. Zend Framework:查看部分和幫助者之間的區別
- 28. 查找和索引之間的區別
- 29. 快速查看utc時區和設備時區之間的區別
- 30. 此WHERE子句和此加入之間有什麼區別?
[WITH CTE vs View]可能的重複(http://stackoverflow.com/questions/1224623/with-common-table-expression-vs-create-view-performance) –