如何在sqlserver中获取表的所有列信息

如何在sqlserver中获取表的所有列信息,第1张

microsoft sql server management studio中展开对应表下面的列信息不就可以看到列的详细信息了么?当然这是可以的,但这里我们主要讲的时如何利用sql语句来查询指定表的列信息。

利用sql语句来查询列信息,就是要用到系统视图sys.columns,这个视图记录了数据库中所有表,视图,表值函数等的所有列信息。我们可以利用语句select * from sys.columns来查看这个视图返回的信息。

sys.columns返回的列比较多,大部分情况下很多列的信息我们可能用不到,下面我们只解释一下比较常用的列的信息。

1,object_id--这个列是比较重要的,它是返回当前列所属表的ID。利用它,我们就可以查询指定表的所有列信息,比如下面的sql语句是查询表table1的所有列信息。

select * from sys.columns where object_id=object_id('table1')

2,name--该列的列名。

3,column_id--该列在数据库中的ID,注意,数据库中任何对象的ID都是唯一的。

4,system_type_id--该列的类型的ID,和下面max_length,precision,scale三列一起可以来举个示例。

5,max_length--该列的最大长度

6,precisionp--如果这列是数值列,那么这是该列的精度,否则就是0

7,scale--如果这列是数值列,那么这就是列的小数位数,否则就是0

system_type_id,max_length,precision,scale四列结合系统视图sys.types一起我们来举个示例。

如果我们要查询表table1的所有列,及列的类型,列的精度,列的小数位数,sql语句如下:

select a.name,b.name,a.max_length,a.precision,a.scale

from sys.columns a left join sys.types b on a.user_type_id=b.user_type_id

where a.object_id=object_id('table1')

8,is_nullable--该列是否可以为null

9,is_identity--该列是否是标识列

10,is_computed--该列是否是计算列。利用该列,我们也就可以查询某个表的所有计算列了,比如我们要查询表table1中的所有计算列,sql语句如下:

select * from sys.columns where object_id=object_id('table1') and is_computed=1

sys.columns视图中常用的列就是这10列了,其它列的信息大家可以到SQLServer 2005联机丛书中查询。

<%

dsn = "dsn=dsnname"

const adschematables = 20

adschemacolumns = 4

set oconn = server.createobject("adodb.connection")

oconn.open dsn

set rstschema = oconn.openschema(adschemacolumns)

response.write "<table>"

response.write "<tr><td>table 

name</td><td>field name</td><td>field 

type</td><td>is nullable</td><td>field 

size</td></tr>"

tablename=""

do until rstschema.eof

response.write "<tr><td>" 

if rstschema("table_name") <> tablename then

response.write rstschema("table_name")

tablename = rstschema("table_name")

else

response.write " "

end if

response.write "</td><td>"& rstschema("column_name") & "</td><td>" 

select case rstschema("data_type")

case "130"

if rstschema("character_maximum_length") = 1073741823 then

response.write "memo"

else

response.write "text"

end if

case 135

response.write "date/time"

case 3

response.write "long integer"

case 11

response.write "yes/no"

case 131

response.write "currency"

case else

response.write rstschema("data_type")

end select

response.write "</td><td>" & rstschema("is_nullable") & "</td><td>" 

if rstschema("character_maximum_length") <> 1073741823 then

response.write rstschema("character_maximum_length")

else

response.write " "

end if

response.write "</td></tr>"

rstschema.movenext

loop

response.write "</table>"

%>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9960064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存