mysql - 字段約束條件

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(默認值)

  • not null / default
    create table user(
    	id int primary key,
    	name char(16) not null,
    	age int default 1
    );
    

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方式。使用正常的字段關聯關係的方式即可。
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章