MySQL完整性約束條件
作用:限制如何給欄位賦值
約束條件:
Null 允許為空,預設設定,not null不允許為空;注:" "或"null"不為空
key 索引型別
Default 設定預設值,預設為null
Extra 額外設定
索引:
索引優缺點:
優點:通過建立唯一索引,保證資料唯一性;加快資料的檢索速度
缺點:當對資料進行增,刪,改,索引要動態維護,減慢寫的速度;索引要佔用物理空間
檢視是否有索引欄位:DESC 表名; #檢視"key"列
檢視索引詳細:SHOW INDEX FROM 表名; #column_name:欄位 key_name:索引名,索引名預設和欄位同名
索引的型別:
INDEX:普通索引
建表時設定:
CREATE TABLE 表名(
……
INDEX(欄位名1),INDEX(欄位名2),INDEX(欄位名n) #設定完欄位後設置
);
已有表設定:CREATE INDEX 索引名 on 表名(欄位名);
刪除索引:DROP INDEX 索引名 on 表名;
UNIQUE:唯一索引
建表時設定:
CREATE TABLE 表名(
……
UNIQUE(欄位名1),UNIQUE(欄位名2),UNIQUE(欄位名n)
);
已有表設定: CREATE UNIQUE INDEX 索引名 ON 表名
刪除索引:DROP INDEX 索引名 ON 表名;
注:若欄位為not null並且是unique標誌會變為PRI
FULLTEXT
PRIMARY KEY:主鍵
建表時設定:
CREATE TAVLE 表名(
……
PRIMARY KEY(欄位名) #也可以直接寫在欄位後,多個欄位表示複合主鍵
);
已有表設定:
ALTER TABLE 表名
ADD
PRIMARY KEY(欄位名); #受資料影響,多個欄位名錶示覆合主鍵
刪除主鍵:
ALTER TABLE 表名
DROP
PRIMARY KEY; #複合主鍵必須同時刪除
注:複合主鍵的多個數據不能完全一樣;主鍵常和AUTO_INCREMENT連用,實現自增,從最大值開始加1
FOREIGN KEY:外來鍵
使用外來鍵的條件
- 表的儲存引擎必須是innodb
- 欄位型別要一致
- 被參照欄位必須要是索引型別的一種(primarykey)
外來鍵的作用:給表中欄位賦值時,欄位的值只能在另外一張表的欄位值裡選擇
注:用desc檢視時顯示MUI標誌,要用"show create table 表名;"檢視建表過程
建表時設定
無符號: UNSIGNED