SQL提取資料庫表名,欄位名等信息

来源:http://www.cnblogs.com/H2921306656/archive/2017/06/01/6929605.html
-Advertisement-
Play Games

提取資料庫所有表的表名、欄位名 在SQLserver 2000中測試 在SQLserver 2005中測試 提取某個表的欄位名 ...


-------提取資料庫所有表的表名、欄位名

-------在SQLserver 2000中測試

--查詢所有用戶表所有欄位的特征
SELECT D.Name as TableName, A.colorder AS ColOrder, A.name AS Name,  
  COLUMNPROPERTY(A.ID,A.Name, 'IsIdentity') AS IsIdentity,  
  CASE WHEN EXISTS
  (SELECT 1
  FROM dbo.sysobjects
  WHERE Xtype = 'PK' AND Name IN
  (SELECT Name
  FROM sysindexes
  WHERE indid IN
  (SELECT indid
  FROM sysindexkeys
  WHERE ID = A.ID AND colid = A.colid)))  
  THEN 1 ELSE 0 END AS 主鍵,  
  B.name AS 類型,
  A.length AS [長度],
  A.xprec AS [精度],
  A.xscale AS [小數],
  CASE WHEN A.isnullable = 1 THEN 1 ELSE 0 END AS [可為空],  
ISNULL(E.text, ' ') AS [預設值],  
  ISNULL(G.[value], ' ') AS [說明]
FROM dbo.syscolumns A LEFT OUTER JOIN
  dbo.systypes B ON A.xtype = B.xusertype INNER JOIN
  dbo.sysobjects D ON A.id = D.id AND D.xtype = 'U' AND  
  D.name <> 'dtproperties' LEFT OUTER JOIN
  dbo.syscomments E ON A.cdefault = E.id 
  LEFT OUTER JOIN dbo.sysproperties G ON A.id = G.id AND A.colid = G.smallid
--WHERE D.Name='tablename' --如果找指定表,把註釋去掉
ORDER BY 1, 2

------在SQLserver 2005中測試

--查詢所有用戶表所有欄位的特征
SELECT    
(case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空   
     a.colorder as 欄位序號,   
     a.name as 欄位名,   
     (case when COLUMNPROPERTY( a.id,a.name, 'IsIdentity' )=1 then '' else '' end) as 標識,   
     (case when (SELECT count(*) FROM sysobjects--查詢主鍵   
                     WHERE (name in    
                             (SELECT name FROM sysindexes    
                             WHERE (id = a.id)   AND (indid in    
                                     (SELECT indid FROM sysindexkeys   
                                       WHERE (id = a.id) AND (colid in    
                                         (SELECT colid FROM syscolumns   
                                         WHERE (id = a.id) AND (name = a.name))   
                         )))))    
         AND (xtype = 'PK' ))>0 then '' else '' end) as 主鍵,--查詢主鍵END   
b.name as 類型,   
a.length as 占用位元組數,   
COLUMNPROPERTY(a.id,a.name,'PRECISION' ) as    長度,   
isnull(COLUMNPROPERTY(a.id,a.name,'Scale' ),0) as 小數位數,   
(case when a.isnullable=1 then '' else '' end) as 允許空,   
isnull(e.text,'' ) as 預設值,   
isnull(g.[value],'' ) AS 欄位說明    
FROM syscolumns a left join systypes b    
on a.xtype=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    
     --where d.name='PE_U_ValliMessage' --所要查詢的表   
order by a.id,a.colorder


 

------提取某個表的欄位名

SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'欄位序號',
a.name N'欄位名',
isnull(g.[value],'') AS N'欄位說明',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else ''
end) N'標識',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '' else '' end) N'主鍵',
b.name N'類型',
a.length N'占用位元組數',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'長度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小數位數',
(case when a.isnullable=1 then ''else '' end) N'允許空',
isnull(e.text,'') N'預設值'

FROM syscolumns a
left join systypes b
on a.xtype=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
--where條件輸入表名
where d.name='ConsumeBillBody'
order by object_name(a.id),a.colorder

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 常用命令 ...
  • 今天使用find命令查找刪除文件時,遇到下麵錯誤,這個是因為在{}和\之間必須要有空格,否則會報上面的錯。 以前都沒有註意到這個細節,特此記錄一下。 [root@DB-Server full]# find . -maxdepth 1 -type d -mtime +3 -exec rm -rf {} ...
  • SELECT * FROM (SELECT a.*,rownum row_num FROM (SELECT etpcode,etpename FROM tetp c ORDER BY c.etpcode DESC ) a ) b WHERE b.row_num BETWEEN 1 AND 2 ...
  • 最近在編寫一個小型基於的jsp系統開發。掌握資料庫一直感覺還不錯。但是今天就出現了一個問題困擾我大半天。後來本來準備睡覺,但是覺得今天不解決這個問題恐怕晚上是“徹夜難眠啊”!!於是打開電腦,又開始搗騰。遇到問題首先去網上search了一下。但是大多數的結果只能說:只能遠看而不能解決我的問題。 首先我 ...
  • ORACLE體繫結構包括:實例(Instance),資料庫文件,用戶進程(User process),伺服器進程以及其他文件。 1.ORACLE實例(instance) 1).要訪問資料庫必須先啟動實例,實例啟動時先分配記憶體區,然後再啟動後臺進程,後他進程執行資料庫的輸入,輸出以及監控其他進程。 在 ...
  • 今天在虛擬機上掛載光碟時提示: [root@primary dev]# mount /dev/cdrom /mnt/cdrom mount: you must specify the filesystem type 處理方法: 虛擬機-〉setting->cd/dvd-〉device status- ...
  • 獲得資料庫和表的信息 一般正常的程式員或DBA都會在敲代碼的時候突然想到這樣的一系列問題:我是誰?我在哪?我在乾什麼? 我的資料庫呢?我的表呢?我表怎麼創建的?我該怎麼辦呢?你可能會想到SHOW DATABASES; 命令。But, 這個命令是列出由mysql管理的databases. 不是知道我再 ...
  • 溫習《高性能MySQL》的第一章 MySQL架構與歷史 1.1 MySQL邏輯架構 參考http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 圖1-1:MySQL伺服器邏輯架構圖 最上層的服務並不是MySQL所獨有的,大多數基 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...