在使用sql server進行表管理時,可以通過sql語句來獲取 表相關的結構
主要用到的是
sys.sysobjects 數據庫對象表。包括 表名對象 、表的約束等,都存在這張表上
sys.syscolumns 數據庫所有物理表的列 存儲所有表的列
sys.syscomments 默認值信息表 主要存儲了表的列的默認值
sys.extended_properties 擴展屬性 列的相關擴展屬性,像 列字段的說明等
select
TB.[Name] As TableID, TC.[name] As FieldName, TC.[colorder] As ColID,
(Case When TK.TABLE_NAME Is not Null Then 'Y' Else 'N' End) As PrimaryKey,
(Case When TK.TABLE_NAME Is not Null Then (Case When COLUMNPROPERTY( TC.id,TC.name,'IsIdentity')=1 Then 'Identity' Else 'customer' END) Else '' End) As PrimaryKeyType,
(Case TC.xtype When 231 Then 'nvarchar' When 61 Then 'datetime' When 175 Then 'char' When 56 Then 'int' When 99 Then 'ntext' when 108 Then 'numeric'when 34 Then 'image' Else null End) As FieldDbType,
(Case When TC.xtype = 231 Then TC.[length]/2 Else 1 End) As Length,
(Case TC.[isnullable] When 0 Then 'N' Else 'Y' End) As Nullable,
SUBSTRING(TM.text,4 , len(TM.text)-5) As DefaultValue,
TE.value AS Remarks
from sys.sysobjects TB --ob 所以取B 表示對象
left join sys.syscolumns TC on TB.id = TC.id --Column 列 就取 TC替代
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