获取数据库所有表名与字段名

1.获取所有数据库名:

Select Name FROM Master..SysDatabases

 

2.获取所有表名:

select name from sysobjects where type='U'

XType='U':表示所有用户表;

XType='S':表示所有系统表;

 

3.获取所有字段名:

Select Name from SysColumns Where id=Object_Id('TableName')  

 

 

 

获取当前数据库表名:

select name from sysobjects where xtype='U'and name<>'dtproperties'

 

获取当前表的字段名及属性:

select a.name, b.xtype,b.name

from syscolumns a

inner  JOIN systypes  b

ON a.xtype=b.xusertype

inner join sysobjects c ON

a.id=c.id AND c.xtype='U' AND c.name<>'dtproperties' where c.name = 表名

 

或:

 

SELECT

表名   = CASE a.colorder WHEN 1 THEN c.name ELSE '' END,

     = a.colorder,

字段名 = a.name,

标识   = CASE COLUMNPROPERTY(a.id,a.name,'IsIdentity') WHEN 1 THEN '' ELSE '' END,

主键   = CASE

WHEN EXISTS (

SELECT *

FROM sysobjects

WHERE xtype='PK' AND 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

)

)

)

)

THEN ''

ELSE ''

END,

类型   = b.name,

字节数 = a.length,

长度   = COLUMNPROPERTY(a.id,a.name,'Precision'),

小数   = CASE ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0)

WHEN 0 THEN ''

ELSE CAST(COLUMNPROPERTY(a.id,a.name,'Scale') AS VARCHAR)

END,

允许空 = CASE a.isnullable WHEN 1 THEN '' ELSE '' END,

默认值 = ISNULL(d.[text],''),

说明   = ISNULL(e.[value],'')

FROM syscolumns a

LEFT  JOIN systypes      b ON a.xtype=b.xusertype

INNER JOIN sysobjects    c ON a.id=c.id AND c.xtype='U' AND c.name<>'dtproperties'

LEFT  JOIN syscomments   d ON a.cdefault=d.id

LEFT  JOIN sysproperties e ON a.id=e.id AND a.colid=e.smallid

ORDER BY c.name, a.colorder

回答者: alby - 魔法师 五级   2006-7-26 11:51

我找到并在ACCESS里测试通过了:

ACCESS里,备注类型用Memo表示,所以改变字段的数据类型为备注的SQL为:

ALTER TABLE user ALTER COLUMN userinfo Memo

对了,如果user表有外键,而且你要修改的字段就是外键的话,你就不能修改啦!

下面给出修改为其它类型的SQL(表为tb,字段为aa):

ALTER TABLE tb ALTER COLUMN aa Byte 数字[字节]

ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型]

ALTER TABLE tb ALTER COLUMN aa Short 数字[整型]

ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度

ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度]

ALTER TABLE tb ALTER COLUMN aa Currency 货币

ALTER TABLE tb ALTER COLUMN aa Char 文本

ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小

ALTER TABLE tb ALTER COLUMN aa Binary 二进制

ALTER TABLE tb ALTER COLUMN aa Counter 自动编号

ALTER TABLE tb ALTER COLUMN aa Memo 备注

ALTER TABLE tb ALTER COLUMN aa Time 日期/时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值