#表關係
#使用唯一約束建立1對1表關係//alter table … modify … unique;
#不添加約一約束則為1對多關係
#首先分別創建兩張表
create table man(
mid int primary key auto_increment,
mname varchar(32),
wid int
);
insert into man (mid,mname,wid) values(1,'東尼',1);
insert into man (mid,mname,wid) values(2,'加藤',2);
insert into man (mid,mname,wid) values(3,'山形',3);
>>>
man:
+-----+--------+------+
| mid | mname | wid |
+-----+--------+------+
| 1 | 東尼 | 1 |
| 2 | 加藤 | 2 |
| 3 | 山形 | 3 |
+-----+--------+------+
create table woman(
wid int primary key auto_increment,
wname varchar(32)
);
insert into woman (wid,wname) values(1,'波多');
insert into woman (wid,wname) values(2,'早川');
insert into woman (wid,wname) values(3,'稚名');
>>>
woman:
+-----+--------+
| wid | wname |
+-----+--------+
| 1 | 波多 |
| 2 | 早川 |
| 3 | 稚名 |
+-----+--------+
#對wid添加唯一約束
alter table man modify wid int unique;
#此時添加會報錯,因為只能1對1
insert into man (mid,mname,wid) values(4,'玲木',3);
>>>
ERROR 1062 (23000): Duplicate entry '3' for key 'wid
#1對多//基於上述的操作
#刪除唯一約束使表數據變回一對多的關係
比如:
#查看man建表语句详情
show create table man;
>>>
| man | CREATE TABLE `man` (
`mid` int(11) NOT NULL AUTO_INCREMENT,
`mname` varchar(32) DEFAULT NULL,
`wid` int(11) DEFAULT NULL,
PRIMARY KEY (`mid`),
UNIQUE KEY `wid` (`wid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
#刪除唯一約束//UNIQUE KEY `wid`
#此時進行添加就可以1對多//(多人混戰)誤
insert into man (mid,mname,wid) values(4,'鈴木',3);
#添加成功
>>>Query OK, 1 row affected (0.00 sec)
>>>
+-----+--------+------+
| mid | mname | wid |
+-----+--------+------+
| 1 | 東尼 | 1 |
| 2 | 加藤 | 2 |
| 3 | 山形 | 3 |-----稚名
| 4 | 鈴木 | 3 |-----稚名
+-----+--------+------+
#多對多的表關係//基於上述操作
#在這邊我先把man表中的wid給刪了
>>>
man: woman:
+-----+--------+ +-----+--------+
| mid | mname | | wid | wname |
+-----+--------+ +-----+--------+
| 1 | 東尼 | | 1 | 波多 |
| 2 | 加藤 | | 2 | 早川 |
| 3 | 山形 | | 3 | 稚名 |
| 4 | 鈴木 | +-----+--------+
+-----+--------+
#建立一個集合表,假設演員彼此間合作過的對象的名單
create table tokyo(
mid int,
wid int
);
insert into tokyo (mid,wid) values (1,1);
insert into tokyo (mid,wid) values (1,2);
insert into tokyo (mid,wid) values (2,2);
insert into tokyo (mid,wid) values (2,3);
insert into tokyo (mid,wid) values (3,2);
insert into tokyo (mid,wid) values (4,1);
insert into tokyo (mid,wid) values (4,3);
>>>
+------+------+
| mid | wid |
+------+------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 3 |
| 3 | 2 |
| 4 | 1 |
| 4 | 3 |
+------+------+