SQL获取所有数据库名、表名、储存过程以及参数列表

来源:互联网 发布:网络推广收费 编辑:程序博客网 时间:2024/05/18 00:26


 

 

 

 

 

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

阅读全文
0 0
原创粉丝点击