歡迎來到 SQL 結構化查詢語言基礎系列教學的第五篇。本文將深入探討資料定義語言 (DDL) 的核心指令,包含建立資料庫、建立資料表、修改資料表結構,以及刪除資料表與資料庫的操作。這些指令屬於資料庫架構層面的變更,執行時務必謹慎,因為錯誤操作極易導致資料永久遺失。
DDL 指令直接作用於資料庫的主要結構,一旦執行往往難以復原。在開始任何修改前,請確認:
資料表必須存在於資料庫中。建立資料庫的基本語法:
CREATE DATABASE database_name;
範例:為目錄應用程式建立名為 Catalog 的資料庫:
CREATE DATABASE Catalog;
權限提醒:執行使用者需具備 CREATE DATABASE 權限。若無權限,請洽詢 DBA 代為建立並授權。
建立資料表時需定義欄位名稱與資料類型。基本語法:
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
column3 data_type
);
| 資料類型 | 語法範例 | 說明 |
|---|---|---|
| Char | Char(8) | 固定長度字串,長度由參數指定 |
| Varchar | Varchar(128) | 可變長度字串,最大長度由參數指定 |
| Int | Int(32) | 整數,亦稱 Number 或 Integer |
| Decimal | Decimal(12,2) | 定點數,指定總位數與小數位,亦稱 Numeric |
| Binary | Binary | 二進位物件,通常不可直接顯示,亦稱 Raw 或 Blob |
| Boolean | Boolean | 布林值 (真/假),亦稱 Bit 或 Byte |
依據下表定義欄位:
| 欄位名稱 | 資料類型 |
|---|---|
| prod_id | Int(16) |
| prod_color | Varchar(20) |
| prod_descr | Varchar(255) |
| prod_size | Decimal(8,2) |
對應的建表指令:
CREATE TABLE Products (
prod_id INT(16),
prod_color VARCHAR(20),
prod_descr VARCHAR(255),
prod_size DECIMAL(8,2)
);
建表時可同步定義額外屬性:
-- 定義自動遞增且唯一的主鍵
CREATE TABLE Products (
prod_id INT(16) AUTO_INCREMENT,
prod_color VARCHAR(20),
prod_descr VARCHAR(255),
prod_size DECIMAL(8,2),
UNIQUE (`prod_id`)
);
-- 另行建立索引
CREATE INDEX ProdIndex ON Products (prod_id);
注意:各資料庫廠商對關鍵字支援程度不同,請參閱官方文件。
生產環境強烈建議避免直接修改結構,因可能導致資料遺失或損壞。若必須執行,請先備份。
-- 在 prod_id 之後新增 prod_name
ALTER TABLE Products ADD prod_name VARCHAR(20) AFTER prod_id;
ALTER TABLE Products DROP prod_size;
部分資料庫不支援 DROP 關鍵字。
ALTER TABLE Products CHANGE prod_color prod_color_id INT(20);
風險提示:資料類型轉換可能導致資料遺失。例如將含人名的 VARCHAR 欄位改為 INT,資料將變為預設值 0。
| 欄位名稱 | 資料類型 |
|---|---|
| prod_id | Int(16) |
| prod_name | Varchar(20) |
| prod_color_id | Int(20) |
| prod_descr | Varchar(255) |
極度危險操作,執行前請三思!
DROP TABLE Products;
刪除表格會移除所有資料,但不影響同資料庫內其他表格。
DROP DATABASE Catalog;
資料庫內所有表格與資料將全數清除。多數資料庫支援此指令(SQL-99 標準定義)。
FLUSH TABLE Products;
部分資料庫提供此指令,可清除資料並保留表格結構。
刪除表格或欄位前,必須確認是否有觸發器、預存程序、檢視表或外鍵關聯依賴該物件。部份資料庫提供 RESTRICT (預設,防止刪除) 與 CASCADE (級聯刪除相關物件) 選項。
您已學會資料庫結構的核心操作:建立、修改、刪除資料庫與資料表。這些是設計資料庫驅動應用程式的基礎技能。請記住——DDL 操作無兒戲,動手前請先備份,不確定時請勿執行。