SQL語句:擷取使用者表名、得到表中的所有列資訊、得到表中主鍵所包含的列名

來源:互聯網
上載者:User

1、擷取使用者表名:

SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

注意:一般情況只需要type = 'U',但有時候會有系統資料表混在其中(不知道什麼原因),加上後面一句後就能刪除這些系統資料表了

2、得到表中的所有列資訊(包含資料類型名):

SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')

注意點:
(1)這裡為了重點突出某些重要內容,選取了其中幾項資訊輸出。
(2)syscolumns表中只含有資料類型編號,要擷取完整的名字需要從systypes表中找,一般使用者使用的資料類型用xusertype對應比較好,不會出現一對多的情況。
(3)syscolumns.length得到的是實體記憶體的長度,所以nvarchar和varchar等類型在資料庫中的顯示是這個的一半。

3、得到表中主鍵所包含的列名:

SELECT syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid

注意:這是在4張系統資料表中尋找的,關係比較複雜,大致可以表示為:
syscolumns中存有表中的列資訊和表id,sysobjects表中存有主鍵名字(即PK_Table類似)和表id,sysindexes中存有主鍵名字和表id和index編號,sysindexkeys中存有表id和index編號和列編號,一項一項對應起來後就能找到列名了,呼~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.