1. 程式人生 > 其它 >SQL 約束

SQL 約束

  • 對錶中的資料進行進一步的限制
  • 保證資料的正確性、有效性、完整性
  • 違反約束的不正確資料無法插入到表中
  • 常見的約束
    • 主鍵:PRIMARY KEY
    • 非空:NOT NULL
    • 唯一:UNIQUE
    • 預設:DEFAULT
    • 外來鍵:FOREIGN KEY    

主鍵約束

 
  • 主鍵:一列(或一組列),其值能夠唯一標識表中每一行
  • 特點:不可重複,唯一,非空
  • 語法:列名 欄位型別 PRIMARY KEY

新增主鍵約束

 
-- 建立一個帶主鍵的表
CREATE TABLE emp1(
    -- 設定主鍵 唯一 非空 
    eid INT PRIMARY KEY, 
    ename VARCHAR(20), 
    sex CHAR(1)
);

-- 給存在的表新增主鍵
CREATE TABLE emp2( 
    eid INT , 
    ename VARCHAR(20), 
    sex CHAR(1) 
)

-- 通過 DDL 語句進行設定 
ALTER TABLE emp2 ADD PRIMARY KEY(eid);

建立主鍵自增的表

  • AUTO_INCREMENT:表示自動增長(欄位型別必須是整數型別)
-- 建立主鍵自增的表 
CREATE TABLE emp3(
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    ename VARCHAR(20), 
    sex CHAR(1) 
);

修改主鍵自增的起始值

-- 建立主鍵自增的表,自定義自增其實值 
CREATE TABLE emp4( 
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    ename VARCHAR(20), 
    sex CHAR(1) 
)AUTO_INCREMENT=100;

delete from emp4; 如果使用這個刪除,自增值會從刪除的那個值往後增加

truncate table emp4; 如果使用這個刪除,則自增值會從1開始,因為該語法是整個表刪除

 

刪除主鍵約束

-- 刪除表中的主鍵
ALTER TABLE 表名 DROP PRIMARY KEY;

-- 使用 DDL 語句刪除表中的主鍵 
ALTER TABLE emp2 DROP PRIMARY KEY; 
-- 查看錶結構
DESC emp2;

選擇主鍵原則

  • 針對業務設計主鍵,往建議每張表都設計一個主鍵
  • 主鍵可以沒有業務意義,只需要保證不重複

非空約束

  • 非空約束特點: 某一列不予許為空
  • 語法:列名 欄位型別 NOT NULL
-- 新增非空約束
CREATE TABLE emp5( 
    eid INT PRIMARY KEY AUTO_INCREMENT, 
    -- ename 欄位不能為空 
    ename VARCHAR(20) NOT NULL, 
    sex CHAR(1) 
);

唯一約束

  • 唯一約束: 表中的某一列的值不能重複;可以包含null值
  • 對 NULL 不做唯一的判斷
  • 語法:列名 欄位型別 UNIQUE
-- 建立帶有唯一約束的表  
CREATE TABLE emp6(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    -- 為 ename 欄位新增唯一約束
    ename VARCHAR(20) UNIQUE,
    sex CHAR(1) 
);

主鍵約束與唯一約束的區別

  1. 主鍵約束,唯一且不能夠為空
  2. 唯一約束,唯一但是可以為空
  3. 一個表中只能有一個主鍵,但是可以有多個唯一約束

預設值

  • 預設值約束:用來指定某列的預設值
  • 語法:列名 欄位型別 DEFAULT 預設值
-- 建立帶有預設值的表 
CREATE TABLE emp7( 
    eid INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20), 
    -- 為 sex 欄位新增預設值 
    sex CHAR(1) DEFAULT '女'
);