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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取数据库中表名、字段名、字段属性信息?相关的知识,希望对你有一定的参考价值。

如题我需要获取表名,字段名,字段属性(类型,文字长度,备注)信息,用代码如何获取?
下面的答案有点看不懂 不知道那些是关键字 哪些是通配符

如果是db2 的表名:
list tables
得到每一个表的详细信息字段名,字段属性(类型,文字长度,备注)
describe table 具体的表名

平时我就这么获得这些信息
参考技术A 获取当前数据库表名:
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
参考技术B 我找到并在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

以上是关于如何获取数据库中表名、字段名、字段属性信息?的主要内容,如果未能解决你的问题,请参考以下文章

简单sql注入(手注)

04_属性名和字段名不一致

mybatis 解决属性名和字段名不一致

如何修改数据表的表名、字段名、字段属性等信息?

在ASP中SQL语句中表名或列名为啥要加中括号

MYSQL获取一个表所有字段名的最佳办法是啥?