本文主要介绍sql server字段的默认值(sqlserver列出所有表),下面一起看看sql server字段的默认值(sqlserver列出所有表)相关资讯。
专家解答通过查询任意数据库中的三个系统表,可以得到每个表中每个字段的默认值。下面是核心查询。它返回分配给当前数据库中每个用户表的默认值。此查询在sql 2000和sql 2005中兼容。u3000 u3000参考:复制代码代码如下:选择so.name表名,添加dbo.syscolumns sc so.id = sc.id连接so.xtype = u中的dbo.sysobjects sm到sc.cdefault = sm.id,以此类推。{name},sc.colid在我们提供的数据表中。在这个例子中,我们只对表的名称感兴趣,列的表存储元数据与每个表的每个字段相关联。在这个例子中,我们只需要。最后,默认值由syscomments元数据表提供。在northwind数据库中运行该查询会产生以下结果(简短,省略了一些记录)。请注意,因为左侧连接到syscomments表,所以它将返回默认值null。现在我正在考虑这个非常好的基本查询版本。选项1:搜索特殊默认值通过编辑where条件语句,我们可以查看所有表中的特殊默认值。u3000 u3000引用:选择so.name表名并添加dbo.syscolumns sc so.id = sc.id将dbo.sysobjects sm连接到so.xtype = u 而sm.text =(0)。{name},sc.colid选项2:仅返回syscomments.text表,该表忽略由默认字段信息修改的核心查询的where条件语句中的空值。如下图:u3000 u3000引用:复制代码如下:选择so.name表名,在so.xtype = u 和sm.text不为空。{name},sc.colid但是,从左连接到内连接的条件子句的连接优化将提供一个优化:u3000 u3000。引用:复制代码如下:从dbo.sysobjects中选择so.name表名,在so.xtype = u中添加dbo.syscolumns sc so.id = sc.id以联接dbo.syscomments sm到sc.cdefault = sm.id,以此类推。{name},sc.colid事实上,在sql 2005中还有另一个利用系统目录视图的选项。前面的查询提供了当时需要的信息,可以在sql 2000和sql 2005中使用。在sql2000的情况下,可以挖掘与默认值(实际上是默认约束)相关的附加元数据。通过对系统目录视图的查询,我们可以获得更多的信息,这些信息在前面的查询中没有显示出来。u3000 u3000引用:复制代码如下:选择{name}作为表名,添加sys . sys columns sc st { object _ id } = sc { id }在内部联接sys . default _ constraints sd st { object _ id } = { }和sd。parent _ object _ id sc.colid = sd按st. {name},sc列出的parent _ column _ id。所以记住,这是因为你被告知没有更好的方法来依靠你的直觉。作为一个数据库管理员,你永远不知道你会得到什么。
了解更多sql server字段的默认值(sqlserver列出所有表)相关内容请关注本站点。