SQL Server查詢資料庫表和資料庫字段

2021-08-18 20:56:30 字數 4023 閱讀 2564

在sql server中查詢資料庫表和字段的方式可以有三種

#####方法一

-- 查詢所有表

select

*from sys.

tables

;-- 查詢所有列

select

*from sys.

columns

;-- 查詢所有擴充套件屬性,我們在設計資料庫表和字段時寫的中文備註等資訊會儲存在這裡

select

*from sys.extended_properties;

-- 查詢字段型別

select

*from sys.

types

;-- 資料庫表與字段聯合查詢

select

sys.

tables

.name as 資料表名,

sys.

columns

.name as 欄位名稱,

sys.

types

.name as 字段型別,

sys.

columns

.max_length as 型別長度,

sys.

columns

.is_nullable as 是否允許為null,(

select

value

from sys.extended_properties

where sys.extended_properties.major_id = sys.

columns

.object_id

and sys.extended_properties.minor_id = sys.

columns

.column_id)

as 字段描述

from sys.

columns

, sys.

tables

, sys.

types

where sys.

columns

.object_id = sys.

tables

.object_id

and sys.

columns

.system_type_id=sys.

types

.system_type_id;

#####方法二

-- 查詢所有表

select

*from sysobjects d where d.xtype=

'u'and d.name<>

'dtproperties'

;-- 查詢所有列

select

*from syscolumns;

-- 查詢字段型別

select

*from systypes;

-- 資料庫表與字段聯合查詢

select

表名=case

when a.colorder=

1then d.name else

''end

, 表說明=

case

when a.colorder=

1then isnull(f.

value,''

)else

''end

, 字段序號=a.colorder,

欄位名=a.name,

標識=case

when columnproperty(a.id,a.name,

'isidentity')=

1then

'√'else

''end

, 主鍵=

case

when

exists

(select

1from 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

'√'else

''end

, 型別=b.name,

占用位元組數=a.length,

長度=columnproperty(a.id,a.name,

'precision'),

小數字數=isnull(columnproperty(a.id,a.name,

'scale'),

0), 允許空=

case

when a.isnullable=

1then

'√'else

''end

, 預設值=isnull(e.

text,''

),字段說明=isnull(g.

[value],

'')from syscolumns a

left

join systypes b on a.xusertype=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

left

join sys.extended_properties f on d.id=f.major_id and f.minor_id=

0order

by a.id,a.colorder

注意:syscolumns與sys.columns、systypes與sys.types並不是同一張表

方法三

在sql server中存在表information_schema.tablesinformation_schema.columns我們可以通過這兩張表來查詢需要的字段。(注意:mysql中同樣存在這兩張表,但字段會有所不同,在mysql中有table_commentcolumn_comment字段可以查詢到資料表描述和字段描述資訊,而sql server中的這兩張表中並沒有這兩個字段

-- 查詢所有表

select

*from information_schema.

tables

;-- 查詢所有字段

select

*from information_schema.

columns

;-- 資料庫表與字段聯合查詢,該方法在sql server無法查詢到表和字段備註

select table_name as 資料表名,

column_name as 欄位名,

isnull(column_default,'')

as 預設值,

is_nullable as 是否允許為null

,data_type as 資料型別,

isnull(isnull(isnull(character_maximum_length,numeric_precision)

,datetime_precision),1

)as 型別長度

from information_schema.

columns

where

not table_name in

('sysdiagrams'

,'dtproperties'

);

sql server 查詢資料庫表結構

引用塊內容 摘要 可直接查出字段注釋 補設計文件非常方便 select b.value from sys.columns a left join sys.extended properties b on a.object id b.major id and a.column id b.minor i...

SQL Server資料庫查詢

開啟我們的sql server資料庫,找到要查詢的資料庫表,右鍵單擊然後選擇新建查詢,select 選擇我們要查詢的表sys academe學院表 聯合 sys class.classname班級表的班級名稱和sys grade.gradename年級表的年級編號來查詢出資料。下面是查詢的 sele...

Sqlserver 資料庫 表常用查詢操作

查詢所有表以及記錄數 select a.name as 表名,max b.rows as 記錄條數 from sysobjects a sysindexes b where a.id b.id and a.xtype u group by a.name order by max b.rows des...