-- 檢查存在則刪除
IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'ConstructionDB')
BEGIN
USE master;
DROP DATABASE ConstructionDB;
END
GO
-- 建立資料庫(指定檔案群組、大小、成長)
CREATE DATABASE ConstructionDB
ON (
NAME = 'ConstructionDB_Data',
FILENAME = 'E:\Data\ConstructionDB_Data.mdf',
SIZE = 3MB,
MAXSIZE = 10MB,
FILEGROWTH = 5%
)
LOG ON (
NAME = 'ConstructionDB_Log',
FILENAME = 'E:\Data\ConstructionDB_Log.ldf',
SIZE = 2MB,
MAXSIZE = 5MB,
FILEGROWTH = 1MB
);
USE ConstructionDB;
GO
-- 刪除存在的表
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'T_Flow_Step_Def')
DROP TABLE T_Flow_Step_Def;
GO
-- 建立流程步驟定義表
CREATE TABLE T_Flow_Step_Def (
Step_No INT NOT NULL,
Step_Name VARCHAR(30) NOT NULL,
Step_Des VARCHAR(64) NOT NULL,
Limit_Time INT NOT NULL,
URL VARCHAR(64) NOT NULL,
Remark VARCHAR(256) NOT NULL
);
-- 修改表結構
ALTER TABLE 學生 ADD 班級編號 CHAR(4) NULL; -- 新增欄位
ALTER TABLE 課程 DROP COLUMN 開課日期; -- 刪除欄位
ALTER TABLE 課程 ALTER COLUMN 課程名稱 VARCHAR(20) NOT NULL; -- 修改欄位
-- 主鍵約束
CREATE TABLE Product_Test_Two (
ID CHAR(10) NOT NULL,
Name VARCHAR(20) NULL,
Price MONEY DEFAULT 20.5,
Quantity SMALLINT NULL,
CONSTRAINT PK_ID2 PRIMARY KEY CLUSTERED (ID)
);
-- 唯一約束
CREATE TABLE Student4 (
ID CHAR(8),
Name CHAR(10),
CONSTRAINT PK_ID4 PRIMARY KEY (ID),
CONSTRAINT UK_Name4 UNIQUE (Name)
);
-- 檢查約束:性別只能 M/F,電話格式驗證
CREATE TABLE 員工 (
ID CHAR(5),
Name CHAR(20),
Sex CHAR(2),
Phone INT,
CONSTRAINT PK_ZID PRIMARY KEY (ID),
CONSTRAINT CHK_Sex CHECK (Sex IN ('F', 'M')),
CONSTRAINT CHK_Phone CHECK (Phone LIKE '(010)[0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
);
-- 預設約束
CREATE TABLE 預設約束 (
ID CHAR(5) PRIMARY KEY,
Sex VARCHAR(2) CONSTRAINT CON_Sex DEFAULT 'M'
);
ALTER TABLE 預設約束 ADD Name VARCHAR(10) NULL CONSTRAINT CON_Name DEFAULT '你好寶貝';
-- 新增資料
INSERT INTO 班級 VALUES ('BJ01', '一班');
INSERT INTO 學生 VALUES ('XS01', 'One', 'BJ01');
-- 連接查詢
SELECT 學生.學生編號, 班級.班級名稱, 學生.學生名字
FROM 學生 INNER JOIN 班級 ON 學生.班級編號 = 班級.班級編號;
-- 子查詢統計
SELECT COUNT(學生編號) AS 學生統計
FROM 學生
WHERE 班級編號 IN (SELECT 班級編號 FROM 班級 WHERE 班級編號 = 'BJ01');
-- GROUP BY 統計
SELECT COUNT(學生編號) AS 學生統計, 學生名字, 班級編號
FROM 學生
WHERE 班級編號 = 'BJ01'
GROUP BY 班級編號, 學生名字;
DELETE FROM 班級 WHERE 班級編號 > 'BJ06'; DROP TABLE Product_Test_One;
IF EXISTS ... DROP 或 IF OBJECT_ID(...) IS NULL)CONSTRAINT 之間必須以逗號分隔本文彙整 SQL Server 常用 DDL/DML 操作範例,涵蓋資料庫、資料表、五大約束(PK、FK、UK、CK、DF)、資料增刪改查與結構修改,可作為開發參考速查表。