如何获取数据库中表名、字段名、字段属性信息?

如题我需要获取表名,字段名,字段属性(类型,文字长度,备注)信息,用代码如何获取?下面的答案有点看不懂不知道那些是关键字哪些是通配符... 如题我需要获取表名,字段名,字段属性(类型,文字长度,备注)信息,用代码如何获取?
下面的答案有点看不懂 不知道那些是关键字 哪些是通配符
展开
 我来答
qnnsdx
推荐于2016-08-20 · TA获得超过591个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:594万
展开全部
如果是db2 的表名:
list tables
得到每一个表的详细信息字段名,字段属性(类型,文字长度,备注)
describe table 具体的表名

平时我就这么获得这些信息
百度网友0255e73
2006-07-26 · TA获得超过403个赞
知道小有建树答主
回答量:549
采纳率:0%
帮助的人:463万
展开全部
获取当前数据库表名:
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cestode
2006-07-26 · 超过16用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
我找到并在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 日期/时间

无聊~~

参考资料: http://zhidao.baidu.com/question/4030560.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式