获取SQL数据库、表、视图、列信息

 --获取表的名称及用表中第一列的注释作表的说明,形成响应的SQL语句
select 'delete from ',Name2 ,'--',RANK()OVER  (ORDER BY Name2 DESC) as 序号,字段说明 from 
(
select bb.name as Name2,cc.* from (

select min(minor_id) as minor_id,id from (
SELECT g.minor_id minor_id,a.Name as Name ,a.Length as Len,b.Name as [Type],ISNULL(g.[value], '') AS 字段说明 ,a.id
--select * 
FROM  syscolumns as a     
left join systypes b on a.xusertype=b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U'
 AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT 
OUTER JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id AND
 g.name = 'MS_Description' LEFT OUTER JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
 AND f.name = 'MS_Description'where b.Name <> 'sysname' --group by a.id
--AND a.id=object_id('dbo.T_CarInfo')
) gg group by id

)as cc
,
(
SELECT name,id FROM sysobjects where xtype= 'u ') as bb
where bb.id=cc.id
) as dA LEFT JOIN
(
SELECT g.minor_id minor_id,a.Name as Name ,a.Length as Len,b.Name as [Type],ISNULL(g.[value], '') AS 字段说明, a.id as idd,CRDATE
--select * 
FROM  syscolumns as a     
left join systypes b on a.xusertype=b.xusertype INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U'
 AND d.status >= 0 LEFT OUTER JOIN dbo.syscomments e ON a.cdefault = e.id LEFT 
OUTER JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id AND
 g.name = 'MS_Description' LEFT OUTER JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
 AND f.name = 'MS_Description'where b.Name <> 'sysname'

as dB ON dA.minor_id=dB.minor_id and id=idd

----选择master数据库,查询所有数据库名称
select name,filename from sysdatabases order by name
----选择具体的数据库,查询数据库包含的表
select [name] from sysobjects where xtype='U'and [name]<>'dtproperties' order by [name]
----查询数据库的视图
select [name] from sysobjects where xtype='V' and [name]<>'syssegments' and [name]<>'sysconstraints' order by [name]
----查询表、视图信息
select [name],xtype from sysobjects where (xtype='U'or xtype='V') and [name] not in ('sysdiagrams','') order by [name]
--查询视图对应的表名
select Table_Name from INFORMATION_SCHEMA.VIEW_TABLE_USAGE where View_Name='V_AMeals'--视图名称

--查询一张表、视图的具体信息
SELECT 
colorder=C.column_id,
ColumnName=C.name,
TypeName=T.name, 
Length=CASE WHEN T.name='nchar' THEN C.max_length/2 WHEN T.name='nvarchar' THEN C.max_length/2 ELSE C.max_length END,
Preci=C.precision, 
Scale=C.scale, 
IsIdentity=CASE WHEN C.is_identity=1 THEN N'√'ELSE N'' END,
isPK=ISNULL(IDX.PrimaryKey,N''),
Computed=CASE WHEN C.is_computed=1 THEN N'√'ELSE N'' END, 
IndexName=ISNULL(IDX.IndexName,N''), 
IndexSort=ISNULL(IDX.Sort,N''), 
Create_Date=O.Create_Date,
 Modify_Date=O.Modify_date, 
cisNull=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END, 
defaultVal=ISNULL(D.definition,N''), 
deText=ISNULL(PFD.[value],N'') 
FROM sys.columns C 
INNER JOIN sys.objects O 
ON C.[object_id]=O.[object_id] 
AND (O.type='U' or O.type='V')
 AND O.is_ms_shipped=0 
INNER JOIN sys.types T 
ON C.user_type_id=T.user_type_id
 LEFT JOIN sys.default_constraints D 
ON C.[object_id]=D.parent_object_id 
AND C.column_id=D.parent_column_id 
AND C.default_object_id=D.[object_id] 
LEFT JOIN sys.extended_properties PFD 
ON PFD.class=1  
AND C.[object_id]=PFD.major_id  
AND C.column_id=PFD.minor_id 
LEFT JOIN sys.extended_properties PTB 
ON PTB.class=1 
AND PTB.minor_id=0  
AND C.[object_id]=PTB.major_id 
LEFT JOIN 

SELECT  
IDXC.[object_id], 
IDXC.column_id,
 Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending') 
WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
 PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END, 
IndexName=IDX.Name 
FROM sys.indexes IDX 
INNER JOIN sys.index_columns IDXC 
ON IDX.[object_id]=IDXC.[object_id] 
AND IDX.index_id=IDXC.index_id 
LEFT JOIN sys.key_constraints KC 
ON IDX.[object_id]=KC.[parent_object_id] 
AND IDX.index_id=KC.unique_index_id 
INNER JOIN  

SELECT [object_id], Column_id, index_id=MIN(index_id) 
FROM sys.index_columns 
GROUP BY [object_id], Column_id 
) IDXCUQ 
ON IDXC.[object_id]=IDXCUQ.[object_id] 
AND IDXC.Column_id=IDXCUQ.Column_id 
AND IDXC.index_id=IDXCUQ.index_id 
) IDX 
ON C.[object_id]=IDX.[object_id]
 AND C.column_id=IDX.column_id  
WHERE O.name=N'T_AMeals' --表名、视图名
ORDER BY O.name,C.column_id 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值