sqlserver 查询库内所有表的 列名,是否主键,字段类型,是否自增列,是否允许为空,字段解释,字段序列
时间: 2023-07-25 09:30:17 浏览: 71
您可以使用以下 SQL 查询语句获取 SQL Server 数据库中所有表的列信息:
```
SELECT
c.TABLE_NAME AS '表名',
c.COLUMN_NAME AS '列名',
CASE WHEN k.COLUMN_NAME IS NULL THEN '否' ELSE '是' END AS '是否主键',
c.DATA_TYPE AS '字段类型',
CASE WHEN c.IS_IDENTITY = 1 THEN '是' ELSE '否' END AS '是否自增列',
CASE WHEN c.IS_NULLABLE = 'YES' THEN '是' ELSE '否' END AS '是否允许为空',
e.VALUE AS '字段解释',
c.ORDINAL_POSITION AS '字段序列'
FROM
INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k ON c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME
LEFT JOIN sys.extended_properties e ON c.object_id = e.major_id AND c.column_id = e.minor_id
WHERE
c.TABLE_SCHEMA = 'dbo'
ORDER BY
c.TABLE_NAME, c.ORDINAL_POSITION
```
该查询语句使用了 INFORMATION_SCHEMA.COLUMNS 系统视图和 sys.extended_properties 系统表来获取列信息。其中,左连接 KEY_COLUMN_USAGE 视图可以获取到是否为主键的信息。
您可以将 'dbo' 替换为您所需查询的数据库名。查询结果将按表名和字段序列进行排序。