mysql 表结构关系_mysql 表关系 与 修改表结构
mysql 表關(guān)系 與 修改表結(jié)構(gòu)
兩張表關(guān)系
多對(duì)一 以員工和部門(mén)舉例 多個(gè)員工對(duì)應(yīng)一個(gè)部門(mén) foreign key 永遠(yuǎn)是在多的那張表中設(shè)置外鍵
"""
從左邊的表思考,這張表的多條信息是否能對(duì)應(yīng)上右邊表的一條信息,能對(duì)應(yīng)上(成立),再?gòu)挠疫叺谋硭伎?
右表的多條信息是否能對(duì)應(yīng)上左表的一條信息(不成立),那么兩張表就可以確定是多對(duì)一關(guān)系,右表是多,左表是一,右邊表就是設(shè)置外鍵的表
"""
多個(gè)員工對(duì)應(yīng)一個(gè)部門(mén)
員工表關(guān)聯(lián)部門(mén)表
員工表是多 部門(mén)表是一
foreign key(字段信息多的) references 表(字段信息少的)
多對(duì)多 以書(shū)和作者舉例 多個(gè)作者合作出一本書(shū)(成立),多本書(shū)是一個(gè)作者(成立)
這時(shí)就(產(chǎn)成第三張表) 把兩個(gè)表的id,作為第三張表的外鍵,創(chuàng)建關(guān)系表
多個(gè)作者可以共同出版一本書(shū)
多本書(shū)可以是一個(gè)作者寫(xiě)的
關(guān)系表設(shè)置外鍵 foreign key 分別對(duì)應(yīng)作者和書(shū)的id
一對(duì)一 以客戶(hù) 和 學(xué)員為例 (一個(gè)客戶(hù)報(bào)名繳費(fèi)后,只能對(duì)應(yīng)一個(gè)學(xué)員)
先有客戶(hù)表,客戶(hù)成交后成為學(xué)員,后出現(xiàn)的學(xué)員表設(shè)置外鍵,并且要約束這個(gè)外鍵是唯一,關(guān)聯(lián)客戶(hù)表一對(duì)一關(guān)系成立
如果1和2都不成立,而是左表的一條記錄唯一對(duì)應(yīng)右表的一條記錄,反之亦然。這種情況很簡(jiǎn)單,
就是在左表foreign key右表的基礎(chǔ)上,將左表的外鍵字段設(shè)置成unique即可
分析步驟
"""
#1、先站在左表的角度去找
是否左表的多條記錄可以對(duì)應(yīng)右表的一條記錄,如果是,則證明左表的一個(gè)字段foreign key 右表一個(gè)字段(通常是id)
#2、再站在右表的角度去找
是否右表的多條記錄可以對(duì)應(yīng)左表的一條記錄,如果是,則證明右表的一個(gè)字段foreign key 左表一個(gè)字段(通常是id)
#3、總結(jié):
#多對(duì)一:
如果只有步驟1成立,則是左表多對(duì)一右表
如果只有步驟2成立,則是右表多對(duì)一左表
#多對(duì)多
如果步驟1和2同時(shí)成立,則證明這兩張表時(shí)一個(gè)雙向的多對(duì)一,即多對(duì)多,需要定義一個(gè)這兩張表的關(guān)系表來(lái)專(zhuān)門(mén)存放二者的關(guān)系
#一對(duì)一:
如果1和2都不成立,而是左表的一條記錄唯一對(duì)應(yīng)右表的一條記錄,反之亦然。這種情況很簡(jiǎn)單,
就是在左表foreign key右表的基礎(chǔ)上,將左表的外鍵字段設(shè)置成unique即可
"""
修改表結(jié)構(gòu)
對(duì)表結(jié)構(gòu)進(jìn)行修改的情況在那些時(shí)候發(fā)生?
創(chuàng)建項(xiàng)目之前
項(xiàng)目開(kāi)發(fā)、運(yùn)行過(guò)程中"""
語(yǔ)法:
1. 修改表名
alter table 表名
rename 新表名;
2. 增加字段
alter table 表名
add 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…],
add 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…];
3. 刪除字段
alter table 表名
drop 字段名;
4. 修改字段
alter table 表名
modify 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…];
alter table 表名
change 舊字段名 新字段名 舊數(shù)據(jù)類(lèi)型 [完整性約束條件…];
alter table 表名
change 舊字段名 新字段名 新數(shù)據(jù)類(lèi)型 [完整性約束條件…];
5.修改字段排列順序/在增加的時(shí)候指定字段位置
alter table 表名
add 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…] first;
alter table 表名
add 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…] after 字段名;
alter table 表名
change 字段名 舊字段名 新字段名 新數(shù)據(jù)類(lèi)型 [完整性約束條件…] first;
alter table 表名
modify 字段名 數(shù)據(jù)類(lèi)型 [完整性約束條件…] after 字段名;
6.去掉null約束
create table t(id int unique,name char(10) not null);
alter table t modify name char(10) null;
7.添加null約束
alter table t modify name char(10) not null;
8.去掉unique約束
alter table t drop index id;
9.添加unique約束
alter table t modify id int unique;
10.刪除表
drop table 表名;
"""
alter table 表名 modify 修改已經(jīng)存在的字段 的類(lèi)型 寬度 約束
alter table 表名 change 修改已經(jīng)存在的字段 的類(lèi)型 寬度 約束 和 字段名字
alter table 表名 add 字段名 數(shù)據(jù)類(lèi)型(寬度) 約束 first/after name
alter table 表名 drop 字段名
alter table 表名 modify name varchar(12) not null
alter table 表名 change name new_name varchar(12) not null
id name age
alter table 表名 modify age int not null after id;
alter table 表名 modify age int not null first;
內(nèi)容來(lái)源于網(wǎng)絡(luò)如有侵權(quán)請(qǐng)私信刪除
總結(jié)
以上是生活随笔為你收集整理的mysql 表结构关系_mysql 表关系 与 修改表结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java最终类最终方法_Java中,什么
- 下一篇: ue4加载本地版本_【虚幻4】创建本地数