系统数据库中查询表的所有字段以及描述(2008,2000区分)以及查询表的外键(总结)

/**************************
系统数据库中查询表的所有字段以及描述(2008,2000区分)以及查询表的外键

***************************/
----2008下

-------方法一----表的扩展属性01------
SELECT   *
FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 't_bill_in', 'column', default)

 

SELECT
    CAST(value AS nvarchar(200)) as tableDescription
    FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', 'T_Bill_Cedula_Detail', default, default);

 

 


-----方法二----表的扩展属性描述-----
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,
    标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键       = 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 '√' else '' end,
    类型       = b.name,
    占用字节数 = a.length,
    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空     = case when a.isnullable=1 then '√'else '' end,
    默认值     = isnull(e.text,''),
    字段说明   = isnull(g.[value],'')
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
    dbo.dtproperties  g
on
    a.id=g.id and a.colid=g.objectid 
left join
    dbo.dtproperties  f
on
    d.id=f.id and f.objectid=0
where
    d.name='要查询的表'    --如果只查询指定表,加上此条件
order by
    a.id,a.colorder

----方法03----表字段的描述(简易)
Select
col.[name]  as '字段名',  
col.[length]as '长度'  ,
 type.[name] as '类型'  , 
 pro.value   as '描述' 
 From syscolumns as col 
Left Join systypes as type on col.xtype = type.xtype 
Left Join dbo.dtproperties as pro on col.id = pro.id and col.colid = pro.objectid  
where col.id = (Select id From Sysobjects Where name = 'T_DeptClass')

 

 

 


---2000下------------------------
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,
    标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键       = 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 '√' else '' end,
    类型       = b.name,
    占用字节数 = a.length,
    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空     = case when a.isnullable=1 then '√'else '' end,
    默认值     = isnull(e.text,''),
    字段说明   = isnull(g.[value],'')
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
    sysproperties g
on
    a.id=g.id and a.colid=g.smallid 
left join
    sysproperties f
on
    d.id=f.id and f.smallid=0
where
    d.name='要查询的表'    --如果只查询指定表,加上此条件
order by
    a.id,a.colorder

=-----------方法02---表的描述2000下----
Select
col.[name]  as '字段名',  
col.[length]as '长度'  ,
 type.[name] as '类型'  , 
 pro.value   as '描述' 
 From syscolumns as col 
Left Join systypes as type on col.xtype = type.xtype 
Left Join sysProperties as pro on col.id = pro.id and col.colid = pro.smallid 
where col.id = (Select id From Sysobjects Where name = 'T_DeptClass')

 

 

 


-----------------查询一个表的所有外键
SELECT 主键列ID=b.rkey
    ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
    ,外键表ID=b.fkeyid
    ,外键表名称=object_name(b.fkeyid)
    ,外键列ID=b.fkey
    ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
    ,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade')
    ,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade')
FROM sysobjects a
    join sysforeignkeys b on a.id=b.constid
    join sysobjects c on a.parent_obj=c.id
where a.xtype='f' AND c.xtype='U'
    and object_name(b.rkeyid)='titles'

SELECT *
FROM information_schema.columns
WHERE TABLE_CATALOG='数据库名'
    AND TABLE_NAME = '表名'
    AND COLUMN_NAME='列名'

select *
from syscolumns
where id=object_id('tableName') and name='fieldName'

 

 

 

 

 

------------2005以及2008中,查询表的字段---------------------

DECLARE @tableName nvarchar(100)
SET @tableName ='tab'
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.major_id WHERE d.name=@tableName
        ORDER BY a.id,a.colorder

 

 


SELECT
    CAST(value AS nvarchar(200)) as tableDescription
    FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', 't_bank', default, default);

 

 

declare @tablename varchar(100)
set @tablename=''
SELECT
       objname
    ,CAST(value AS nvarchar(200)) as fieldDescription
    FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', @TableName , 'column', default) AS E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值