首頁 >資料庫 >mysql教程 >如何從現有表產生 SQL CREATE 表腳本?

如何從現有表產生 SQL CREATE 表腳本?

DDD
DDD原創
2025-01-14 08:55:16937瀏覽

How Can I Generate SQL CREATE Table Scripts from Existing Tables?

使用查詢產生現有資料表的 SQL CREATE 腳本

雖然此查詢本身不會直接產生 CREATE 腳本,但它可以從 SQL Server 儲存的模式資訊派生出來。

方法:

  1. 確定目標表並檢索其詳細資訊(列、索引、限制)。
  2. 基於收集的資訊建立 DDL 腳本。

代碼:

<code class="language-sql">DECLARE @table_name SYSNAME = 'dbo.MyTable';

DECLARE @DDL NVARCHAR(MAX) = 'CREATE TABLE ' + QUOTENAME(@table_name) + ' (';

SELECT @DDL += CHAR(13) + '    [' + c.name + '] ' + 
                CASE WHEN c.is_nullable = 1 THEN 'NULL' ELSE 'NOT NULL' END + ','
FROM sys.columns c
WHERE c.[object_id] = OBJECT_ID(@table_name);

SET @DDL = LEFT(@DDL, LEN(@DDL) - 1) + ')';

SELECT @DDL += CHAR(13) + ' CONSTRAINT [PK_' + @table_name + '] PRIMARY KEY (' + 
                STUFF((SELECT ', [' + c.name + ']' FROM sys.index_columns c
                        WHERE c.[object_id] = OBJECT_ID(@table_name) AND c.index_id = 1), 1, 2, '') + ')';

SELECT @DDL += CHAR(13) + ' WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);';

PRINT @DDL;</code>

輸出範例:

<code class="language-sql">CREATE TABLE [dbo].[MyTable] (
    [ID] INT NOT NULL,
    [Name] VARCHAR(50) NULL,
    [Age] INT NULL,
    CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);</code>

以上是如何從現有表產生 SQL CREATE 表腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn