獲取SQL Server表字段的各種屬性實例代碼_Mssql數據庫教程

      編輯Tag賺U幣

      推薦:在sqlserver2005中安裝sql server 2000的示例數據庫northwind的方法
      裝完sql server 2005后卻沒有找到ms的示例數據庫northwind 后來查看安裝光盤發現sql server 2005種只有adventurework與adventureworkDW這兩個sample database 到ms官方站找了好久 才找到sql server 2000的sample database

      復制代碼 代碼如下:www.wf0088.com

      -- SQL Server 2000
      SELECT a.name AS 字段名, CASE WHEN EXISTS
      (SELECT 1
      FROM sysobjects
      WHERE xtype = 'PK' AND parent_obj = a.id AND name IN
      (SELECT name
      FROM sysindexes
      WHERE indid IN
      (SELECT indid
      FROM sysindexkeys
      WHERE id = a.id AND colid = a.colid)))
      THEN '1' ELSE '0' END AS 主鍵, CASE WHEN COLUMNPROPERTY(a.id, a.name,
      'IsIdentity') = 1 THEN '1' ELSE '0' END AS 標識, b.name AS 類型,
      a.length AS 占用字節數, COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 長度,
      a.xscale AS 小數, a.isnullable AS 可空, ISNULL(e.text, '') AS 默認值, ISNULL(g.[value],
      '') AS 字段說明
      FROM syscolumns a LEFT OUTER JOIN
      systypes b ON a.xusertype = b.xusertype INNER JOIN
      sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
      d.name <> 'dtsyscomments e ON a.cdefault = e.id LEFT OUTER JOIN
      sysproperties g ON a.id = g.id AND a.colid = g.smallid LEFT OUTER JOIN
      sysproperties f ON d.id = f.id AND f.smallid = 0
      WHERE (d.name = '
      名稱')
      --2。SQL SERVER 2005
      SELECT CASE WHEN EXISTS
      (SELECT 1
      FROM sysobjects
      WHERE xtype = 'PK' AND parent_obj = a.id AND name IN
      (SELECT name
      FROM sysindexes
      WHERE indid IN
      (SELECT indid
      FROM sysindexkeys
      WHERE id = a.id AND colid = a.colid))) THEN '1' ELSE '0' END AS 'key', CASE WHEN COLUMNPROPERTY(a.id, a.name,
      'IsIdentity') = 1 THEN '1' ELSE '0' END AS 'identity', a.name AS ColName, c.name AS TypeName, a.length AS 'byte', COLUMNPROPERTY(a.id, a.name,
      'PRECISION') AS 'length', a.xscale, a.isnullable, ISNULL(e.text, '') AS 'default', ISNULL(p.value, '') AS 'comment'
      FROM sys.syscolumns AS a INNER JOIN
      sys.sysobjects AS b ON a.id = b.id INNER JOIN
      sys.systypes AS c ON a.xtype = c.xtype LEFT OUTER JOIN
      sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN
      sys.extended_properties AS p ON a.id = p.major_id AND a.colid = p.minor_id
      WHERE (b.name = 'keyfactory') AND (c.status <> '1')
      --b.name = 'Keyfactory','Keyfactory'為你想要查找的數據表。

      --2、SQL SERVER 2005
      SELECT CASE WHEN EXISTS
      (SELECT 1
      FROM sysobjects
      WHERE xtype = 'PK' AND parent_obj = a.id AND name IN
      (SELECT name
      FROM sysindexes
      WHERE indid IN
      (SELECT indid
      FROM sysindexkeys
      WHERE id = a.id AND colid = a.colid))) THEN '1' ELSE '0' END AS 'key', CASE WHEN COLUMNPROPERTY(a.id, a.name,
      'IsIdentity') = 1 THEN '1' ELSE '0' END AS 'identity', a.name AS ColName, c.name AS TypeName, a.length AS 'byte', COLUMNPROPERTY(a.id, a.name,
      'PRECISION') AS 'length', a.xscale, a.isnullable, ISNULL(e.text, '') AS 'default', ISNULL(p.value, '') AS 'comment'
      FROM sys.syscolumns AS a INNER JOIN
      sys.sysobjects AS b ON a.id = b.id INNER JOIN
      sys.systypes AS c ON a.xtype = c.xtype LEFT OUTER JOIN
      sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN
      sys.extended_properties AS p ON a.id = p.major_id AND a.colid = p.minor_id
      WHERE (b.name = 'keyfactory') AND (c.status <> '1')
      --b.name = 'Keyfactory','Keyfactory'為你想要查找的數據表。

      分享:where條件順序不同、性能不同示例探討
      where條件順序不同,性能不同,這個建議在Oracle11G版本還合適嗎,想提高性能的的朋友可以參考下哈

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2013-05-24
      相關Mssql數據庫教程