1. 程式人生 > >SQL Server中 sysobjects、sysolumns、systypes

SQL Server中 sysobjects、sysolumns、systypes

最近在寫工作室的開發框架,其中需要讀取資料庫資訊用來自動生成增刪改查程式碼,經過查閱資料發現sysobjects、sysolumns、systypes可以滿足要求。

1、sysobjects 

     系統物件表。 儲存當前資料庫的物件,如約束、預設值、日誌、規則、儲存過程等

       在大多數情況下,對你最有用的兩個列是Sysobjects.name和Sysobjects.xtype。前面一個用來列出待考察物件的名字,而後一個用來定義物件的型別

列名 資料型別 描述
name sysname 物件名。
Id int 物件標識號。
xtype char(2)
物件型別。可以是下列物件型別中的一種:

C = CHECK 約束
D = 預設值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日誌
FN = 標量函式
IF = 內嵌表函式
P = 儲存過程
PK = PRIMARY KEY 約束(型別是 K)
RF = 複製篩選儲存過程
S = 系統表
TF = 表函式
TR = 觸發器
U = 使用者表
UQ = UNIQUE 約束(型別是 K)
V = 檢視
X = 擴充套件儲存過程

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 約束 
D = 預設值或 DEFAULT 約束
F = FOREIGN KEY 約束 
FN = 標量函式
IF = 內嵌表函式
K = PRIMARY KEY 或 UNIQUE 約束 
L = 日誌
P = 儲存過程
R = 規則
RF = 複製篩選儲存過程
S = 系統表 
TF = 表函式
TR = 觸發器
U = 使用者表
V = 檢視
X = 擴充套件儲存過程

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儲存了欄位型別


感謝原作者無私奉獻,點選檢視原文