版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/slwsss/article/details/84565536
mysql
select a.table_name,a.COLUMN_NAME name,a.DATA_TYPE type,a.COLUMN_DEFAULT defaultValue,
b.table_comment table_description,a.COLUMN_COMMENT description,
a.CHARACTER_MAXIMUM_LENGTH as length,a.NUMERIC_SCALE as scale,a.NUMERIC_PRECISION 'precision',
a.ORDINAL_POSITION sort,
(case when a.column_key='PRI' then 1 else 0 end) isKey,
(case when (a.column_key='PRI' or a.column_key='UNI') and a.EXTRA='auto_increment' then 1 else 0 end) isId,
(case when a.IS_NULLABLE='yes' or a.IS_NULLABLE=1 then 1 else 0 end) as allowNull
from information_schema.columns a
left join information_schema.tables b on b.TABLE_TYPE='BASE TABLE' and b.TABLE_SCHEMA=a.TABLE_SCHEMA and b.table_name=a.table_name
where a.table_schema='`+ dbName +`'
order by a.TABLE_NAME,a.ORDINAL_POSITION
mssql
SELECT
table_name/*表名*/ = d.name,
table_description/*表说明*/ = f.value,
sort/*字段序号*/ = a.colorder,
name/*字段名*/ = a.name,
isId/*标识*/ = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then convert(bit,1) else convert(bit,0) end,
isKey/*主键*/ = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then convert(bit,1) else convert(bit,0) end,
type/*类型*/ = b.name,
length/*占用字节数*/ = a.length,
precision/*长度*/ = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
scale/*小数位数*/ = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
allowNull/*允许空*/ = case when a.isnullable=1 then CONVERT(bit,1) else CONVERT(bit,0) end,
defaultValue/*默认值*/ = e.text,
description/*字段说明*/ = g.[value]
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=G.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
order by d.name,a.id,a.colorder
----视图---
select a.table_name,a.COLUMN_NAME name,a.DATA_TYPE type,a.COLUMN_DEFAULT defaultValue,
allowNull=case when a.IS_NULLABLE='yes' then CONVERT(bit,1) else CONVERT(bit,0) end,
length=a.CHARACTER_MAXIMUM_LENGTH,precision=a.NUMERIC_PRECISION,scale=a.NUMERIC_SCALE
from INFORMATION_SCHEMA.COLUMNS a
join INFORMATION_SCHEMA.VIEWS b on b.TABLE_NAME=a.TABLE_NAME
order by b.TABLE_NAME,a.ORDINAL_POSITION
sqlite
var tables = db.query(`select name,sql from sqlite_master where type='table'`);
for (var tb of tables) {
var fs = db.query('pragma table_info(' + tb.name + ')');
tb.fields = fs.map(p => { return { table_name: tb.name, name: p.name, type: p.type, isKey: !!p.pk, allowNull: !!!p.notnull, defaultValue: p.dflt_value, isId: new RegExp('\\[' + p.name + '\\][^,]+?AUTOINCREMENT', 'ig').test(tb.sql) } });
delete tb.sql;
}
console.log(JSON.stringify(tables));