sql得到表中的列資訊

2022-03-31 10:06:58 字數 3133 閱讀 6087

取列全部用的 sys. 中的表

cte:with name as() 用法:   sql樹形查詢

①主鍵資訊 

②改表中的列

select

*from

sys.columns colm

inner

join

sys.types systype

on colm.system_type_id =

systype.system_type_id

and systype.user_type_id = colm.user_type_id --

這兩個條件過濾得到使用者建立的列

③最終sql語句:

with

indexcte

as (select

ic.column_id,

ic.index_column_id,

ic.object_id

from

sys.indexes idx

inner

join

sys.index_columns ic

on idx.index_id =

ic.index_id

and idx.object_id

= ic.object_id

where idx.object_id

=object_id('

course

') --

找到該錶的主鍵資訊

and idx.is_primary_key =1)

select colm.column_id columnid, --

列idcast(case

when indexcte.column_id is

null

then

0else

1end

asbit

) isprimarykey,

colm.name columnname,

--列名稱

systype.name columntype, --

列型別 colm.is_identity isidentity, --

是否自增長

colm.is_nullable isnullable, --

是否為空

cast(colm.max_length as

int) bytelength, --

sys.columns中的max_length是位元組

(case

when systype.name =

'nvarchar

'and colm.max_length >

0then

colm.max_length /2

when systype.name =

'nchar

'and colm.max_length >

0then

colm.max_length /2

when systype.name =

'ntext

'and colm.max_length >

0then

colm.max_length /2

else

colm.max_length

end) charlength,

--得到字元型別長度

cast(colm.precision

asint) precision

,

cast(colm.scale as

int) scale,

sep.value remark

--列描述

from

sys.columns colm

inner

join

sys.types systype

on colm.system_type_id =

systype.system_type_id

and systype.user_type_id = colm.user_type_id --

通過兩個關聯進行過濾得到使用者建立的型別

left

join

sys.extended_properties sep

on sep.major_id = colm.object_id

--得到是這個表的

and colm.column_id = sep.minor_id --

這列的left

join

indexcte

on indexcte.column_id =

colm.column_id

and indexcte.object_id

= colm.object_id

where colm.object_id

=object_id('

course

');

JDBC 獲取表中列資訊

開始 現在有這麼個需求,1.知道乙個表名 2.通過表名獲取表中所有的列 3.知道列的一些資訊 4.包括列名,是否可空,是否唯一,是否主鍵,資料型別,注釋 方法 主要使用兩個方法 resultset colrs con.getmetadata getcolumns null,tablename,res...

sql新增 刪除表中的列

新增沒有預設值 alter table test add bazaartype char 1 有預設值的新增列 alter table test add bazaartype char 1 default 0 刪除沒有預設值的列 alter table test drop column bazaar...

sql新增 刪除表中的列

新增沒有預設值 alter table test add bazaartype char 1 有預設值的新增列 alter table test add bazaartype char 1 default 0 刪除沒有預設值的列 alter table test drop column bazaar...