primary key(主鍵->not null unique)
- 單一唯一:不爲空且唯一
create table user(
id int primary key, #寫法一
no int,
primary key(no) #寫法二
);
- 複合主鍵
create table service(
ip char(15),
port int,
primary key(ip,port)
);
unique(唯一)
- 單一唯一:
create table department (
id int unique, #寫法一
no int,
unique(no) #寫法二
);
- 聯合唯一:unique(字段1,字段2) 字段1和字段2聯合起來唯一
create table servers (
id int,
ip char(15),
port int,
unique(ip,port)
);
not null(不爲空) default(默認值)
auto_increment(自增長)
```
create table user(
id int primary key auto_increment,
name char(16)
);
```
foreign(外鍵:用於建立表之間的關係)
- 外鍵的主要作用是保持數據的一致性、完整性、和兩表自己的關聯性
- 外鍵字段值來源固定(對應表的主鍵)
- 級聯刪除
- 級聯更新
foreign key(字段) references 被關聯表名(被關聯字段名)
- 先創建被關聯的表,且被關聯字段唯一(unique)
create table department(
id int unique,
name char(15),
comm char(20)
);
- 再創建關聯表
create table employee(
id int primary key auto_increment,
name char(10),
sex enum("man","woman") not null default "man",
dep_id int,
foreign key(dep_id) references department(id) on delete cascade on update cascade
#on delete cascade 級聯刪除(被關聯表的記錄刪除本關聯表關聯的記錄也跟着刪除)
#on update cascade 級聯更新(被關聯表的記錄更新本關聯表關聯的記錄外鍵也跟着更新)
);
ps:因爲foreign key的方式使得兩張表之間的關係變得耦合性/關聯性高,刪除/更新都會有影響。
故一般正常項目開發儘量不使用fk方式。使用正常的字段關聯關係的方式即可。