SQL 約束
阿新 • • 發佈:2022-04-17
- 對錶中的資料進行進一步的限制
- 保證資料的正確性、有效性、完整性
- 違反約束的不正確資料無法插入到表中
- 常見的約束
- 主鍵: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) );
主鍵約束與唯一約束的區別
- 主鍵約束,唯一且不能夠為空
- 唯一約束,唯一但是可以為空
- 一個表中只能有一個主鍵,但是可以有多個唯一約束
預設值
- 預設值約束:用來指定某列的預設值
- 語法:
列名 欄位型別 DEFAULT 預設值
-- 建立帶有預設值的表 CREATE TABLE emp7( eid INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20), -- 為 sex 欄位新增預設值 sex CHAR(1) DEFAULT '女' );