≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

列出SQL Server中具有默认值的所有字段的语句

人气:910 时间:2019-04-20

这篇文章主要为大家详细介绍了列出SQL Server中具有默认值的所有字段的语句,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!

专家解答
  通过查询任何数据库中的三个系统表,你可以获得每个表的每一个字段的默认值。下面是这个核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和SQL 2005中都是兼容的。
  
Quote: 

代码如下:


SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value" 
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id 
  LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id 
  WHERE SO.xtype = 'U' 
  ORDER BY SO.[name], SC.colid

  sysobjects 为我们提供了表元数据。在这个例子中,我们只对表名称感兴趣。syscolumns 表存储与每个表的各个字段相关联的元数据。在这个例子中,我们只需要字段名称。最后,默认值元数据由syscomments表提供。
  对Northwind数据库运行这个查询生成下面的结果(为了简短,省略了一些记录)。注意,因为LEFT JOIN到syscomments表所以它将返回NULL默认值。
按此在新窗口打开图片
现在我在想这个很好的基本查询版本有什么选择。。。
  选择1:搜索特别的默认值
  通过编辑WHERE条件语句,我们可以在所有的表中查看特别的默认值。
  
Quote:
SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
  LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id
  WHERE SO.xtype = 'U' AND SM.TEXT = '(0)'
  ORDER BY SO.[name], SC.colid
选择2:只返回具有默认值字段的信息
  修改核心查询的WHERE条件语句来忽略syscomments.text表中的NULL值,这个技巧如下所示:
  
Quote:

代码如下:


SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value" 
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id 
  LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id 
  WHERE SO.xtype = 'U' AND SM.TEXT IS NOT NULL 
  ORDER BY SO.[name], SC.colid 

  但是,将FROM条件从句中的JOIN从一个LEFT JOIN改为一个INNER JOIN会提供优化:
  
Quote:

代码如下:


SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value" 
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id 
  INNER JOIN dbo.syscomments SM ON SC.cdefault = SM.id 
  WHERE SO.xtype = 'U' 
  ORDER BY SO.[name], SC.colid 

按此在新窗口打开图片
  其实还有另一个选择,利用SQL 2005中的系统目录视图。前面的查询给我提供了这时所需要的信息,并在SQL 2000和SQL 2005中都可以使用,在SQL2000实例中可以挖掘出与这个默认值(实际上是一个默认约束)关联的额外元数据。通过将这个查询特定在系统目录视图上,我们可以获得在之前的查询中没有显示出来的额外信息。
  
Quote:

代码如下:


SELECT ST.[name] AS "Table Name", SC.[name] AS "Column Name", SD.definition AS "Default Value", SD.[name] AS "Constraint Name" 
  FROM sys.tables ST INNER JOIN sys.syscolumns SC ON ST.[object_id] = SC.[id] 
  INNER JOIN sys.default_constraints SD ON ST.[object_id] = SD.[parent_object_id] AND SC.colid = SD.parent_column_id 
  ORDER BY ST.[name], SC.colid 
按此在新窗口打开图片
所以记住,就因为你被告知没有更好的方法,依靠你作为一个数据库管理员的本能来钻研。你永远不会知道你可能会得到些什么。

本文来自:http://www.512pic.com/179/7166-0.html

注:关于列出SQL Server中具有默认值的所有字段的语句的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:SQLSERVER

您可能感兴趣的文章

  • 一道sql面试题附答案
  • 用SQL建立索引的方法步骤
  • 阿拉伯数字转大写中文_财务常用sql存储过程
  • SQL Server常用管理命令小结
  • mssql查找备注(text,ntext)类型字段为空的方法
  • 实例学习mssql存储过程分析
  • 在SQL Server启动时自动执行存储过程
  • 经典SQL语句大全第
  • 三种实现方法实现数据表中遍历寻找子节点
  • sql高级技巧几个有用的Sql语句
上一篇:一个分页存储过程代码
下一篇:SQL Server常用管理命令小结
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

512笔记收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。