SQLServer 匯出資料庫表結構

2021-07-10 19:00:43 字數 1799 閱讀 1362

sql語句如下:

select

(case when a.colorder=1 then d.name else '' end)表名,

a.colorder 字段序號,

a.name 欄位名,

(case when columnproperty( a.id,a.name,'isidentity')=1 then '√'else '' end) 標識,

(case when (select count(*)

from sysobjects

where (name in

(select name

from sysindexes

where (id = a.id) and (indid in

(select indid

from sysindexkeys

where (id = a.id) and (colid in

(select colid

from syscolumns

where (id = a.id) and (name = a.name))))))) and

(xtype = 'pk'))>0 then '√' else '' end) 主鍵,

b.name 型別,

a.length 占用位元組數,

columnproperty(a.id,a.name,'precision') as 長度,

isnull(columnproperty(a.id,a.name,'scale'),0) as 小數字數,

(case when a.isnullable=1 then '√'else '' end) 允許空,

isnull(e.text,'') 預設值,

isnull(g.value,'') as 字段說明

from  syscolumns  a left join systypes b

on  a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id  and  d.xtype='u' and  d.name<>'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sys.extended_properties g

on a.id=g.major_id and a.colid = g.minor_id

order by d.name,a.id,a.colorder

現在網上大部分資料都跟這個類似,在這裡對用到的幾個系統表做一下說明:

syscolumns:用來記錄描述資料庫的字段資訊的,id是table表的編號;colid是表中字段編號;xtype是表的物理儲存型別;cdefault是該列的預設值的id(不是預設值);colorder微軟未給出明確說明,不過從字面意思判斷應該是對錶中字段的乙個排序(表設計介面從上到下的乙個排序,一般情況下跟colid相同)。

systypes:儲存了資料庫中所有的資料型別和這些型別的長度。

sysobjects:儲存的是資料庫中所有的約束、檢視、表、儲存過程、觸發器等等,包括這些東西的建立時間,同時這是一張自關聯表。

syscomments:儲存的是所有檢視、規則、預設值、觸發器、check 約束、default 約束和儲存過程的詳細內容(包括詳細內容的16進製制),在這裡用來查詢欄位的預設值。

extended_properties:儲存的是表中每個欄位的說明,說明欄位的用途,在sqlserver早些的版本中是沒有這個表的,以前的表名稱是sysproperties(這個名字改的讓很多人蛋疼。。。)

sqlserver怎麼匯出資料庫

材料 工具 sql server 1 開啟sql server,找到需要匯出的資料庫。2 在需要匯出的資料庫上右擊,選擇任務選項中的匯出資料選項。3 sql server匯入和匯出嚮導視窗中,單擊下一步按鈕。4 選擇資料來源對話方塊中,選擇資料來源選項中的microsoft ole db provi...

匯出SQL Server資料庫表中字段的說明 備註

use 庫名 select 表名 case when a.colorder 1then d.name else end 表說明 case when a.colorder 1then isnull f.value,else end 字段序號 a.colorder,欄位名 a.name,字段說明 isn...

匯出sqlserver資料庫設計語句

select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,字段說明 isnull g...