电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

mysql外鍵基本功能與用法詳解

瀏覽:17日期:2023-10-15 15:16:36

本文實例講述了mysql外鍵基本功能與用法。分享給大家供大家參考,具體如下:

本文內容: 什么是外鍵 外鍵的增加 外鍵的修改和刪除 外鍵的約束模式

首發日期:2018-04-12

什么是外鍵: 外鍵就是表中存在一個字段指向另外一個表的主鍵,那么這個字段就可以稱為外鍵。 一張表可以有多個外鍵。 外鍵用于約束表與表之間的關系,可以說外鍵是表之間的映射關系,這個關系可以幫助我們處理表之間關系的緊密性和存在性(比如學生表的cid班級號與班級表的id建立關聯,cid應該不能為不存在的,如果不增加外鍵cid,沒有建立上關系,我們就不知道班級號不存在。)。 或者說,外鍵是告訴數據庫系統,我們所認為的關系,單純的數據,系統是不知道實際意義的,外鍵就是告訴系統應該如何處理他們的關系。 所以,外鍵的核心是約束。外鍵的增加: 創建外鍵的前提是該字段首先是一個索引,如果不是的話,創建外鍵是會創建成一個普通索引【所以可以不在意】。 創建外鍵的另外一個前提是“指向表”已經創建,對于一個不存在的表,將無法使用外鍵對應上。 增加的方式: 1.在創建表的時候定義,在所有字段定義結束后使用foreign key(外鍵字段) references 指向表(主鍵)來 定義,比如mysql外鍵基本功能與用法詳解 2.也可以修改字段來增加: alter table 表名 add [constraint 外鍵名字] foreign key(外鍵字段) references 父表(主鍵字段); constraint 外鍵名字:可以幫助定義外鍵的名字,但不建議使用,因為要求外鍵名都唯一,而使用系統自定義的絕對不會重復,

create table student(id int primary key auto_increment,name varchar(15) not null,gender varchar(10) not null,cid int,foreign key(cid) references class(id));

create table class(id int primary key auto_increment,cname varchar(15));補充: 在Mysql中,如果存儲引擎不是innodb,那么無法使外鍵的約束作用生效,即使是能成功增加外鍵。 外鍵名不能重復,所以不建議使用constraint 外鍵名字外鍵的修改與刪除: 修改:不能修改外鍵信息,如外鍵指向之類的,只能先刪除再新增。 刪除語法:alter table 表名 drop foreign key 外鍵名; 這里的外鍵名不是外鍵字段,而是外鍵名。如果沒有使用constraint來定義,可以通過show create來查看表創建語句中系統定義的外鍵名。 mysql外鍵基本功能與用法詳解 補充: 刪除外鍵時,如果使用desc會看到表結構還有MUL,那是一個索引。因為創建外鍵時,字段會被創建成一個索引。如果不想保留,可以使用drop index 字段名 on 表名.外鍵的約束模式: 外鍵是用來約束表之間的關系的。 (約定創建外鍵的表稱為子表,指向的表稱為父表) 針對子表:可以約束子表的插入和修改【這種約束是父表對子表的約束】 涉及到外鍵的插入和修改時,如果外鍵字段找不到對應的匹配那么會插入修改失敗(像插入選課記錄不可能插入一門課程表中沒有的課程)。 比如:mysql外鍵基本功能與用法詳解 針對父表:可以約束父表的刪除和更新,通常有可以以下幾種約束模式。【這種約束是子表對父表的約束】 模式: strict嚴格模式:涉及到外鍵的刪除和更新時,如果對應記錄的主鍵數據已經被子表使用時,那么無法刪除(像已經有人入學了某個班級,學校不可能犯傻去把某個班級刪除,只能刪除那些沒人入學的班級。)cascade級聯模式:涉及到外鍵的刪除和更新時,如果字段已經被子表使用,子表中的數據會對應更新(像某個班改了班號,那么學生表中的班別都對應更改;如果某個班被刪除,就刪除對應班的所有學生)set null置空模式:涉及到外鍵的刪除和更新時,如果字段已經被子表使用,那么子表中的外鍵數據會置空(像某個班被刪掉了,不應該刪掉所有學生,而是應該給他們先置空再重新分配班別)【子表允許置空的前提是該字段允許為空】 其實可以給不同操作指定不同模式 綜上所述(根據我的那些舉例),實際上,合適的舉措是刪除時置空(即使某個班太垃圾了,想刪除某個班,但也不應該將所有學生退學,而是將它們分到別的班),修改時級聯(允許更改班號,而且更改會更新到學生中) 不同操作設置不同模式的設置方法(在子表中操作):foreign key(外鍵字段) references 父表(主鍵) on 操作 模式

foreign key(外鍵字段) references 父表 (主鍵) on delete set null on update cascade;

-- 實驗表結構create table class(id int primary key auto_increment,cname varchar(15));create table student2(id int primary key auto_increment,name varchar(15) not null,gender varchar(10) not null,cid int,foreign key(cid) references class(id) on delete set null on update cascade);-- 實驗表數據:insert into class(cname) values('python'),('linux'),('java'),('html5');insert into student2(name,gender,cid) values('Alice','female',1);insert into student2(name,gender,cid) values('John','female',2);insert into student2(name,gender,cid) values('Jack','female',3);insert into student2(name,gender,cid) values('Amy','female',4);select * from student2;select * from class;-- 嘗試更新級聯update class set id = 6 where cname='python';select * from student2; -- 結果原來的python的cid=6-- 嘗試刪除置空delete from class where cname='java';select * from student2; -- 結果原來的java的cid=null 補充: 需要設置好約束模式,不要在多個子表中使用不同的約束模式,不然會沖突。

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 365文案网_全网创意文案句子素材站 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 环比机械| 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 浇注料-高铝砖耐火砖-郑州凯瑞得窑炉耐火材料有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 消防设施操作员考试报名时间,报名入口,报考条件 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 泰安办公家具-泰安派格办公用品有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 温室大棚建设|水肥一体化|物联网系统| 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 |