引用表
回答
這只是如果你有一個關鍵字像[用戶]
如果表名稱中包含關鍵詞,你將不得不將其括在[]一個表名。大多數工具(如ORM)都使用這種技術來避免任何錯誤或保持一致性。
它允許表名中的關鍵字或標點符號。
它經常使用的代碼生成器所有的名字,所以他們沒有弄清楚它是否實際需要。
這些通常拿出生成的代碼 - 因爲它更容易使代碼生成產品完全合格,逃到比推導出什麼逃逸/須資格時的參考。
如果只有一個模式,那麼表名前綴不是必要的或我認爲有用。當您在sql server中有一個保留字的標識符時,使用括號[]很有用。例如,如果您有一個名爲Select的表格,您可以將其作爲SELECT * FROM [Select]
而不是SELECT * FROM Select
。
難道這不會讓你在那裏有任何'壞'物品嗎?
關鍵字,空格等...
我寧願避免在表名和列名中使用標點符號和保留字,也不要使用方括號。這使得SQL更容易閱讀。
,如果你使用的關鍵字模式或表名,我不使用括號,這是隻需要你不應該。
但我會建議不要把dbo放在前面。原因是最終你可能想要開始將你的代碼組織到模式中,然後你需要前綴。如果你養成了使用schema.table格式的習慣,那麼lot會更容易在你的代碼中搜索使用表格的地方。
比方說,你有一個名爲dbo.user表,並決定將其移動到另一個模式。如果你必須通過一堆存儲過程或動態sql搜索「用戶」,你可能會得到大量的誤報。您無法完全確定您是否完成了所需的所有更改。搜索「dbo.user」更加簡潔。
僅當對象名稱包含空格等字符或關鍵字時才需要[]。通常認爲不使用任何這些對象名稱是最佳做法,所以您絕不需要[]。話雖如此,他們也沒有傷害,如果它是生成的代碼,幷包括括號,那麼你可以離開他們。
採用DBO是一個好主意監守
- 性能更好(見here對於一些數字)
- DBO需要在某些情況下,如主叫用戶定義的函數。我認爲總是包括它在內是更加有效的。
- 如果您創建了多個模式,那麼未定義對象名稱將來可能會導致錯誤。
除了空格,保留關鍵字,並且在標識符名稱的系統功能,標識符也可以包含未在regular identifiers允許一些字符,一個它必須用方括號分開。
您可以在this article中找到有關常規和分隔標識符的詳細說明和規則。
從文章:
例如,分隔標識符可以包含空格,任何字符 有效常規標識符,和以下 字符中的任何一個:
代字號(〜)連字符, ( - )(!)(。),感嘆號,左括號({),百分比(%), 右括號(}),插入符號(^),單引號('),符號(&),期間,左 括號((),反斜槓(),右括號()),重音符號(`),
使用兩個名稱限定約定可以提高性能(避免名稱解析),並避免在您擁有該名稱的情況下出現歧義。兩個或多個模式中的相同表名。在這種情況下,SQL Server將在dbo中搜索你的對象,如果它不在那裏,它將停止搜索。
此外,如果你以後想使用該對象使用SCHEMABINDING選項不允許不合格的對象名稱。
希望這有助於的
- 1. 引用表和引用表
- 2. 自引用表
- 3. 表中的引用
- 4. 引用表變量
- 5. Linq - 引用子表
- 6. 交叉引用表
- 7. 引用樣式表
- 8. 引用表在Excel
- 9. Code-First引用表
- 10. 交叉表引用
- 11. YAML自引用表
- 12. 絕對錶引用
- 13. 如何引用外鍵表來引用另一個表?
- 14. 引用表中的數據引用不同的表[MVC]
- 15. 引用ASP.NET用戶表
- 16. 引用用戶表單
- 17. 通過索引號引用工作表
- 18. 引用SELECT列表jQuery的
- 19. Mongoengine查詢引用列表
- 20. Linq to Object引用列表
- 21. 來自交叉引用表
- 22. 引用同一張表
- 23. 間接引用表名稱
- 24. SQL交叉引用表
- 25. 多態引用列表
- 26. 外鍵引用繼承表
- 27. 數據庫引用表
- 28. 使用Twitter的引導表
- 29. 如何引用其他表
- 30. 按名稱引用表單
可能重複[什麼用方括號的\ [\] SQL語句?(http://stackoverflow.com/questions/52898/what-is-the-使用的最平方括號 - 在-SQL語句) – bdukes 2014-03-10 14:28:57