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
Trả lời
Vui lòng xem information schema.
select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
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
'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). –
Tôi vừa tìm thấy điều đó. Cảm ơn một lần nữa – user1804387
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
Hà bạn đã thử bất cứ điều gì? –
Hãy xem các khung nhìn 'INFORMATION_SCHEMA' hoặc' sysobjects', 'syscolumns', v.v. –