mysql 表结构关系_mysql 表关系 与 修改表结构
mysql 表關系 與 修改表結構
兩張表關系
多對一 以員工和部門舉例 多個員工對應一個部門 foreign key 永遠是在多的那張表中設置外鍵
"""
從左邊的表思考,這張表的多條信息是否能對應上右邊表的一條信息,能對應上(成立),再從右邊的表思考,
右表的多條信息是否能對應上左表的一條信息(不成立),那么兩張表就可以確定是多對一關系,右表是多,左表是一,右邊表就是設置外鍵的表
"""
多個員工對應一個部門
員工表關聯部門表
員工表是多 部門表是一
foreign key(字段信息多的) references 表(字段信息少的)
多對多 以書和作者舉例 多個作者合作出一本書(成立),多本書是一個作者(成立)
這時就(產成第三張表) 把兩個表的id,作為第三張表的外鍵,創建關系表
多個作者可以共同出版一本書
多本書可以是一個作者寫的
關系表設置外鍵 foreign key 分別對應作者和書的id
一對一 以客戶 和 學員為例 (一個客戶報名繳費后,只能對應一個學員)
先有客戶表,客戶成交后成為學員,后出現的學員表設置外鍵,并且要約束這個外鍵是唯一,關聯客戶表一對一關系成立
如果1和2都不成立,而是左表的一條記錄唯一對應右表的一條記錄,反之亦然。這種情況很簡單,
就是在左表foreign key右表的基礎上,將左表的外鍵字段設置成unique即可
分析步驟
"""
#1、先站在左表的角度去找
是否左表的多條記錄可以對應右表的一條記錄,如果是,則證明左表的一個字段foreign key 右表一個字段(通常是id)
#2、再站在右表的角度去找
是否右表的多條記錄可以對應左表的一條記錄,如果是,則證明右表的一個字段foreign key 左表一個字段(通常是id)
#3、總結:
#多對一:
如果只有步驟1成立,則是左表多對一右表
如果只有步驟2成立,則是右表多對一左表
#多對多
如果步驟1和2同時成立,則證明這兩張表時一個雙向的多對一,即多對多,需要定義一個這兩張表的關系表來專門存放二者的關系
#一對一:
如果1和2都不成立,而是左表的一條記錄唯一對應右表的一條記錄,反之亦然。這種情況很簡單,
就是在左表foreign key右表的基礎上,將左表的外鍵字段設置成unique即可
"""
修改表結構
對表結構進行修改的情況在那些時候發生?
創建項目之前
項目開發、運行過程中"""
語法:
1. 修改表名
alter table 表名
rename 新表名;
2. 增加字段
alter table 表名
add 字段名 數據類型 [完整性約束條件…],
add 字段名 數據類型 [完整性約束條件…];
3. 刪除字段
alter table 表名
drop 字段名;
4. 修改字段
alter table 表名
modify 字段名 數據類型 [完整性約束條件…];
alter table 表名
change 舊字段名 新字段名 舊數據類型 [完整性約束條件…];
alter table 表名
change 舊字段名 新字段名 新數據類型 [完整性約束條件…];
5.修改字段排列順序/在增加的時候指定字段位置
alter table 表名
add 字段名 數據類型 [完整性約束條件…] first;
alter table 表名
add 字段名 數據類型 [完整性約束條件…] after 字段名;
alter table 表名
change 字段名 舊字段名 新字段名 新數據類型 [完整性約束條件…] first;
alter table 表名
modify 字段名 數據類型 [完整性約束條件…] 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 修改已經存在的字段 的類型 寬度 約束
alter table 表名 change 修改已經存在的字段 的類型 寬度 約束 和 字段名字
alter table 表名 add 字段名 數據類型(寬度) 約束 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;
內容來源于網絡如有侵權請私信刪除
總結
以上是生活随笔為你收集整理的mysql 表结构关系_mysql 表关系 与 修改表结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java最终类最终方法_Java中,什么
- 下一篇: java 方法 参数 引用_Java 基