官方對sys.objects的定義:在數據庫中建立的每一個用戶定義的架構做用域內的對象在該表中均對應一行。 sql
這種翻譯,真心的無力吐槽。咱們用中文再翻譯下這句中文:你在庫中建立一張表,這裏就會記錄一條。 數據庫
執行腳本看下它的樣子。 架構
SELECT * FROM sys.objects
序號 | 列名 | 數據類型 | 說明 |
1 | name | sysname | 對象名。 |
2 | object_id | int | 對象標識號。 在數據庫中是惟一的。 |
3 | principal_id | int | 若是不是架構全部者,則爲單個全部者的 ID。 默認狀況下,架構包含的對象由架構全部者擁有。 不過,經過使用 ALTER AUTHORIZATION 語句更改全部權能夠指定備用全部者。 若是沒有備用的單個全部者,則爲 NULL。若是對象類型爲下列類型之一,則爲 NULL: C = CHECK 約束 D = DEFAULT(約束或獨立) F = FOREIGN KEY 約束 PK = PRIMARY KEY 約束 R = 規則(舊式,獨立) TA = 程序集(CLR 集成)觸發器 TR = SQL 觸發器 UQ = UNIQUE 約束 |
4 | schema_id | int | 包含該對象的架構的 ID。始終包含在sys或INFORMATION_SCHEMA架構中的架構做用域內的系統對象。 |
5 | parent_object_id | int | 此對象所屬對象的 ID。 0 = 不是子對象。 |
6 | type | char(2) | 對象類型: AF = 聚合函數 (CLR) C = CHECK 約束 D = DEFAULT(約束或獨立) F = FOREIGN KEY 約束 FN = SQL 標量函數 FS = 程序集 (CLR) 標量函數 FT = 程序集 (CLR) 表值函數 IF = SQL 內聯表值函數 IT = 內部表 P = SQL 存儲過程 PC = 程序集 (CLR) 存儲過程 PG = 計劃指南 PK = PRIMARY KEY 約束 R = 規則(舊式,獨立) RF = 複製篩選過程 S = 系統基表 SN = 同義詞 SO = 序列對象 適用範圍:SQL Server 2012 到 SQL Server 2016。 SQ = 服務隊列 TA = 程序集 (CLR) DML 觸發器 TF = SQL 表值函數 TR = SQL DML 觸發器 TT = 表類型 U = 表(用戶定義類型) UQ = UNIQUE 約束 V = 視圖 X = 擴展存儲過程 |
7 | type_desc | nvarchar(60) | 對對象類型的說明: AGGREGATE_FUNCTION CHECK_CONSTRAINT CLR_SCALAR_FUNCTION CLR_STORED_PROCEDURE CLR_TABLE_VALUED_FUNCTION CLR_TRIGGER DEFAULT_CONSTRAINT EXTENDED_STORED_PROCEDURE FOREIGN_KEY_CONSTRAINT INTERNAL_TABLE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT REPLICATION_FILTER_PROCEDURE RULE SEQUENCE_OBJECT 適用範圍:SQL Server 2012 到 SQL Server 2016。 SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION SQL_SCALAR_FUNCTION SQL_STORED_PROCEDURE SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER SYNONYM SYSTEM_TABLE TABLE_TYPE UNIQUE_CONSTRAINT USER_TABLE View |
8 | create_date | datetime | 對象的建立日期。 |
9 | modify_date | datetime | 上次使用 ALTER 語句修改對象的日期。 若是對象爲表或視圖,則建立或修改表或視圖的彙集索引時,modify_date 也會隨之更改。 |
10 | is_ms_shipped | bit | 對象由內部 SQL Server 組件建立。 |
11 | is_published | bit | 對象爲發佈對象。 |
12 | is_schema_published | bit | 僅發佈對象的架構。 |
3.1 你能夠用下面的命令列出感興趣的全部對象 函數
SELECT * FROM sysobjects WHERE xtype = <type of interest> SELECT * FROM sysobjects WHERE xtype = 'V' --例如:查看視圖3.2 判斷數據庫中是否已經存在某個表,有的話就刪除該表
----方法一: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and type='U')) drop table [dbo].[表名] ----方法二: if exists (Select * From sysObjects Where type='U' And Name='表名')) drop table [dbo].[表名]通常建議不要更新此表,可是查詢仍是OK的。