sql server 数据库系统表及表结构查询

sysobjects 表结构:

列名数据类型描述
namesysname对象名,常用列
idint对象标识号
xtypechar(2)

对象类型,常用列。

xtype 可以是下列对象类型中的一种: 
C = CHECK 约束  

D = 默认值或 DEFAULT 约束  

F = FOREIGN KEY 约束  

L = 日志  

FN = 标量函数 
IF = 内嵌表函数   

P = 存储过程   

PK = PRIMARY KEY 约束(类型是 K)   

RF = 复制筛选存储过程 
S = 系统表   

TF = 表函数   

TR = 触发器   

U = 用户表   

UQ = UNIQUE 约束(类型是 K) 
V = 视图   

X = 扩展存储过程

uidsmallint所有者用户对象编号
infosmallint保留。仅限内部使用
statusint保留。仅限内部使用
base_schema_ verint保留。仅限内部使用
 replinfo int保留。供复制使用
 parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
 crdate datetime 对象的创建日期。
 ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0
 schema_ver int 版本号,该版本号在每次表的架构更改时都增加。
 stats_schema_ ver int 保留。仅限内部使用。
typechar(2) 

 对象类型。可以是下列值之一: 
C = CHECK 约束  

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束 
FN = 标量函数

IF = 内嵌表函数  

K = PRIMARY KEY 或 UNIQUE 约束 
L = 日志

P = 存储过程

R = 规则  

RF = 复制筛选存储过程 
S = 系统表  

TF = 表函数

TR = 触发器

U = 用户表

V = 视图

X = 扩展存储过程

 userstatsmallint  保留。
 sysstatsmallint  内部状态信息
 indexdel smallint 保留
 refdate datetime 留用
 versionint  保留
deltrig int  保留
 instrigint  保留
 updtrigint  保留
 seltrigint  保留
 category int 用于发布、约束和标识
 cachesmallint  保留

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  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值