syscolumns、sysconstraints、sysobjects

 1、根据表名查询对象ID

SELECT OBJECT_ID('Production.Product')

 结果:1429580131

不能作为输入参数:列名、约束名

能作为输入参数:表名

2、根据对象ID查询表名

SELECT OBJECT_NAME(1429580131)

结果:Product

一、syscolumns

1.根据表名查询表的所有列的名称

SELECT  name
FROM    syscolumns
WHERE   id = OBJECT_ID('Production.Product')

syscolumns 为每个表和视图中的每列返回一行,并为数据库中的存储过程的每个参数返回一行。

syscolumns.id        列所属的表的对象ID、int型

syscolumns.name   列的名称、sysname型

2.根据表名、列名,查询列ID

SELECT  colid
FROM    syscolumns
WHERE   id = OBJECT_ID('Production.Product')
        AND name = 'ProductNumber'

syscolumns.colid   列ID (列从1开始编号)、smallint型

syscolumns.name (似乎可以用字符串作为输入)

二、sysconstraints

 包含的主要列:约束ID(constid),约束所属表的对象ID(id),约束所在列的列ID(colid)

三、sysobjects 

1、根据表名和列名查询列上的约束

SELECT  sysobjects.name ,sysobjects.xtype,
        sysobjects.id
FROM    sysobjects
        JOIN sysconstraints ON sysobjects.id = sysconstraints.constid
WHERE   sysobjects.parent_obj = OBJECT_ID('Production.Product')
        AND sysconstraints.colid IN (
        SELECT  colid
        FROM    syscolumns
        WHERE   id = OBJECT_ID('Production.Product')
                AND name = 'Weight' )

sysobjects.parent_obj   父对象的对象标识号。 例如,表ID(如果它是触发器或约束,父对象就是表ID)。

sysobjects.xtype:

C   = check约束

D   = 默认值或DEFAULT约束

F    = FOREIGN KEY约束

P    = 存储过程

PK  = PRIMARY KEY

UQ = UNIQUE

 四、后续版本的 Microsoft SQL Server 将删除这些功能。使用最新的 SQL Server 系统视图来代替。

posted @ 2015-07-17 20:30  niaomingjian  阅读(543)  评论(0编辑  收藏  举报