数码资讯
在SQLServer中列出具有默认值的所有字段的语句
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
专家解答
通过查询任何数据库中的三个系统表,可以得到每个表的每个字段的默认值。下面是核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和SQL 2005中是兼容的。
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = U
以如此。{姓名},SC.colid
我们提供的数据表中。在这个例子中,我们只在表的名字感兴趣,列的表存储元数据与每个表的各个字段相关联。在这个例子中,我们只需要的字段名。最后,默认值是由syscomments元数据表提供。
在Northwind数据库运行该查询生成的结果如下(以短,一些记录略)。注意,因为左连接到syscomments表,它将返回到默认值为NULL。
现在我正在考虑这个非常好的基本查询版本。
选择1:搜索特殊的默认值
通过编辑WHERE条件语句,我们可以查看所有表中的特殊默认值。
U3000 U3000
引用:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = 'u'and sm.text =(0)
以如此。{姓名},SC.colid
选择2:只返回默认字段的信息
修改的核心查询的WHERE条件语句中忽略空值的syscomments.text表,如下所示:
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = 'u'and sm.text不空
以如此。{姓名},SC.colid
然而,从左连接到内部连接的条件子句的连接优化将提供一个优化:
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
内部联接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = U
以如此。{姓名},SC.colid
事实上,还有另一个选项可以利用SQL 2005中的系统目录视图。前面的查询提供了当时需要的信息,它可以在SQL 2000和SQL 2005中使用。在SQL2000的情况下,额外的元数据,这个默认值相关(实际上是一个默认的约束)可以挖掘。通过这个查询具体到系统目录视图,我们可以得到更多的信息,还没有在以前的查询显示。
U3000 U3000
引用:
复制代码代码如下所示:
选择{ name }作为表名
从sys.tables ST内加入sys.syscolumns SC圣{ object_id } = SC {id}
内部联接sys.default_constraints SD圣{ object_id } = { }和SD。parent_object_id sc.colid = sd.parent_column_id
由圣{名称},SC.colid
所以请记住,这是因为你被告知没有更好的方法依赖你的直觉作为一个数据库管理员,你永远不知道你会得到什么。
通过查询任何数据库中的三个系统表,可以得到每个表的每个字段的默认值。下面是核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和SQL 2005中是兼容的。
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = U
以如此。{姓名},SC.colid
我们提供的数据表中。在这个例子中,我们只在表的名字感兴趣,列的表存储元数据与每个表的各个字段相关联。在这个例子中,我们只需要的字段名。最后,默认值是由syscomments元数据表提供。
在Northwind数据库运行该查询生成的结果如下(以短,一些记录略)。注意,因为左连接到syscomments表,它将返回到默认值为NULL。
现在我正在考虑这个非常好的基本查询版本。
选择1:搜索特殊的默认值
通过编辑WHERE条件语句,我们可以查看所有表中的特殊默认值。
U3000 U3000
引用:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = 'u'and sm.text =(0)
以如此。{姓名},SC.colid
选择2:只返回默认字段的信息
修改的核心查询的WHERE条件语句中忽略空值的syscomments.text表,如下所示:
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
左连接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = 'u'and sm.text不空
以如此。{姓名},SC.colid
然而,从左连接到内部连接的条件子句的连接优化将提供一个优化:
U3000 U3000
引用:
复制代码代码如下所示:
选择so.name表名
从dbo.sysobjects所以内加入dbo.syscolumns SC so.id = sc.id
内部联接dbo.syscomments SM对sc.cdefault = sm.id
在so.xtype = U
以如此。{姓名},SC.colid
事实上,还有另一个选项可以利用SQL 2005中的系统目录视图。前面的查询提供了当时需要的信息,它可以在SQL 2000和SQL 2005中使用。在SQL2000的情况下,额外的元数据,这个默认值相关(实际上是一个默认的约束)可以挖掘。通过这个查询具体到系统目录视图,我们可以得到更多的信息,还没有在以前的查询显示。
U3000 U3000
引用:
复制代码代码如下所示:
选择{ name }作为表名
从sys.tables ST内加入sys.syscolumns SC圣{ object_id } = SC {id}
内部联接sys.default_constraints SD圣{ object_id } = { }和SD。parent_object_id sc.colid = sd.parent_column_id
由圣{名称},SC.colid
所以请记住,这是因为你被告知没有更好的方法依赖你的直觉作为一个数据库管理员,你永远不知道你会得到什么。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。