[英]SQL statement to print table names and their column names
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME ASC
我正在使用此代碼打印數據庫的表名。 我想要做的是打印每個表中的表名和列名。 我可以通過嵌套語句來做到這一點。
此代碼正在 SQL Server 上的查詢窗口中運行。
我試過這個
SELECT COL_NAME
FROM
(SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME ASC)
有任何想法嗎?
這應該這樣做:
SELECT C.TABLE_NAME, C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES T
WHERE T.TABLE_TYPE='BASE TABLE' AND C.TABLE_NAME=T.TABLE_NAME)
ORDER BY C.TABLE_NAME, C.COLUMN_NAME
在 Sqlserver 2005 中,首先引入了INFORMATION_SCHEMA視圖。
創建這些視圖主要是為了獲取有關表、列、視圖、域等的元數據,如表名、列名、列的數據類型等。
每個數據庫都包含這些視圖。 如果您想檢查幕后發生了什么,您可以通過執行sp_helptext來檢查這些視圖的邏輯。 喜歡
sp_helptext INFORMATION_SCHEMA.COLUMNS
通過使用上述視圖,您可以獲得所需的結果。 請檢查以下查詢。
SELECT T.TABLE_NAME,C.COLUMN_NAME,C.DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS C
INNER JOIN INFORMATION_SCHEMA.TABLES T ON C.TABLE_NAME = T.TABLE_NAME
AND C.TABLE_SCHEMA = T.TABLE_SCHEMA
WHERE T.TABLE_TYPE = 'BASE TABLE'
使用 Mssql 2008 版本嘗試以下查詢。 此項目列出列名稱和它們所屬的表。
SELECT c.name AS 'ColumnName', t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name = c.name
ORDER BY TableName, ColumnName;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.