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

SQL Server 表的創建、管理與數據操作實戰指南

     編輯:關於SqlServer

本文以實驗教學形式,系統講解 SQL Server 中資料庫表的創建、修改、刪除及數據增刪改查(CRUD)核心操作,適用於初學者快速建立實戰技能。

一、 實驗目標與環境

  • 目的:掌握 T-SQL 語法,鞏固關係運算與資料庫基礎。
  • 環境:SQL Server 企業管理器 + 查詢分析器;實驗數據庫 stu_DB。
  • 核心表結構:Student(學生)、Course(課程)、SC(選課)、Teacher(教師)、TC(教師課程)。

二、 數據定義語言(DDL)實戰

2.1 表的創建:圖形化 vs 腳本

方式一:企業管理器圖形化建表

  1. 展開數據庫 → 右鍵「表」 → 「新建表」。
  2. 在網格中定義列名、數據類型、長度、允許空值。
  3. 右鍵屬性可設定文件組(將高併發表分離到不同磁碟文件組提升 I/O)。
  4. 保存並命名(建議採用有業務含義的名稱)。

方式二:T-SQL 腳本建表(推薦,可版本控制)

-- 語法結構
CREATE TABLE [database_name.[owner].] table_name (
    column_name data_type [DEFAULT 'default_value'] 
    [CONSTRAINT constraint_name constraint_definition],
    ...
    [IDENTITY (seed, increment)]
) [ON {filegroup | DEFAULT}] [TEXTIMAGE_ON {filegroup | DEFAULT}];

-- 範例 1:學生表(含主鍵、非空、檢查、默認約束)
CREATE TABLE student (
    sno CHAR(8) PRIMARY KEY,
    sname CHAR(10) NOT NULL,
    ssex CHAR(2) CHECK (ssex='男' OR ssex='女'),
    sage SMALLINT,
    sdept CHAR(20) DEFAULT ('計算機系')
);

-- 範例 2:自增主鍵 + 默認值 + 檢查約束
CREATE TABLE ta1 (
    pid INT IDENTITY(1,1) PRIMARY KEY,
    [name] CHAR(10) DEFAULT 'unknow',
    birthday DATETIME CHECK (birthday < GETDATE())
);

2.2 表的修改:ALTER TABLE 核心場景

-- 1. 新增列
ALTER TABLE student ADD class CHAR(6);

-- 2. 刪除列
ALTER TABLE student DROP COLUMN Sdept;

-- 3. 新增帶 CHECK 約束的列
ALTER TABLE student ADD grade INT CONSTRAINT ch_grade CHECK (grade < 100);

-- 4. 新增帶默認值的可空列
ALTER TABLE student ADD matriculationday SMALLDATETIME NULL 
    CONSTRAINT adddateflt DEFAULT GETDATE();

實驗要求:自行設計不少於 8 條表結構修改語句並驗證。

2.3 表的刪除:DROP TABLE 依賴順序

刪除有外鍵關聯的表時,必須先刪除子表(如 SC、Result),再刪除父表(Student、Course、Grade),否則會報錯。企業管理器中可直接右鍵刪除,腳本用 DROP TABLE table_name。

三、 用戶自定義數據類型管理

  • 創建:企業管理器右鍵「用戶定義數據類型」→ 新建;或 EXEC sp_addtype newtype2, 'CHAR(6)', 'not null'。
  • 重命名:EXEC sp_rename 'old_name', 'new_name'。
  • 刪除:EXEC sp_droptype 'type_name'。注意:被表引用的類型無法直接刪除。

四、 數據操作語言(DML)核心實戰

4.1 數據插入(INSERT)

-- 顯式列出欄位(推薦)
INSERT INTO student (Sno, Sname, Ssex, Sage, Sdept) 
VALUES ('04265005', '劉輝', '男', 21, '計算機系');

-- 利用默認值
INSERT INTO student (Sno, Sname, Ssex, Sage) 
VALUES ('04265006', '李慧', '女', 21); -- Sdept 自動填 '計算機系'

-- 自增表插入
INSERT INTO ta1 ([name], birthday) VALUES ('lan', '1977-03-02');

驗證重點:違反唯一性/檢查/外鍵約束時的報錯行為;默認值生效情況;非法數據是否能入庫。

4.2 數據更新(UPDATE)

UPDATE student SET Sdept = '機械系' WHERE Sno = '04265005';

同樣需驗證約束邊界條件。

4.3 數據刪除(DELETE vs TRUNCATE)

-- 條件刪除(記錄日誌,可回滾,觸發器生效)
DELETE FROM student WHERE Sno = '04265005';

-- 全表清空(不記錄日誌,不可回滾,重置自增種子,速度極快)
TRUNCATE TABLE student;

驗證重點:外鍵約束下的刪除阻擋行為。

五、 批量測試數據準備

為後續實驗,需向 5 張核心表各插入 ≥20 條測試數據,涵蓋各類約束邊界值。建議編寫腳本自動化生成,確保數據分布真實。

本實驗涵蓋了從對象創建到數據維護的完整生命周期,掌握這些技能是 SQL Server 開發與管理的基石。

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