萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> 資料庫綜合

SQL 資料定義語言(DDL)核心指令:建表、修改、索引與刪除

DDL 核心指令速覽

指令用途是否可回滾
CREATE建立資料庫物件(Table、View、Index、Procedure...)視資料庫而定(多數隱含提交)
ALTER修改物件結構通常隱含提交
DROP刪除物件通常隱含提交
TRUNCATE清空資料表(保留結構)通常隱含提交

建立資料表 CREATE TABLE

CREATE TABLE employees (
  emp_id     INT            NOT NULL PRIMARY KEY,
  name       VARCHAR(50)    NOT NULL,
  email      VARCHAR(100)   UNIQUE,
  dept_id    INT            NOT NULL,
  hire_date  DATE           DEFAULT CURRENT_DATE,
  salary     DECIMAL(10,2)  CHECK (salary >= 0),
  FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

關鍵字說明:

  • NOT NULL:禁止空值。
  • PRIMARY KEY:主鍵,隱含 NOT NULL + UNIQUE。
  • UNIQUE:唯一性約束。
  • DEFAULT:預設值。
  • CHECK:資料驗證規則。
  • FOREIGN KEY ... REFERENCES:參考完整性。

修改資料表 ALTER TABLE

-- 新增欄位
ALTER TABLE employees ADD COLUMN phone VARCHAR(20);

-- 修改欄位型別/屬性
ALTER TABLE employees ALTER COLUMN salary TYPE NUMERIC(12,2);
ALTER TABLE employees ALTER COLUMN name SET NOT NULL;

-- 新增/刪除主鍵
ALTER TABLE employees ADD PRIMARY KEY (emp_id);
ALTER TABLE employees DROP PRIMARY KEY;

-- 新增/刪除外鍵
ALTER TABLE employees ADD CONSTRAINT fk_dept FOREIGN KEY (dept_id) REFERENCES departments(dept_id);
ALTER TABLE employees DROP CONSTRAINT fk_dept;

-- 重命名表/欄
ALTER TABLE employees RENAME TO staff;
ALTER TABLE employees RENAME COLUMN phone TO mobile;

索引管理

-- 建立一般索引
CREATE INDEX idx_emp_name ON employees(name);

-- 唯一索引
CREATE UNIQUE INDEX idx_emp_email ON employees(email);

-- 複合索引
CREATE INDEX idx_dept_hire ON employees(dept_id, hire_date);

-- 刪除索引
DROP INDEX idx_emp_name ON employees;  -- MySQL
DROP INDEX employees.idx_emp_name;     -- SQL Server/PostgreSQL

原則:常用於 WHERE、JOIN、ORDER BY 的欄位建索引;避免過度索引拖慢寫入。

刪除物件 DROP

DROP TABLE employees;           -- 連結構帶資料一起刪
DROP VIEW v_emp_summary;
DROP INDEX idx_emp_name ON employees;

常見資料型別對照

類別常用型別備註
數值INT, BIGINT, DECIMAL(p,s), FLOAT, REALDECIMAL 精確儲存金額
字串VARCHAR(n), CHAR(n), TEXT, CLOBVARCHAR 變長、CHAR 定長
日期時間DATE, TIME, DATETIME, TIMESTAMPTIMESTAMP 含時區資訊
二進位BLOB, BYTEA, VARBINARY圖片、檔案
布林BOOLEAN, BIT
其他UUID, JSON, XML, GEOMETRY視資料庫支援度

命名慣例建議

  • 表名:複數名詞 snake_case(users, order_items)。
  • 欄位:單數名詞 snake_case。
  • 主鍵:id 或 table_id。
  • 外鍵:ref_table_id。
  • 索引:idx_<table>_<col>、uk_<table>_<col>。
  • 約束:fk_<table>_<ref_table>、ck_<table>_<rule>。

良好的 DDL 規範是資料庫長期可維護的基石。

copyright © 萬盛學電腦網 all rights reserved