sqlserver讀取資料庫表結構

2021-10-01 17:58:21 字數 3206 閱讀 7707

在使用sql server進行表管理時,可以通過sql語句來獲取 表相關的結構

主要用到的是

sys.sysobjects資料庫物件表。包括 表名物件 、表的約束等,都存在這張表上

sys.syscolumns 資料庫所有物理表的列儲存所有表的列

sys.syscomments 預設值資訊表主要儲存了表的列的預設值

sys.extended_properties擴充套件屬性列的相關擴充套件屬性,像 列字段的說明等

select 

tb.[name] as tableid, tc.[name] as fieldname, convert(int,tc.[colorder]) as sortindex,

(case when tk.table_name is not null then 'y' else 'n' end) as iskey,

(case when tk.table_name is not null then (case when columnproperty( tc.id,tc.name,'isidentity')=1 then 'identity' else 'customer' end) else null end) as keyrule,

t0.name fieldtype,

(case when tc.length > 0 and t0.name in ('nvhar','nvarchar') then tc.length / 2

when t0.name='ntext' then '2147483646'

else tc.length end) length,

(case tc.[isnullable] when 0 then 'y' else 'n' end) as notnull,

substring(tm.text,4 , len(tm.text)-5) as defaultvalue,

te.value as fielddesc

from sys.sysobjects tb --ob 所以取b 表示物件

left join sys.syscolumns tc on tb.id = tc.id --column 列 就取 tc替代

left join sys.systypes t0 on tc.xtype = t0.xusertype

left join information_schema.key_column_usage tk on tb.[name]= tk.table_name and tk.column_name = tc.[name]

left join sys.syscomments tm on tc.cdefault=tm.id

left join sys.extended_properties te on tc.id=te.major_id and tc.colid=te.minor_id

where tb.[name] = '表名'

order by

tc.id,tc.colorder

想要更改表結構資訊的 可以參照 這篇文章 資料庫 sql server 修改 表結構 指令碼 sql語句

網上扒來的 包含是否為索引 的 sql查詢

select  

a.colorder as colorder,

d.name as tablename,

a.name as fieldname,

convert(int,case when columnproperty( a.id,a.name,'isidentity')=1 then 1 else 0 end) as isindex,

convert(int,case when exists(select 1 from sysobjects where xtype='pk' and parent_obj=a.id and name in (

select name from sysindexes where indid in( select indid from sysindexkeys where id = a.id and colid=a.colid))) then 1 else 0 end) as ispk,

b.name as sqltypename,

a.length as 'length',

convert(int,columnproperty(a.id,a.name,'precision')) as 'size',

convert(int,isnull(columnproperty(a.id,a.name,'scale'),0)) as 'scale',

convert(int,case when a.isnullable=1 then 1 else 0 end) as 'nullable',

convert(varchar(100), isnull(e.text,'')) as defaultval,

convert(varchar(255), isnull(g.[value],'')) as remarks

from

syscolumns a

left join

systypes b

on

a.xusertype=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

left join

sys.extended_properties f

on

d.id=f.major_id and f.minor_id=0

where d.name='表名'

order by

a.id,a.colorder

Python 讀取Sql Server資料庫

created on sep 11,2014 author liu.chunming import pyodbc def get sms operator sectornumber 0 cnxn pyodbc.connect driver server 10.86.9.171 database mc...

SQL Server查詢資料庫表和資料庫字段

在sql server中查詢資料庫表和字段的方式可以有三種 方法一 查詢所有表 select from sys.tables 查詢所有列 select from sys.columns 查詢所有擴充套件屬性,我們在設計資料庫表和字段時寫的中文備註等資訊會儲存在這裡 select from sys.e...

SQLServer 匯出資料庫表結構

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 e...