• ADADADADAD

    MySQL5.7数据库中表连接、子查询、外键的示例分析[ mysql数据库 ]

    mysql数据库 时间:2024-11-29 09:50:34

    作者:文/会员上传

    简介:

    文章目录表连接自关联外键内连接左连接右连接子查询外键介绍创建表时设置外键约束表连接当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    文章目录

        表连接

        自关联

        外键

        内连接

        左连接

        右连接

        子查询

        外键介绍

        创建表时设置外键约束

        表连接

          当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回mysql

          这时需要表进行连接

          内连接

            内连接仅选出两张表中互相匹配的记录

            select*from表1innerjoin表2on表1.列=表2.列--显示学生的所有信息,但只显示班级名称selects.*,c.namefromstudentssinnerjoinclassescons.id=c.id;--将班级名称显示在第一列selectc.name,s.*fromstudentssinnerjoinclassescons.id=c.id;--查询有能够对应班级的学生以及班级信息,按照班级进行排序selectc.name,s.*fromstudentssinnerjoinclassescons.cls_id=c.idorderbyc.nameasc;--当同一个班级时,按照学生的id进行从小到大排序selectc.name,s.*fromstudentssinnerjoinclassescons.cls_id=c.idorderbyc.nameasc,s.idasc;



            在这里插入图片描述

            左连接

            查询的结果为两个表匹配到的数据,左表持有的数据,对于右表中不存的数据使用null填充

            select*from表1leftjoin表2on表1.列=表2.列--students表左连接classes表并查看班级为null的数据select*fromstudentssleftjoinclassescons.cls_id=c.idhavings.cls_idisnull;--左连接并且查询s.cls_id=1并且s.name="small-j"的数据select*fromstudentssleftjoinclassescons.cls_id=c.idhavings.cls_id=1ands.name="small-j";
            右连接

            查询结果为两个表匹配到的数据,右表持有的数据,对于左表中不存在的数据使用null填充。

            select*from表1rightjoin表2on表1.列=表2.列;
            子查询

            某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候,就要使用到子查询

            select*from表where表(子查询语句)--查询出students中身高最高的男生。显示名字和身高selects.name,s.highfromstudentsswherehigh=(selectmax(high)fromstudents)andgender="男";--查询出高于平均身高的学生信息select*fromstudentswherehigh>(selectavg(high)fromstudents);--查询学生班级号cls_id能够对应的学生信息select*fromstudentswherecls_idin(selectidfromstudents);--查询最大年龄的女生的idselect*fromstudentswhereid=(selectmax(id)fromstudentswheregender="女")andgender="女";

            在这里插入图片描述

            自关联

            简单理解为自己与自己进行连接查询

            --查询广东省下的所有广东市select*fromcitiescinnerjoinprovincesponc.provinceid=p.provinceidhavingp.province="广东省";--查询广东省下的所有广东市--自关联select*fromareasainnerjoinareasbona.id=b.pidhavinga.name="广东";

            外键外键介绍

              MySQL的外键(foreing key)是表的一个特殊字段。对于两个具有关联关系的表而言,相关联字段的主键所在表就是主表(父表),外键所在的表是从表(子表)。

              注意: 主键不能包含空值,但允许在外键中出现空值,也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

              创建表时设置外键约束

                当创建外键的时候,必须先删除从表才能删除主表。

                主表需存在时创建从表。

                从表的外键关联必须是主表的主键,并且主键与外键的类型必须保持一致。

                [constraint外键名]foreignkey(字段名[,字段名2,...])references<主表名>主键列1[,主键列2,...]
                --创建班级表createtableclasses(idint(4)notnullprimarykey,namevarchar(36));--创建学生表createtablestudent(sidint(4)notnullprimarykey,snamevarchar(30),cidint(4)notnull);--创建直接含有外键关系的学生表createtablestudent(sidint(4)notnullprimarykey,snamevarchar(30),cidint(4)notnull,constraintpk_idforeignkey(cid)referencesclasses(id));--通过alter来添加外键关系altertablestudentaddconstraintpk_idforeignkey(cid)referencesclasses(id);--删除外键约束altertablestudentdropforeignkeypk_id;

    MySQL5.7数据库中表连接、子查询、外键的示例分析.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载