首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

動態建立與管理 SQL Server 資料庫與資料表的 T-SQL 腳本範例

     編輯:關於SqlServer

動態 DDL 腳本最佳實踐:安全建立與重建物件

在自動化部署、測試環境重置或安裝腳本中,需確保物件不存在時建立、存在時可選重建。以下為標準範本:

1. 動態建立/重建資料庫

IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'TargetDB')
BEGIN
    -- 視需求決定是否 DROP,生產環境極度謹慎
    -- DROP DATABASE TargetDB;
    PRINT 'Database already exists.';
END
ELSE
BEGIN
    CREATE DATABASE TargetDB;
    PRINT 'Database created.';
END

2. 動態建立/重建資料表

USE TargetDB;
GO

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'TargetTable' AND xtype = 'U')
BEGIN
    DROP TABLE TargetTable;
END
GO

CREATE TABLE TargetTable (
    Col_ID      INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    Col_Code    VARCHAR(16) NOT NULL UNIQUE,
    Col_Name    VARCHAR(100) NOT NULL,
    Col_Desc    VARCHAR(200) NULL,      -- 最後一欄無逗號
    Col_Status  TINYINT DEFAULT 1 NOT NULL
);
GO

關鍵語法提醒

  • sysdatabases / sysobjects:SQL 2000 相容寫法;新版建議使用 sys.databases, sys.tables。
  • IDENTITY:自動遞增欄位,常用於代理鍵。
  • PRIMARY KEY / UNIQUE:定義約束同時建立索引。
  • 欄位定義結尾無逗號:最後一個欄位定義後不加逗號,否則語法錯誤。
  • GO:批次分隔符 (非 T-SQL 指令),SSMS/sqlcmd 需要,動態 SQL 執行時需移除。

進階:完全動態 SQL 範本

DECLARE @SQL NVARCHAR(MAX) = N'
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = ''DynamicDB'')
    CREATE DATABASE DynamicDB;';
EXEC sp_executesql @SQL;

採用 sp_executesql 可參數化,避免 SQL 注入風險,適用於資料庫名稱由變數傳入的場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved