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

DB2 表管理 DDL 全攻略:建表、修改、約束與表空間指定

     編輯:DB2 教學

基本建表

CREATE TABLE books (
    bookid INTEGER,
    bookname VARCHAR(100),
    isbn CHAR(10)
);

複製表結構 (LIKE)

CREATE TABLE mybooks LIKE books;

指定表空間

CREATE TABLE t1 (c1 INT) IN ts1;
CREATE TABLE t2 (c1 FLOAT) IN ts1;

刪除表

DROP TABLE tab_name;

欄位增刪

-- 新增
ALTER TABLE test ADD COLUMN c2 CHAR(8);

-- ⚠️ DB2 不支援直接 DROP COLUMN
-- 需重建表或使用 ADMIN_MOVE_TABLE 遷移

欄位屬性修改與約束

1. 修改長度/型別

ALTER TABLE tab_name ALTER COLUMN c1 SET DATA TYPE VARCHAR(20);

2. 設定 NOT NULL

ALTER TABLE tab_name ALTER COLUMN c1 SET NOT NULL;
-- 或建表時
CREATE TABLE tab_name (id INTEGER NOT NULL);

3. 設定預設值

CREATE TABLE tab_name (
    id INTEGER,
    name VARCHAR(10) WITH DEFAULT 'none'
);

4. 自動遞增 (IDENTITY)

CREATE TABLE tab_name (
    id INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)
);

5. 唯一性約束 (三種方式)

-- 主鍵 (隱含 NOT NULL + UNIQUE)
CREATE TABLE tab_name (id INT NOT NULL PRIMARY KEY);

-- UNIQUE 約束
ALTER TABLE tab_name ADD CONSTRAINT uq_id UNIQUE (id);

-- 唯一索引
CREATE UNIQUE INDEX idx_name ON tab_name (id);

6. 檢查約束

ALTER TABLE books ADD booktype CHAR(1) CHECK (booktype IN ('F','N'));

7. 參照完整性 (外鍵)

CREATE TABLE authors (
    authorid INTEGER NOT NULL PRIMARY KEY,
    lname VARCHAR(100),
    fname VARCHAR(100)
);

CREATE TABLE books (
    bookid INTEGER NOT NULL PRIMARY KEY,
    bookname VARCHAR(100),
    isbn CHAR(10),
    authorid INTEGER REFERENCES authors
);

實務建議

  • 命名規範: pk_表名、fk_表名_參照表、uq_表名_欄位、ck_表名_規則
  • 外鍵索引: 參照欄位**必建索引**,避免 RI 掃描全表鎖升級 (見隔離級別 RR 文章)
  • DDL 變更窗口: 生產環境 ALTER TABLE 可能鎖表,安排維護窗口或用 ADMIN_MOVE_TABLE 線上遷移
  • 版本控制: 所有 DDL 納入版控,採用遷移腳本管理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved