文章目录一、外键约束二、多表查询1、连接查询1笛卡尔积查询2内连接3外连接2、复合条件连接查询3、子查询三、索引一、外键约束外键所依赖的表为主表字段绑定外键的表为子表。主表CREATETABLEClassCharger(idTINYINTPRIMARYKEYauto_increment,nameVARCHAR(20),ageINT,is_marrigedtinyint);注如果ClassCharger在s3库中而当前库不在s3中可以将表名写为s3.ClassChargerINSERTINTOClassCharger(name,age,is_marriged)VALUES(冰冰,12,0),(丹丹,14,0),(歪歪,22,0),(姗姗,20,0),(小雨,21,0);子表创建表时添加外键[CONSTRAINT 外键名]FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)注作为外键一定要和关联主键的数据类型保持一致。如果不写CONSTRAINT 外键名则会自动获取一个外键名。CREATETABLEStudent(idINTPRIMARYKEYauto_increment,nameVARCHAR(20),charger_idTINYINT,CONSTRAINTabcFOREIGNKEY(charger_id)REFERENCESClassCharger(id))ENGINEINNODB;注①charger_idTINYINT 类型用于存储关联到 ClassCharger 表的外键值。②CONSTRAINT abc FOREIGN KEY (charger_id) REFERENCES ClassCharger(id)这表示 Student 表的 charger_id 字段必须是 ClassCharger 表中 id 字段的合法值。③如果 ClassCharger 表中没有对应的 id则无法插入或更新 Student 表中的 charger_id。④如果 ClassCharger 表中的 id 被删除Student 表中对应的 charger_id 记录也会受到限制默认行为是 RESTRICT即阻止删除。⑤ENGINEINNODB指定使用 InnoDB 引擎该引擎支持外键约束。如果使用 MyISAM 引擎外键约束将被忽略。INSERTINTOStudent(name,charger_id)VALUES(alvin1,2),(alvin2,4),(alvin3,1),(alvin4,3),(alvin5,1),(alvin6,3),(alvin7,2);由于外键的作用下列两句sql都执行不成功。deletefromClassChargerwhereid1;insertintostudent(name,charger_id)values(haha,10);创建表后也可以添加、删除外键ALTERTABLEStudentADDCONSTRAINTabcFOREIGNKEY(charger_id)REFERENCESClassCharger(id);ALTERTABLEStudentDROPFOREIGNKEYabc;INNODB支持的ON语句在关系数据库中能唯一标识表中一行数据的列或列的组合叫做候选键。例如主键和唯一索引就是候选键。外键约束对子表的含义: 如果在父表中找不到候选键,则不允许在子表上进行insert/update外键约束对父表的含义:在父表上进行update/delete在子表中有对应匹配行的候选键时,父表的行为取决于在定义子表的外键时指定的 on update/on delete子句。①cascade方式在父表上update/delete记录时同步update/delete掉子表的匹配记录。外键的级联删除如果父表中的记录被删除则子表中对应的记录自动被删除ALTERTABLEStudentADDCONSTRAINTabcFOREIGNKEY(charger_id)REFERENCESClassCharger(id)ONDELETECASCADE;②set null方式在父表上update/delete记录时将子表上匹配记录的列设为null。注子表的外键列不能为not nulALTERTABLEStudentADDCONSTRAINTabcFOREIGNKEY(charger_id)REFERENCESClassCharger(id)ONDELETESETNULL;③Restrict方式 ④No action方式这两种方式用的比较少了解即可都是拒绝对父表进行删除更新操作。二、多表查询1、连接查询先准备两张表创建表employee并插入记录createtableemployee(emp_idintauto_incrementprimarykeynotnull,emp_namevarchar(50),ageint,dept_idint);insertintoemployee(emp_name,age,dept_id)values(A,19,200),(B,26,201),(C,30,201),(D,24,202),(E,20,200),(F,38,204);创建表department并插入记录createtabledepartment(dept_idint,dept_namevarchar(100));insertintodepartmentvalues(200,人事部),(201,技术部),(202,销售部),(203,财政部);1笛卡尔积查询SELECT*FROMemployee,department;2内连接A inner join B找出A表和B表中匹配on条件的所有记录。select*fromemployee,departmentwhereemployee.dept_iddepartment.dept_id;或select*fromemployeeinnerjoindepartmentonemployee.dept_iddepartment.dept_id;注这里 inner join 前后两张表的顺序颠倒查询结果一样只是每条记录内显示顺序不同先显示前面表的内容再显示后面表的。3外连接①左外连接A left join B在内连接的基础上增加A表有B表没有的结果。select*fromemployeeleftjoindepartmentonemployee.dept_iddepartment.dept_id;②右外连接A right join B在内连接的基础上增加B表有A表没有的结果。select*fromemployeeRIGHTJOINdepartmentonemployee.dept_iddepartment.dept_id;③全外连接可以理解为左连接和右连接的并集。mysql不支持full join语句可以使用union语句来实现全外连接。select*fromemployeeRIGHTJOINdepartmentonemployee.dept_iddepartment.dept_idUNIONselect*fromemployeeLEFTJOINdepartmentonemployee.dept_iddepartment.dept_id;注意union与union all的区别union会去掉相同的纪录2、复合条件连接查询查询员工年龄大于等于25岁的部门SELECTDISTINCTdepartment.dept_nameFROMemployee,departmentWHEREemployee.dept_iddepartment.dept_idANDage25;3、子查询子查询是将一个查询语句嵌套在另一个查询语句中。内层查询语句的查询结果可以为外层查询语句提供查询条件。子查询中可以包含IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字。还可以包含比较运算符 、 !、 、等。1查询employee表但dept_id必须在department表中出现过select*fromemployeewheredept_idIN(selectdept_idfromdepartment);2复制employee到AAcreatetableAA(select*fromemployee);注这里只复制表字段和记录不复制约束条件。3带EXISTS关键字的子查询EXISTS关字键字表示存在返回Ture或False。当返回Ture时外层查询语句将进行查询当返回值为False时外层查询语句不进行查询。select*fromemployeeWHEREEXISTS(SELECTdept_namefromdepartmentwheredept_id205);这里EXISTS返回False外层select查询结果为Empty set。三、索引索引在Mysql中也叫做“键”是存储引擎用于快速找到记录的一种数据结构。索引相当于字典的目录的页码可以大幅提高查询速度。创建与维护索引会消耗很多时间与磁盘空间但查询速度大大提高。注primary key主键也是一种索引。unique是唯一索引。设置字段约束条件为unique时会自动加一个unique索引。createtabletest(idintprimarykeyauto_increment,namevarchar(20),salaryintDEFAULT1000);insertintotest(name)values(111),(222),(333),(444);altertabletestmodifynamevarchar(20)unique;创建表时创建索引语法createtable表名(字段名1数据类型[约束条件],字段名2数据类型[约束条件],...[unique|fulltext|spatial]index|key[索引名](字段名[(长度)][asc|desc]));创建索引时如果不指定索引名则会以字段名为索引名。创建普通索引示例createtabletest1(idint,namevarchar(20),indexindex_name(name)-- 关键字index换成key效果相同);创建全文索引示例全文索引适合给大文本做索引。createtabletest2(idint,namevarchar(20),resumevarchar(100),fulltextindexindex_name(resume));创建多列索引示例createtabletest3(idint,namevarchar(20),resumevarchar(100),INDEXindex_name_resume(name,resume));在已存在表上创建索引方法一create[unique|fulltext|spatial]index索引名on表名(字段名[(长度)][asc|desc]);方法二altertable表名add[unique|fulltext|spatial]index索引名(字段名[(长度)][asc|desc])示例createindexindex_nameontest4(name);altertabletest4adduniqueindexindex_name(name);删除索引语法 drop index 索引名 on 表名;示例dropindexindex_nameontest4;
企业数字化 ERP 产品动态
相关推荐
Hydra Launcher 安装配置全攻略:从克隆代码到管起你的游戏库 Hydra Launcher 安装配置全攻略:从克隆代码到管起你的游戏库 【免费下载链接】hydra Hydra Launcher is an open-source gaming platform created to be the single tool that you need 项目地址: https://gitcode.com/GitHub_Trending/hy/hydra
游戏文件散落… · 2026/11/11 13:01:44
C++中文输入法支持 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 7:16:17
永川考电工证在哪上课怎么考才能拿到高含金量证书 永川考电工证在哪上课怎么考才能拿到高含金量证书 你是不是也担心自己学历不高,连电工证都报不了?别急,今天就给你讲讲【永川考电工证在哪上课】的全过程,还有如何拿到高含金量证书,让你一次搞懂,不走弯路。… · 2026/11/11 13:01:28
特种工直播报名指南保姆级教程:怕被中介坑?看这篇就够了 特种工直播报名指南保姆级教程:怕被中介坑?看这篇就够了 你是不是也这样, 不知道去哪报名怕被中介坑 ?特种作业操作证,尤其是【特种工直播】类的证书,现在越来越被重视,但很多人在报名时一筹莫展,不是被各种中介信息绕晕,就是不清楚报名流程,甚至… · 2026/11/11 13:01:28
注销的电工证多久拿证?南阳应届生避坑指南来了 注销的电工证多久拿证?南阳应届生避坑指南来了 你是不是也遇到过这种情况:手上有个 注销的电工证 ,想重新考个新证,但又不知道去哪儿报名,怕被中介骗钱?别急,今天就给你讲清楚, 注销的电工证多久拿证… · 2026/11/11 13:01:28
带电工证找工作别踩坑 郑州报考避坑指南全解析 带电工证找工作别踩坑 郑州报考避坑指南全解析 证书过期了不知道怎么复审延期?别慌,这不是个例,很多人都遇到过这个问题。尤其是像电工这类需要持证上岗的行业,证书有效期一旦过了,就可能面临不能上岗、不能接项目、甚至被单位辞退的风险。如果你正在找… · 2026/11/11 13:01:28
长安电工证图片官方回应:怕考不过白交培训费?看懂这些不踩坑 长安电工证图片官方回应:怕考不过白交培训费?看懂这些不踩坑 怕考不过白交培训费?长安电工证图片网上一搜一大堆,但真要报名的人才知道,光看图根本考不过。官方回应明确表示,电工证考试内容严格,光靠死记硬背不行,还得掌握实操技巧,咱们得把功夫下在… · 2026/11/11 13:01:28
长安电工证图片怎么查?郑州报考避坑指南来了! 长安电工证图片怎么查?郑州报考避坑指南来了! 实操考试心里没底怕挂科?别慌,今天给你一份 长安电工证图片 查询的详细流程和郑州报考避坑指南,全是干货,看完就能少走弯路! 一、实操考试怎么准备?看看别人是怎么过的… · 2026/11/11 13:00:28
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43
_中职电工证最新政策解读 中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52
昆明电工证培训价格值不值得考?老电工告诉你真相 昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52
特种电缆张工网上查询全攻略:外省证如何转过来 特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47