取列全部用的 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語句:
withindexcte
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...