1. 程式人生 > >SQLServer 表結構相關查詢(快速瞭解資料庫)

SQLServer 表結構相關查詢(快速瞭解資料庫)

學習網址:

http://blog.csdn.net/kk185800961/article/details/8570512 

  1. --  表結構查詢
  2. SELECT
  3.     表名       = casewhen a.colorder=1 then d.nameelse''end,    
  4.     表說明     = casewhen a.colorder=1 thenisnull(f.value,''else''end,    
  5.     欄位序號   = a.colorder,    
  6.     欄位名     = a.name,    
  7.     標識       = casewhen COLUMNPROPERTY( a.id,a.
    name,'IsIdentity')=1 then'√'else''end,    
  8.     主鍵       = casewhen exists(SELECT 1 FROM sysobjects where xtype='PK'and parent_obj=a.id andnamein (    
  9.                      SELECTnameFROM sysindexes WHERE indid inSELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then'√'else''end,    
  10.     型別       = b.name,    
  11.     佔用位元組數 = a.length,    
  12.     長度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),    
  13.     小數位數   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),    
  14.     允許空     = casewhen a.isnullable=1 then'√'else''end,    
  15.     預設值     = isnull(e.text,''),    
  16.     欄位說明   = isnull(g.[value],''
    )    
  17. FROM syscolumns a leftjoin systypes b     
  18. on a.xusertype=b.xusertype    
  19. innerjoin sysobjects d     
  20. on a.id=d.id  and d.xtype='U'and  d.name<>'dtproperties'
  21. leftjoin syscomments e     
  22. on a.cdefault=e.id    
  23. leftjoin sys.extended_properties   g     
  24. on a.id=g.major_id and a.colid=g.minor_id      
  25. leftjoin sys.extended_properties f    
  26. on d.id=f.major_id and f.minor_id=0    
  27. where d.name='tableName'--如果只查詢指定表,加上此條件  
  28. orderby a.id,a.colorder   

  1. --各欄位元資料(資料字典,MSSQL 2012及以上版本)
  2. select * from sys.dm_exec_describe_first_result_set (N'SELECT * FROM dbo.TabName'NULL, 0)  
  3. GO  

  1. --檢視資料庫中所有外來鍵
  2. select oMain.nameAS  [主表名稱]  
  3. ,oSub.nameAS  [子表名稱]  
  4. ,fk.nameAS  [外來鍵名稱]  
  5. ,MainCol.nameAS [主表列名]  
  6. ,SubCol.nameAS [子表列名]  
  7. from sys.foreign_keys fk    
  8. JOIN sys.all_objects oSub  ON (fk.parent_object_id = oSub.object_id)  
  9. JOIN sys.all_objects oMain ON (fk.referenced_object_id = oMain.object_id)  
  10. JOIN sys.foreign_key_columns fkCols ON (fk.object_id = fkCols.constraint_object_id)  
  11. JOIN sys.columns SubCol ON (oSub.object_id = SubCol.object_id    
  12.     AND fkCols.parent_column_id = SubCol.column_id)  
  13. JOIN sys.columns MainCol ON (oMain.object_id = MainCol.object_id    
  14.     AND fkCols.referenced_column_id = MainCol.column_id)  
  1. --(匯出擴充套件屬性指令碼)
  2. SELECT 表名 = d.name,欄位名 = a.name, 欄位說明 = isnull(g.[value],'')   
  3. ,'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N'''+CONVERT(VARCHAR(MAX),g.[value])  
  4. +''',@level0type=N''SCHEMA'',@level0name=N''dbo'',@level1type=N''TABLE'',@level1name=N'''+CONVERT(VARCHAR(MAX),d.name)  
  5. +''',@level2type=N''COLUMN'',@level2name=N'''+CONVERT(VARCHAR(MAX),a.name)+''''
  6. FROM syscolumns a leftjoin systypes b on a.xusertype=b.xusertype      
  7. innerjoin sysobjects d on a.id=d.id  and d.xtype='U'and  d.name<>'dtproperties'
  8. leftjoin syscomments e on a.cdefault=e.id      
  9. leftjoin sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id   
  10. WHERE g.[value] ISNOTNULL
  11. ORDERBY d.name,a.name
  1. --當前資料庫表大小及行數
  2. SELECT SCHEMA_NAME(tbl.schema_id) [Schema],tbl.nameAS [TableName],  
  3. (CAST(ISNULL((select 8 * SUM(CASEWHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END)   
  4. FROM sys.indexes as i  
  5. JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id  
  6. JOIN sys.allocation_units as a ON a.container_id = p.partition_id