(
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
编号和列编号,一项一项对应起来后就能找到列名了。
另外的
SQL
代码
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype
where
id
=(
select
id
from
sysobjects
where
name
=
'
订货主档
'
);
go;
或者用这样的写法,执行结果一样:
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
,
systypes
where
(
syscolumns
.
id
=
object_id
(
'
订货主档
'
)
and
syscolumns
.
xusertype
=
systypes
.
xusertype
)
order
by
syscolumns
.
colorder;
go
执行结果:(字段只出现一次,正常)
订单号码
int
4
客户编号
nvarchar
10
员工编号
int
4
订单日期
datetime
8
要货日期
datetime
8
送货日期
datetime
8
送货方式
int
4
运费
money
8
收货人
nvarchar
80
送货地址
nvarchar
120
送货城市
nvarchar
30
送货行政区
nvarchar
30
送货邮政编码
nvarchar
20
送货国家地区
nvarchar
30
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
left
join
systypes
on
syscolumns
.
xtype
=
systypes
.
xtype
where
id
=(
select
id
from
sysobjects
where
name
=
'
订货主档
'
);
go;
执行结果:(部分字段出现两次,数据类型不同)
订单号码
int 4
客户编号
nvarchar 10
客户编号
sysname 10
员工编号
int 4
订单日期
datetime 8
订单日期
出生日期类型
8
要货日期
datetime 8
要货日期
出生日期类型
8
送货日期
datetime 8
送货日期
出生日期类型
8
送货方式
int 4
运费
money 8
运费
薪水类型
8
收货人
nvarchar 80
收货人
sysname 80
送货地址
nvarchar 120
送货地址
sysname 120
送货城市
nvarchar 30
送货城市
sysname 30
送货行政区
nvarchar 30
送货行政区
sysname 30
送货邮政编码
nvarchar 20
送货邮政编码
sysname 20
送货国家地区
nvarchar 30
送货国家地区
sysname 30
查询存储过程
DepartmentSalaryInfo
所有的信息,
信息包含在系统视图
syscolumns
,
systypes
中
select
syscolumns
.*,
systypes
.*
from
syscolumns
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype
(
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
编号和列编号,一项一项对应起来后就能找到列名了。
另外的
SQL
代码
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype
where
id
=(
select
id
from
sysobjects
where
name
=
'
订货主档
'
);
go;
或者用这样的写法,执行结果一样:
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
,
systypes
where
(
syscolumns
.
id
=
object_id
(
'
订货主档
'
)
and
syscolumns
.
xusertype
=
systypes
.
xusertype
)
order
by
syscolumns
.
colorder;
go
执行结果:(字段只出现一次,正常)
订单号码
int
4
客户编号
nvarchar
10
员工编号
int
4
订单日期
datetime
8
要货日期
datetime
8
送货日期
datetime
8
送货方式
int
4
运费
money
8
收货人
nvarchar
80
送货地址
nvarchar
120
送货城市
nvarchar
30
送货行政区
nvarchar
30
送货邮政编码
nvarchar
20
送货国家地区
nvarchar
30
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolu
mns
left
join
systypes
on
syscolumns
.
xtype
=
systypes
.
xtype
where
id
=(
select
id
from
sysobjects
where
name
=
'
订货主档
'
);
go;
执行结果:(部分字段出现两次,数据类型不同)
订单号码
int 4
客户编号
nvarchar 10
客户编号
sysname 10
员工编号
int 4
订单日期
datetime 8
订单日期
出生日期类型
8
要货日期
datetime 8
要货日期
出生日期类型
8
送货日期
datetime 8
送货日期
出生日期类型
8
送货方式
int 4
运费
money 8
运费
薪水类型
8
收货人
nvarchar 80
收货人
sysname 80
送货地址
nvarchar 120
送货地址
sysname 120
送货城市
nvarchar 30
送货城市
sysname 30
送货行政区
nvarchar 30
送货行政区
sysname 30
送货邮政编码
nvarchar 20
送货邮政编码
sysname 20
送货国家地区
nvarchar 30
送货国家地区
sysname 30
查询存储过程
DepartmentSalaryInfo
所有的信息,
信息包含在系统视图
syscolumns
,
systypes
中
select
syscolumns
.*,
systypes
.*
from
syscolumns
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype