国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - 列出SQL Server中具有默認值的所有字段的語句

列出SQL Server中具有默認值的所有字段的語句

2019-11-01 14:27mssql教程網 Sql Server

上個星期我在對一個供應商開發的數據庫按規定進行故障排除的時候,我們需要對他們數據庫中50個表的每一個都進行查看,以確保所有期望是默認值的字段都被分配了默認值。你可以想象這是一個多么令人畏懼的工作,而我立即提

專家解答 
  通過查詢任何數據庫中的三個系統表,你可以獲得每個表的每一個字段的默認值。下面是這個核心查詢。它返回分配給當前數據庫中每個用戶表的默認值。這個查詢在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默認值。 
列出SQL Server中具有默認值的所有字段的語句
現在我在想這個很好的基本查詢版本有什么選擇。。。 
  選擇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 Server中具有默認值的所有字段的語句
  其實還有另一個選擇,利用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 

列出SQL Server中具有默認值的所有字段的語句
所以記住,就因為你被告知沒有更好的方法,依靠你作為一個數據庫管理員的本能來鉆研。你永遠不會知道你可能會得到些什么。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产资源视频在线观看 | 国产精品美乳一区二区免费 | 日本在线观看www | 亚洲色综合| 青青久久| 中文字幕国产 | 午夜资源| 日本久久精品视频 | 日日操天天爽 | 国产亚洲精品美女久久久久久久久久 | 日日干夜夜干 | 国产精品激情在线观看 | 亚洲视频自拍 | 久久久久久亚洲精品 | 国产精品美女高潮无套久久 | 欧美国产日韩在线 | 拍真实国产伦偷精品 | 国产乱淫精品一区二区三区毛片 | 国产一区二区三区久久久 | 成人黄色片网站 | 国语av在线 | 一区二区三区久久 | av在线播放网站 | 久久精品亚洲 | 婷婷在线视频 | 亚洲国产精品久久 | 日韩有码在线视频 | 亚洲va国产天堂va久久 en | 精品午夜久久 | 精品久久中文字幕 | 欧美freesex黑人又粗又大 | 精品精品 | 九热精品| 午夜精品一区二区三区在线视频 | 中文字幕在线精品 | 在线成人免费电影 | 国产成人精品久久二区二区91 | 久久久国产精品 | 中文字幕一区二区三区乱码图片 | 欧美日韩在线精品 | 黄色毛片在线看 |