/* -- 本文件主要是匯總了 Microsoft SQL Server 中有關數據庫與表的相關信息查詢語句。 -- 下面的查詢語句中一般給出兩種查詢方法, -- A方法訪問系統表,適應於SQL 2000/2005/2008/2008 R2,但是在微軟的聯機幫助中特意說明這些系統表 -- 在后續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能。 -- -- B方法訪問系統視圖,為微軟推薦使用方法,對於今后新版本 SQL Server 兼容性比較好。 -- 兩種方法存在細微差別,下面的網址給出了系統表與函數以及系統視圖與函數之間的映射。 -- http://technet.microsoft.com/zh-cn/library/ms187997.aspx */ --1、查詢數據庫中有哪些表名 select name, id FROM sysobjects o where o.type = 'U' -- A select name, [object_id] FROM sys.objects o where o.type = 'U'; -- B --其中where條件還可按下面改: A:type = 'K' B:type = 'PK' --主鍵 type = 'P' -- 存儲過程 type = 'S' -- 系統表 type = 'V' -- 視圖 --2、查詢表的字段名稱和數據類型 --舊方法 select 'TableName' as TableName ,c.name as ColumnName ,t.name as DataType from syscolumns c join systypes t on c.xtype = t.xtype and c.id=object_id( N'TableName'); --新方法 select 'TableName' as TableName , c.name as ColumnName , t.name as DataType from sys.COLUMNS c join sys.types t on c.system_type_id = t.system_type_id and c.object_id=object_id( N'TableName'); --information_schema.columns select column_name ,data_type --系統提供的數據類型。 ,IS_NULLABLE --列的為空性。如果列允許 NULL,則該列將返回 YES。否則,返回 NO。 ,COLUMN_DEFAULT --列的默認值。沒有,返回 NULL。 ,CHARACTER_MAXIMUM_LENGTH --二進制數據、字符數據或文本和圖像數據的最大長度(字符)。對於 xml 和大值類型數據,為 -1.否則,返回 NULL。 ,CHARACTER_OCTET_LENGTH --二進制數據、字符數據或文本和圖像數據的最大長度(字節)。對於 xml 和大值類型數據,為 -1.否則,返回 NULL。 ,NUMERIC_PRECISION --近似數字數據、精確數字數據、整數數據或貨幣數據的精度。否則,返回 NULL。 ,NUMERIC_PRECISION_RADIX --近似數字數據、精確數字數據、整數數據或貨幣數據的精度基數。否則,返回 NULL。 ,NUMERIC_SCALE --近似數字數據、精確數字數據、整數數據或貨幣數據的小數位數。否則,返回 NULL。 from information_schema.columns where table_name = 'TableName'; --3、查詢表中的主鍵 select b.name as tableName, a.name as PK_Name FROM sysobjects a join sysobjects b on a.type = 'K' and b.type = 'U' and a.parent_obj = b.id and b.name = 'TableName' select b.name as tableName, a.name as PK_Name FROM sys.objects a join sys.objects b on a.type = 'PK' and b.type = 'U' and a.parent_object_id = b.object_id and b.name = 'TableName' --4、查詢表中的索引 EXEC sp_helpindex N'tableName'