獲取資料庫表的有關資訊

2021-06-22 13:51:00 字數 1727 閱讀 1994

1.獲取所有資料庫名:

(1)、select name from master.dbo.sysdatabases order by name 

2.獲取所有表名: 

(1)、select name from sysobjects where xtype='u' order by name 

xtype='u':表示所有使用者表; 

xtype='s':表示所有系統表;

(2)、select name from sysobjects where type = 'u' and sysstat = '83'

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

3.獲取所有欄位名:

(1)、select name from syscolumns where id=object_id('tablename')

(2)、select syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length from syscolumns, systypes where syscolumns.xusertype = systypes.xusertype and "syscolumns.id = object_id('tablename')

注意點:

(a)這裡為了重點突出某些重要內容,選取了其中幾項資訊輸出。

(b)syscolumns表中只含有資料型別編號,要獲取完整的名字需要從systypes表中找,一般使用者使用的資料型別用xusertype對應比較好,不會出現一對多的情況。

(c)syscolumns.length得到的是物理記憶體的長度,所以nvarchar和varchar等型別在資料庫中的顯示是這個的一半。

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

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、得到表中列的描述內容:

select a.name,g.value from syscolumns as a    left join sysproperties g   on a.id=g.id and a.colid = g.smallid    where a.id='表id'

學習MySQL 七 獲取有關資料庫和表的資訊

目錄 一 目的 1 想 獲取有關資料庫和表的資訊 二 參考 1 mysql 8 的學習 5獲取有關資料庫和表的資訊 三 操作 1 要找出當前選擇的資料庫,請使用以下 database 函式 2 要找出預設資料庫包含的表 例如,當您不確定表的名稱時 4 show create table 可以顯示建立...

獲取資料庫資訊

資料庫資訊包括資料庫詳細資訊 資料庫基本資訊 基本表資訊 列資訊等內容 1 獲取資料庫詳細資訊 databasemetadata物件代表了乙個資料庫的詳細資訊,它的方法所獲取的資料庫系統的資訊通常用resultset物件的開工返回,可以用resultset物件的方法取得資料資訊,如getstring...

獲取SQLite資料庫中的表資訊

1.查詢所有表名資訊 select from sqlite master select from sqlite sequence sqlite資料庫中的資訊存在於乙個內建表sqlite master中,在查詢器中可以用 select from sqlite master來檢視,如果只要列出所有表名的...