2013-05-15 50 views
16

Trong T-SQL (SQL Server 2000). Làm thế nào tôi có thể liệt kê tất cả các bảng và cột trong cơ sở dữ liệu? Ngoài ra, trong một truy vấn riêng biệt là có một cách để liệt kê tất cả các cột cùng với kiểu dữ liệu và ràng buộc (NULLS, v.v.). Cảm ơn.Bảng danh sách T-SQL, Cột

+3

Hà bạn đã thử bất cứ điều gì? –

+2

Hãy xem các khung nhìn 'INFORMATION_SCHEMA' hoặc' sysobjects', 'syscolumns', v.v. –

Trả lời

43

Vui lòng xem information schema.

select * 
from MyDatabaseName.information_schema.columns 
order by table_name, ordinal_position 
+0

Cảm ơn Tim Tôi đánh giá cao điều này. Có cách nào để thêm vào cơ sở dữ liệu các bảng được gán cho? Tôi thấy Catalog là chủ. – user1804387

+0

'sử dụng MyDatabaseName;', sau đó truy vấn. [MSDN: Chọn cơ sở dữ liệu] (http://msdn.microsoft.com/en-us/library/ms180770.aspx). Ngoài ra, hãy thêm tên DB vào mệnh đề 'from' của bạn trong [thời trang 4 phần] bình thường (http://msdn.microsoft.com/en-us/library/ms177563.aspx) (Tôi đã thêm câu trả lời này vào câu trả lời). –

+0

Tôi vừa tìm thấy điều đó. Cảm ơn một lần nữa – user1804387

10

Nhiều cách để thực hiện. Dưới đây là vài cách mà bạn có thể liệt kê:

Lựa chọn 1:

SELECT db_name() as DATABASE_NAME, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, 
     COLUMN_DEFAULT, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, 
     NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, 
     DATETIME_PRECISION 
FROM INFORMATION_SCHEMA.COLUMNS 

Phương án 2:

DECLARE @SQL VARCHAR(8000) 
SELECT @SQL = '' 
SELECT @SQL = @SQL + 'UNION 
SELECT ''' + name + ''' [DataBaseName], t.name [TableName], c.name [ColumnName], st.name [DataType] FROM ' + name + '..sysobjects t INNER JOIN ' + name + '..syscolumns c ON t.id = c.id INNER JOIN '+ name + '..systypes st on c.xtype = st.xtype where t.xtype = ''U''' 
FROM master..sysdatabases 
WHERE name IN ('databasename1', 'databaseName2') -- change here !! 
SELECT @SQL = RIGHT(@SQL, LEN(@SQL)-5) + ' ORDER BY 1, 2, 3' 
EXEC(@SQL) 

Lựa chọn 3:

select db_name() as database_name 
    ,table_name = sysobjects.name 
    ,column_name = syscolumns.name 
    ,datatype = systypes.name 
    ,length = syscolumns.length 
from sysobjects 
inner join syscolumns on sysobjects.id = syscolumns.id 
inner join systypes on syscolumns.xtype = systypes.xtype 
where sysobjects.xtype = 'U' 
order by sysobjects.name 
    ,syscolumns.colid 
Các vấn đề liên quan