查詢某個表是否存在:
在實際應用中可能需要刪除某個表,在刪除之前最好先判斷一下此表是否存在,以防止返回錯誤信息。在SQL SERVER中可通過以下語句實現:
IF OBJECT_ID(N'表名稱', N'U') IS NOT NULL
DROP TABLE 表名稱;
注意,普通表和臨時表的使用差別:
若希望刪除TEST庫中的dbo.TestTable表,直接將dbo.TestTable作為表名即可。
若希望刪除臨時表dbo.#temp_table,需要以tempdb.dbo.#temp_table作為表名。
查詢表上的某個索引是否存在:
通常情況下,為了提高數據的查詢效率,我們會為表的特定字段創建索引,同一個表上的索引名稱是不同的。那么如何判斷某個表是否已經存在特定名稱的索引了呢?可通過下面的語句判斷:
SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(@tname, N'U') and NAME=@iname
其中:@tname表示建索引的表名,@iname表示索引名。
擴展知識
在每一個數據庫中都有sys.sysobjects用於包括在數據庫中創建的每個對象(例如約束、默認值、日志、規則以及存儲過程)。詳細的說明信息參看MSDN上的幫助文檔:sys.sysobjects
OBJECT_ID的作用是返回架構范圍內對象的數據庫對象標識號。如果找不到數據庫或對象的名稱,例如相應名稱不存在或拼寫不正確,則會返回NULL。詳細的說明信息參看MSDN上的幫助文檔:object_id
sys.indexes用於保存每個表格對象(例如,表、視圖或表值函數)的索引或堆,詳細的說明信息參看MSDN上的幫助文檔:sys.indexes