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

SQL 約束總覽:六大核心約束類型與應用時機

     編輯:SQL 基礎

SQL 約束完整總覽


什麼是 SQL 約束?

SQL 約束是定義在資料表欄位上的規則,用於限制輸入資料的格式、範圍與關聯性。當資料操作違反約束條件時,資料庫會拒絕該操作並回報錯誤,確保資料的正確性與一致性。約束可在 CREATE TABLE 建表時定義,也可事後透過 ALTER TABLE 新增或移除。


CREATE TABLE 定義約束的基本語法

CREATE TABLE table_name (
  column_name1 data_type(size) constraint_name,
  column_name2 data_type(size) constraint_name,
  column_name3 data_type(size) constraint_name,
  ...
);

六大常見約束類型詳細解析

約束類型功能描述典型應用場景
NOT NULL 欄位不接受 NULL 值 必填欄位:身分證字號、Email、訂單日期
UNIQUE 確保欄位值唯一(可為 NULL) 帳號、手機號、序號等不可重複欄位
PRIMARY KEY NOT NULL + UNIQUE,表的唯一識別碼 每張表的主鍵:ID、流水號、複合鍵
FOREIGN KEY 維護參考完整性,值必須存在於參考表 訂單的 CustomerID 參考 Customers 表
CHECK 限制欄位值符合特定條件 年齡 > 0、薪資範圍、狀態碼在枚舉值內
DEFAULT 未指定值時自動填入預設值 建立時間 DEFAULT CURRENT_TIMESTAMP、狀態預設 '啟用'

約束命名最佳實務

建議為每個約束指定有意義的名稱,格式建議:{前綴}_{表名}_{欄位名},例如:

  • Primary Key:pk_Orders_OrderID
  • Foreign Key:fk_Orders_CustomerID
  • Unique:uk_Users_Email
  • Check:ck_Products_Price_Positive

命名約束便於後續 ALTER TABLE ... DROP CONSTRAINT 精確移除,也利於錯誤訊息閱讀。


後續學習路徑

本文為總覽,各約束的詳細語法、跨資料庫差異與進階用法請參考後續各專題文章。

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