SQL Server中 sysobjects、sysolumns、systypes
最近在寫工作室的開發框架,其中需要讀取資料庫資訊用來自動生成增刪改查程式碼,經過查閱資料發現sysobjects、sysolumns、systypes可以滿足要求。
1、sysobjects
系統物件表。 儲存當前資料庫的物件,如約束、預設值、日誌、規則、儲存過程等
在大多數情況下,對你最有用的兩個列是Sysobjects.name和Sysobjects.xtype。前面一個用來列出待考察物件的名字,而後一個用來定義物件的型別
列名 | 資料型別 | 描述 |
---|---|---|
name | sysname | 物件名。 |
Id | int | 物件標識號。 |
xtype |
char(2) |
物件型別。可以是下列物件型別中的一種:
C = CHECK 約束 |
uid | smallint | 所有者物件的使用者 ID。 |
info | smallint | 保留。僅限內部使用。 |
status |
int |
保留。僅限內部使用。 |
base_schema_ ver |
int | 保留。僅限內部使用。 |
replinfo | int | 保留。供複製使用。 |
parent_obj | int | 父物件的物件標識號(例如,對於觸發器或約束,該標識號為表 ID)。 |
crdate | datetime | 物件的建立日期。 |
ftcatid | smallint | 為全文索引註冊的所有使用者表的全文目錄識別符號,對於沒有註冊的所有使用者表則為 0。 |
schema_ver | int | 版本號,該版本號在每次表的架構更改時都增加。 |
stats_schema_ ver |
int | 保留。僅限內部使用。 |
type |
char(2) |
物件型別。可以是下列值之一:
C = CHECK 約束 |
userstat | smallint | 保留。 |
sysstat | smallint | 內部狀態資訊。 |
indexdel | smallint | 保留。 |
refdate | datetime | 留作以後使用。 |
version | int | 留作以後使用。 |
deltrig | int | 保留。 |
instrig | int | 保留。 |
updtrig | int | 保留。 |
seltrig | int | 保留。 |
category | int | 用於釋出、約束和標識。 |
cache | smallint | 保留。 |
2、sysolumns
當前資料庫的所有欄位都保留在裡面。
重要欄位解釋:
sysColumns (
name sysname, --欄位名稱
id int, --該欄位所屬的表的ID
xtype tinyInt, --該欄位型別,關聯sysTypes表
length smallint, --該欄位物理儲存長度
...
)
3、SQL中的sysobjects與syscolumns
檢視所有表名:
select name from sysobjects where type='U'
查詢表的所有欄位名:
Select name from syscolumns Where ID=OBJECT_ID('表名')
int object_id('objectname');
此方法返回資料庫物件標識號。
其中,引數objectname 表示要使用的物件,其資料型別為nchar或char(如果為char,系統將其轉換為nchar)
返回型別為int,表示該物件在系統中的編號。
比如:
use wf_timesheet
select object_id('usp_check_excess_hours')
select * from dbo.sysobjects where id = object_id(N'[dbo].[COMPANY_REL]')
(N'' 代表 Unicode型別.可以支援不同語種的物件名)
SQL SERVER 資料庫系統表systypes儲存了欄位型別
感謝原作者無私奉獻,點選檢視原文