sql server 数据库系统表及表结构查询
sysobjects 表结构:
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名,常用列 |
id | int | 对象标识号 |
xtype | char(2) |
对象类型,常用列。 xtype 可以是下列对象类型中的一种: D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) X = 扩展存储过程 |
uid | smallint | 所有者用户对象编号 |
info | smallint | 保留。仅限内部使用 |
status | int | 保留。仅限内部使用 |
base_schema_ ver | int | 保留。仅限内部使用 |
replinfo | int | 保留。供复制使用 |
parent_obj | int | 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。 |
crdate | datetime | 对象的创建日期。 |
ftcatid | smallint | 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0 |
schema_ver | int | 版本号,该版本号在每次表的架构更改时都增加。 |
stats_schema_ ver | int | 保留。仅限内部使用。 |
type | char(2) |
对象类型。可以是下列值之一: D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 IF = 内嵌表函数 K = PRIMARY KEY 或 UNIQUE 约束 P = 存储过程 R = 规则 RF = 复制筛选存储过程 TF = 表函数 TR = 触发器 U = 用户表 V = 视图 X = 扩展存储过程 |
userstat | smallint | 保留。 |
sysstat | smallint | 内部状态信息 |
indexdel | smallint | 保留 |
refdate | datetime | 留用 |
version | int | 保留 |
deltrig | int | 保留 |
instrig | int | 保留 |
updtrig | int | 保留 |
seltrig | int | 保留 |
category | int | 用于发布、约束和标识 |
cache | smallint | 保留 |
1.所有数据库名称
-
-
-
select name from sys.databases where name not in ('master','model','msdb','tempdb')
-
-
2. 查看某数据库的所有表
-
select objects.name
-
from [CRM].sys.objects
-
inner join [CRM].dbo.sysindexes on objects.object_id=sysindexes.id
-
and sysindexes.indid<=1
-
where type='U'
-
order by objects.name
3.查看表结构
-
SELECT
-
表名 = case when a.colorder=1 then d.name else '' end,
-
表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
-
字段序号 = a.colorder,
-
字段名 = a.name,
-
标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
-
主键 = 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 '√' else '' end,
-
类型 = b.name,
-
占用字节数 = a.length,
-
长度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
-
小数位数 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
-
允许空 = case when a.isnullable=1 then '√'else '' end,
-
默认值 = isnull(e.text,''),
-
字段说明 = isnull(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' and d.name<>'dtproperties'
-
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
-
--where d.name= 'Activities' --如果只查询指定表,加上此条件
-
order by a.id,a.colorder
4.各字段元数据
-
-
select * from sys.dm_exec_describe_first_result_set (N'SELECT * FROM dbo.TabName', NULL, 0)
5.索引 主键/类型/列 情况
-
;with tb as(
-
SELECT tbl.name AS TableName,i.name AS IndexName,clmns.name AS ColumName,i.is_primary_key AS isPrimaryKey,i.type_desc
-
FROM sys.tables AS tbl
-
INNER JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
-
INNER JOIN sys.index_columns AS ic ON (ic.column_id > 0
-
AND (ic.key_ordinal > 0 or ic.partition_ordinal = 0 or ic.is_included_column != 0))
-
AND (ic.index_id=CAST(i.index_id AS int) AND ic.object_id=i.object_id)
-
INNER JOIN sys.columns AS clmns ON clmns.object_id = ic.object_id and clmns.column_id = ic.column_id
-
WHERE SCHEMA_NAME(tbl.schema_id) = N'dbo'
-
)
-
SELECT DISTINCT TableName,IndexName,isPrimaryKey,type_desc
-
,STUFF((SELECT ','+ColumName FROM tb B WHERE A.TableName=B.TableName AND A.IndexName=B.IndexName FOR XML PATH('')),1,1,'') AS ColumName
-
FROM tb A ORDER BY TableName,IndexName,isPrimaryKey,type_desc