2.6 約束
概念:對(duì)表中數(shù)據(jù)進(jìn)行限定
分類:
非空約束:not null
唯一約束:unique
主鍵約束:primary key
外鍵約束:foreign key
2.6.1 非空約束 not null
限定字段值不能為空
創(chuàng)建表時(shí)帆谍,添加非空約束
createtable表名(字段名 字段類型notnull, 字段名 字段類型 [約束], ...);
創(chuàng)建表后八拱,添加非空約束
altertable表名 modify 字段名 字段類型notnull;
注:已存在空值的字段不能被設(shè)置成非空的
刪除非空約束(設(shè)置字段允許有空值)
altertable表名 modify 字段名 字段類型;
2.6.2 唯一約束 unique
限定某一字段的字段值不能有重復(fù)
創(chuàng)建表時(shí)畜晰,添加唯一約束
createtable表名(字段名 字段類型 unique, 字段名 字段類型 [約束], ...);
創(chuàng)建表后,添加唯一約束
altertable表名 modify 字段名 字段類型 unique;
刪除唯一約束(設(shè)置字段允許有重復(fù)值)
altertable表名dropindex 字段名;
注:
唯一約束的值可以是空值铺韧,可以存在多個(gè)空值,但是只能有唯一的“null”值
一個(gè)字段可以同時(shí)設(shè)置成非空唯一镀虐,非空和唯一約束的順序是任意的
2.6.3 主鍵約束 primary key
特點(diǎn):
1.? 非空且唯一
一張表只能有一個(gè)字段是主鍵
主鍵是表中記錄的唯一標(biāo)識(shí)
創(chuàng)建表時(shí)突照,添加主鍵約束
createtable表名(字段名 字段類型 primary key, 字段名 字段類型 [約束], ...);
createtable表名(字段名 字段類型 [約束], 字段名 字段類型 [約束], ... , primary key(主鍵字段));
創(chuàng)建表后轴总,添加主鍵約束
altertable表名 modify 字段名 字段類型 primary key;
刪除主鍵
altertable表名dropprimary key;
注意:刪除主鍵約束后直颅,主鍵仍有非空約束
主鍵自增長(zhǎng):
概念:如果某個(gè)字段是數(shù)值類型的主鍵字段,可以使用 auto_increment 來實(shí)現(xiàn)主鍵自增長(zhǎng)
注:
1.? 自增長(zhǎng)的主鍵必須是數(shù)值類型的(整數(shù)或者小數(shù))
當(dāng)添加記錄時(shí)怀樟,不為該字段賦值或者賦值為null功偿,該字段就會(huì)自增長(zhǎng)
第一條自增長(zhǎng)的字段值是 1
從已存在的最大值開始 + 1
從已存在的最大值是小數(shù)時(shí),自增長(zhǎng)的值是向上取整
只有主鍵可以自增長(zhǎng)
創(chuàng)建表時(shí)往堡,添加主鍵自增長(zhǎng)
createtable表名(字段名 字段類型 primary key auto_increment, 字段名 字段類型 [約束], ...);
創(chuàng)建表后械荷,添加主鍵自增長(zhǎng)
altertable表名 modify 主鍵字段 字段類型 auto_increment;
創(chuàng)建表后,添加主鍵約束的同時(shí)虑灰,設(shè)置自增長(zhǎng)
altertable表名 modify 字段名 字段類型 primary key auto_increment
刪除自增長(zhǎng)
altertable表名 modify 字段名 字段類型;
三吨瞎,多表
3.1 表與表之間的關(guān)系
一對(duì)一
例如:人和身份證、公司與注冊(cè)地址
一對(duì)多(多對(duì)一)
例如:部門和員工穆咐、商品和分類
多對(duì)多
例如:學(xué)生和課程颤诀、訂單和商品
3.2 多表關(guān)系的實(shí)現(xiàn)
一對(duì)一
在任何一方添加外鍵指向另一方法的主鍵
一對(duì)多
在多的一方建立外鍵,指向一的一方的主鍵
多對(duì)多
需要借助第三張中間表对湃。中間表至少要包含兩個(gè)字段崖叫,這兩個(gè)字段都是外鍵,分別指向兩張表的主鍵熟尉。