您的位置:首页 > 数据库

列出SQL SERVER 数据库所有表信息的sql 语句

2010-08-30 18:21 459 查看
select (casewhena.colorder=1thend.nameelse''end)表名, a.colorder字段序号, a.name字段名, (casewhenCOLUMNPROPERTY(a.id,a.name,'isidentity')=1then'√'else''end)标识, (casewhen( selectcount(*)fromsysobjects wherenamein( selectnamefromsysindexes where(id=a.id)and(indidin (selectindidfromsysindexkeyswhere (id=a.id)and(colidin( selectcolidfromsyscolumns where(id=a.id)and(name=a.name)))))) and(xtype='PK'))>0then'√'else''end)主键, b.name类型, a.length字节数, COLUMNPROPERTY(a.id,a.name,'PRECISION')as长度, isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)as小数位数, (casewhena.isnullable=1then'√'else''end)允许空, isnull(e.text,'')默认值, isnull(g.[value],'')as字段说明 fromsyscolumnsaleftjoinsystypesb ona.xtype=b.xusertype innerjoinsysobjectsd ona.id=d.idandd.xtype='U'andd.name<>'dtproperties' leftjoinsyscommentse ona.cdefault=e.id leftjoinsyspropertiesg ona.id=g.idanda.colid=g.smallid orderbya.id,a.colorder
从这个sql语句我学到的东西:
1、casewhen...then...else...end:选择语句用在select语句中,可以将原来用0,1这样的描述信息,转换为实际的含义,而不要在程序中根据查询出来的结果再进行判断。这个可以理解为简单的数据格式化吧。如这条sql语句中出现的casewhena.isnullable=1then'√'else''end将数据库从存储的0,1转换为了'√'和'';
2、leftjoin:使用这种连接方式可以使查询结果描述出一种包含关系。
3、isnull函数:ISNULL(check_expression,replacement_value),作用是使用指定的替换值替换NULL,例如下面的SQL语句中如果一本书的名称为null,则将价格设置为0.00。

SELECTSUBSTRING(title,1,15)ASTitle,typeASType,
ISNULL(price,0.00)ASPrice
FROMtitles4、当然,最重要的是学到这个列出数据库表信息(包括表名、字段名、是否标识、是否主键、字段类型、字节数、长度、小数位数、允许空、默认值、字段说明)的SQL语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐