約束性條件2
1、primary key
特征: 不能重復(fù),且不可以為空。
innodb存儲引擎,一張表內(nèi)必須有一個(gè)主鍵。
可以不指定主鍵,但是一旦mysql識別標(biāo)的類型時(shí)innodb,它就開始尋找字段,找不為空且唯一的字段為主鍵,若找不到,就用隱藏的字段。
所以 innodb 建一個(gè)表,應(yīng)該指定一個(gè)主鍵。
單列主鍵:

如果插入重復(fù)的id:
會報(bào)錯(cuò):

因?yàn)閜rimary key,不為空且唯一
復(fù)合主鍵:
多個(gè)字段聯(lián)合成為主鍵。例如:
插入內(nèi)容:

2、auto
建表的時(shí)候,必須要有的ID字段,這個(gè)用來表示第幾條記錄,這樣每次都需要添加比較繁瑣,可以找到一個(gè)方式自動(dòng)添加。
自增長的字段必須是一個(gè)key:


可以實(shí)現(xiàn)自動(dòng)添加id,同時(shí)也可以手動(dòng)傳值

# 修改默認(rèn)起始偏移量和單步步長
show variables like 'auto_inc%';? #查詢當(dāng)前狀態(tài)? % 任意個(gè)數(shù)的任意字符

1)步長
auto_increment_increment 默認(rèn)為1
2)起始偏移量
auto_increment_offset默認(rèn)1
3)設(shè)置步長
會話級別 ,本次連接有效
全局,所有會話都有效,前提是重啟會話加載這條語句
4)設(shè)置起始偏移量 ,一定要小于步長的
設(shè)置完,需要關(guān)閉會話,exit,然后再 mysql進(jìn)入,

然后創(chuàng)建個(gè)表,查看插入數(shù)據(jù)時(shí),id分布:
插入數(shù)據(jù):

可以看到此時(shí)初始序號3,步長5.
在這里,補(bǔ)充一下????清空表方式:
delete from t20; 清除全部內(nèi)容

用delete清空表后,查詢表,發(fā)現(xiàn)此時(shí)innodb引擎將id定位在23,也就是說,再向里面插入數(shù)據(jù),id計(jì)數(shù)沖23開始,意味著delete并沒有把表真正的清空。
所以清空表不要用delete ,常跟where 匹配使用,刪除固定字段用。清空表應(yīng)用:
truncate t20;?
