簡體   English   中英

打印表名及其列名的 SQL 語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM