列出SQL SERVER 数据库所有表信息的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 sysproperties g
on a.id = g.id and a.colid = g.smallid
order by a.id ,a.colorder
 

从这个 sql 语句我学到的东西:
1、case when ... then ... else ... end  :选择语句用在 select 语句中,可以将原来用0,1这样的描述信息,转换为实际的含义,而不要在程序中根据查询出来的结果再进行判断。这个可以理解为简单的数据格式化吧。如这条sql 语句中出现的 case when a.isnullable = 1 then '√' else '' end  将数据库从存储的 0,1 转换为了 '√' 和'';
2、left join :使用这种连接方式可以使查询结果描述出一种包含关系。
3、isnull 函数:ISNULL ( check_expression , replacement_value ) ,作用是使用指定的替换值替换 NULL,例如下面的 SQL 语句中如果一本书的名称为 null ,则将价格设置为 0.00。

 

SELECT SUBSTRING(title, 1, 15) AS Title, type AS Type, 
  ISNULL(price, 0.00) AS Price
FROM titles
 
4、当然,最重要的是学到这个列出数据库表信息(包括表名、字段名、是否标识、是否主键、字段类型、字节数、长度、小数位数、允许空、默认值、字段说明)的 SQL 语句。

转载于:https://www.cnblogs.com/pengwenbing/archive/2010/08/30/1812884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值