日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql 表结构关系_mysql 表关系 与 修改表结构

發(fā)布時(shí)間:2025/4/16 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 表结构关系_mysql 表关系 与 修改表结构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。