精华内容
下载资源
问答
  • 内连接查询
    千次阅读
    2022-04-07 12:40:56

    连接关系数据模型的主要特点,连接查询是关系数据库中最主要的查询,包括内连接、外连接等。
    当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行
    连接查询,得到存放在多个表中的记录数据。
    所谓表中相同意义的字段,是指在多个表中名字不一定相同,但取值的含义相同的字段,这是表之间实现连接查询的前提。
    在实现表内连接的实验前需要对mysql的语法进行扎实的掌握,以下有mysql的基础知识可以查看
    mysql的增删改查
    mysql修改表结构
    mysql的约束
    select语句详解
    mysql表的修改和删除

    内连接查询(INNER JOIN)

    内连接查询(INNER JOIN):
    INNER JOIN使用比较运算符(=)根据每个表共有列的列值匹配两个表中的行,
    其查询结果仅包含符合查询条件和连接条件的行。即查询结果为两个表的交集。
    注意:多表查询时,为避免混淆,在查询字段前应添加表名称作为前缀!

    如何分析连接查询

    • 查询结果包含哪些字段
    • 这些字段来源于哪些表
    • 表之间的连接字段是哪个

    SELECT table1.column, table2.column
    FROM table1, table2 WHERE table1.column1 = table2.column2;
    – 在 WHERE子句中书写连接条件。
    – 如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀。
    – N个表相连时,至少需要N-1个连接条件。

    请添加图片描述
    如以上两个表,teacher和department表
    我们要查询的字段是
    teacher.Teacher_id
    teacher.Teacher_name
    department.Department_name
    我们从表结构可以看出两个表的连接字段是teacher_id和department_id
    下面我们看sql查询代码

    SELECT
    teacher.teacher_id,
    teacher.teacher_name,
    department.department_name
    FROM teacher INNER JOIN department
    ON teacher.department_id=department.department_id;

    其中inner join是内连接关键字,on的后面是连接的条件

    teacher.department_id=department.department_id;

    这条语句的含义是将教师的部门id和部门的id对应上,在进行输出。
    比如刘老师是计算机学院的,计算机学院编号是0012,刘老师的部门编号也是0012,所以将教师表和学院表进行相连,来输出我们想要的结果。

    那么我们发现,这些表的名称较长,我们也可以通过给表名起一个简略的名称来减少代码的长度,我们把teacher表命名为A,department为B,代码如下

    SELECT
    A.teacher_id,
    A.teacher_name,
    A.department_id,
    B.department_name
    FROM teacher A INNER JOIN department B
    ON A.department_id=B.department_id;

    这样的代码简单明了,看的清晰

    下面我们来看多个表内连接查询

    多个表内连接查询比两个表内连接查询的复杂一点点,不过原理和用法是相同的,下面看图
    请添加图片描述
    如图我们要查询学生所在班级、年纪和学院,由图可以看到我们需要的连接结构
    代码如下

    SELECT student.student_id,
    student.student_name,
    classes.class_name,
    classes.year,
    department.department_name
    FROM student
    INNER JOIN classes on student.class_id=classes.class_id
    INNER JOIN department on classes.department_id=department.department_id;

    通过学生的班级号和class的id相连,classes的id和学院的id相联系,就可以进行查询,比较简单,查询结果后若有重复或者需要筛选的可以用where进行修改。

    更多相关内容
  • SQL中的内连接查询和外连接查询

    万次阅读 多人点赞 2019-03-14 21:31:00
    在项目开发中,单表的查询肯定无法满足所有的业务,所以很多时候都是多表的连接查询。接下来总结一下SQL中的多表关联查询,以MySQL为例。 前期准备 在数据库中创建以下几张表并添加一些数据。 1、部门表(tb_dept)...

    在项目开发中,单表的查询肯定无法满足所有的业务,所以很多时候都是多表的连接查询。接下来总结一下SQL中的多表关联查询,以MySQL为例

    前期准备

    在数据库中创建以下几张表并添加一些数据。

    1、部门表(tb_dept),如下

    2、员工表(tb_emp),如下。可以看到后勤中心是没有员工的,一会看区别。

    3、工资表(tb_salary),如下

    三张表的关系是,一个部门有多个员工,一个员工有多个工资条。

    内连接查询

    内连接查询的关键字是inner join 或者 join(不建议省略inner)。返回的是表中存在至少一个匹配的数据,那么不匹配的数据肯定就不返回了,如果都不匹配,就是空。

    在这里说一下,写多表关联查询的SQL一般分四步走:1、确定要连接的表;2、确定要查询的字段;3、确定连接方式;4、确定关联条件。

    1、查询所有部门及其下面的员工。(用员工表去连接部门表,结果也是一样的,因为上面说了,内连接的方式,返回的结果一定是匹配条件的结果)

    SELECT td.dept_id,td.dept_name,te.emp_name 
    FROM tb_dept td
    INNER JOIN tb_emp te
    ON td.dept_id = te.dept_id;

    可以看到,因为后勤中心下面没有员工,所以查询结果中就没有后勤中心(这里省略inner也可以,但是不建议这么做)。

    平时,下面这种写法也是内连接,但是可读性没有上面的强,所以,忘记这样的写法吧。

    SELECT td.dept_id,td.dept_name,te.emp_name 
    FROM tb_dept td , tb_emp te
    WHERE td.dept_id = te.dept_id ;

    2、查询所有部门及部门下的员工和员工工资(3张表关联)

    SELECT td.dept_id,td.dept_name,te.emp_name, ts.salary_sum
    	FROM tb_dept td
    	INNER JOIN tb_emp te
    	INNER JOIN tb_salary ts
    	ON td.dept_id = te.dept_id AND te.emp_id = ts.emp_id;

    查询结果

    外连接之左外连接(也称左连接)

    左外连接关键字是LEFT OUTER JOIN 或LEFT JOIN(还是不建议省略outer,可读性不强)。左外连接查询是以左边的表为基准,去匹配要连接的表,不管是否匹配条件都会以基准表的条数返回结果(这里明显不同于内连接),匹配到的数据就显示匹配到的数据,没有匹配条件的数据就显示为null。

    1、查询所有部门及下面的员工

    SELECT td.dept_id,td.dept_name,te.emp_name  
    FROM tb_dept td
    LEFT OUTER JOIN tb_emp te
    ON td.dept_id = te.dept_id ;

    查询结果

    2、查询所有部门及部门下的员工和员工工资(3张表关联)

        SELECT td.dept_id,td.dept_name,te.emp_name, ts.salary_sum
    	FROM tb_dept td
    	LEFT OUTER JOIN tb_emp te 
    	ON td.dept_id = te.dept_id
    	LEFT OUTER JOIN tb_salary ts
    	ON  te.emp_id = ts.emp_id;

    查询结果

    外连接之右外连接(也称右连接)

    右连接和左连接的理论是一样的,只是基准表发生了变化,以右边被关联表为基准(将左连接的基准表和被关联表交换位置就等价于右连接)。右连接的关键字是RIGHT OUTER JOIN或RIGHT JOIN(还是不建议省略OUTER )。

    1、查询所有部门及下面的员工

    SELECT td.dept_id,td.dept_name,te.emp_name 
    FROM tb_dept td
    RIGHT OUTER JOIN tb_emp te
    ON td.dept_id = te.dept_id; 

    查询结果(虽然和上面的内连接结果是一样的,但是要注意区别,两种方式根本不一样,假如有一个员工没有部门

    2、查询所有部门及部门下的员工和员工工资(3张表关联)

    SELECT td.dept_id,td.dept_name,te.emp_name ,ts.salary_sum
    FROM tb_dept td
    RIGHT OUTER JOIN tb_emp te
    ON td.dept_id = te.dept_id
    RIGHT OUTER JOIN tb_salary ts
    ON  te.emp_id = ts.emp_id;

    外连接之全连接查询

    全连接就是返回目标表的所有数据,有匹配的就显示,没有匹配的就为null。

    mysql没有全连接的关键字,oracle有full outer join关键字。根据全连接的定义,可以使用UNION(去重并集)关键字

    SELECT td.dept_id,td.dept_name,te.emp_name  
    FROM   tb_dept td
    LEFT OUTER JOIN tb_emp te
    ON td.dept_id = te.dept_id ;
    UNION
    SELECT td.dept_id,td.dept_name,te.emp_name  
    FROM tb_dept td 
    RIGHT OUTER JOIN tb_emp te
    ON td.dept_id = te.dept_id ;

     查询结果

    自连接查询

    自连接查询一般用作表中的某个字段的值是引用另一个字段的值。

    将tb_emp改造一下,添加一个领导字段,由于领导也是员工,所以直接用emp_id关联,如下

    张三丰有七个弟子,宋远桥和张翠山分别有个儿子(^_^)

    关键点在于虚拟出一张领导表,由于领导也是员工,所以属性都一样。

    1、查询所有员工及其直属领导的id和姓名

    SELECT te.emp_id ,te.emp_name,tleader.emp_id as leader_id, tleader.emp_name as leader_name 
    FROM tb_emp te
    LEFT OUTER JOIN tb_emp tleader
    ON te.emp_leader = tleader.emp_id;

    查询结果


    上面的工资表好像设计得不是很好,可以多增加几条数据,并给一个月份的字段标记区别一下,再做一下上面的示例,这里偷个懒不改了。

    总之,写多表关联查询的SQL的思路就分四步走:1、确定要连接的表;2、确定要查询的字段;3、确定连接方式;4、确定关联条件

    此篇完结

    展开全文
  • 【MySQL联合查询】内连接查询详解

    千次阅读 2022-01-24 16:22:14
    内连接查询中存在一种特殊的等值连接——自连接。所谓自连接,就是指表与其自身进行连接。例如,在学生表中查询学生小花所在班级的其他学生。不等值连接。 内连接查询中的不等连接就是在关键字ON后的匹配条件中通过...

    目录

        🍀什么是内连接查询

          🍀自连接

          🍀等值连接

          🍀不等值连接


    什么是内连接查询

        在实际开发中,我们会联合多个表来实现查询,比如把班级表和学生表联合起来就同时可以看到班级、老师和学员的信息,一个班级表:

        一个班级对应着多个学生,以下是与之对应的学生表:

        将两个表中ID 相同的记录关联起来组成一个新的“列表”,这就是联合查询:

        这种只有2张表匹配的行才能显示的连接方式在Mysql 中称之为内连接: INNER JOIN

        在MySQL中内连接数据查询通过“INNER JOIN…ON”语句来实现,语法形式如下所示。

    SELECT field1,field2,…,fieldn FROM tablename1
    INNER JOIN tablename2 [INNER JOIN tablenamen] ON CONDITION
    • 参数fieldn表示要查询的字段名,来源于所连接的表tablename1和tablename2;
    • 关键字INNER JOIN表示表进行内连接;
    • 参数CONDITION表示进行匹配的条件。

        这里有student表和class表,用来对下面三种自连接方式做演示:

     自连接

        内连接查询中存在一种特殊的等值连接——自连接。所谓自连接,就是指表与其自身进行连接。

    例如,在学生表中查询学生小花所在班级的其他学生

    select t1.name,t1.class_id 
    from student t1 
        inner join student t2 
        on t1.class_id=t2.class_id and t2.name='小花';


    等值连接

        内连接查询中的等值连接就是在关键字ON后的匹配条件中通过等于关系运算符(=)来实现等值条件。

    例如:

    select * 
    from class as a 
        inner join student as b 
        where a.id = b.class_id;


    不等连接

        内连接查询中的不等连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,还可以使用关系运算符,包含“>”“>=”“<”“<=”和“!=”等运算符号。

    例如:

    select * 
    from class as a 
        inner join student as b 
        where a.id != b.class_id;

    展开全文
  • 简单连接查询、多表连接查询,简单连接查询,无连接规则连接两表,得到的是两个表的笛卡尔积。还有INNER JOIN内连接查询

    一、简单连接查询

    1、直接连接:无连接规则连接两表,得到的是两个表的笛卡尔积。

    • 连接后的行数=表1行数*表2行数
    • 连接后的列数=表1列数+表2列数
      原表:
      1.1
      直接连接查询后就会得11列,30行的数据。
    SELECT * FROM STU,COU
    
    SELECT * FROM STU
    SELECT * FROM COU
    

    注意:这中直接连接一般都不会用,因为连接后的数据是没有规律的,是简单粗暴地结合在一起的,因此很难得到有效信息。

    2、有连接规则连接两表:使用WHERE语句设定条件
    (1)查询所有学生的学生信息和家庭作业信息(等值连接):

    SELECT * 
    FROM STU,HOMEWORKS 
    WHERE STU.SNO=HOMEWORKS.H_SNO
    

    2.1
    (2)查询所有学生的学生名字和家庭分数(等值连接):

    SELECT STU.SNAME,HOMEWORKS.H_SCORE_1,HOMEWORKS.H_SCORE_2,HOMEWORKS.H_SCORE_3
    FROM STU,HOMEWORKS
    WHERE STU.SNO=HOMEWORKS.H_SNO
    

    2.2
    3、表别名简化语句

    SELECT a.SNAME,b.H_SCORE_1,b.H_SCORE_2,b.H_SCORE_3
    FROM STU a,HOMEWORKS b
    WHERE a.SNO=b.H_SNO
    

    就是直接在FROM的表名后面加上名字,需要注意的是,起完别名后,在SELECT和其他语句中只能用别名了,不能使用原名。
    当表名很长或者很复杂的时候,别名是个很好用的方法,可以很好地简化语句。

    二、多表连接查询

    就是连接多个表,方法和两个表连接类似,只是需要加多个等值条件
    1、连接多表实例: 查询 张一 的所有选课及各个选课的成绩:

    SELECT S.SNAME, C.C_COURSE_NAME, H.H_SCORE_1, H.H_SCORE_2, H.H_SCORE_3
    FROM STU S, COU C, HOMEWORKS H
    WHERE S.SNO=H.H_SNO AND C.CNO=H.H_CNO AND S.SNAME='张一'
    

    2.1

    2、分析:
    需要连接3个表,然后需要确定这3个表的连接条件,即为学号与课程号,分别为其中两个表的主键,通过主键对应的外键进行与另外一个表的连接。并且在WHERE中需要添加一个查询条件,也就是名字为“张一”。

    三、INNER JOIN 内连接查询

    1、inner join说明
    也就是连接查询的典型连接规则,将两个表或两个以上的表以一定的连接条件连接起来,从中检索出满足条件的数据。

    2、连接查询实例练习
    (1)与使用WHERE的连接规则一样,不过INNER是放在FROM中的:

    --直接使用WHERE
    SELECT * 
    FROM STU,HOMEWORKS 
    WHERE STU.SNO=HOMEWORKS.H_SNO AND STU.SNAME='张一'
    
    --使用JOIN内连接
    SELECT *
    FROM STU INNER JOIN HOMEWORKS ON STU.SNO=HOMEWORKS.H_SNO
    WHERE STU.SNAME='张一'
    

    2.2.1

    (2)还是上面的例子:查询 张一 的所有选课及各个选课的成绩(三表连接,直接使用多个INNER JOIN):

    --使用WHERE
    SELECT S.SNAME, C.C_COURSE_NAME, H.H_SCORE_1, H.H_SCORE_2, H.H_SCORE_3
    FROM STU S, COU C, HOMEWORKS H
    WHERE S.SNO=H.H_SNO AND C.CNO=H.H_CNO AND S.SNAME='张一'
    
    --使用JOIN内连接
    SELECT S.SNAME,C.C_COURSE_NAME,H.H_SCORE_1,H.H_SCORE_2,H.H_SCORE_3
    FROM STU S JOIN HOMEWORKS H ON S.SNO=H.H_SNO
    	INNER JOIN COU C ON C.CNO=H.H_CNO  
    WHERE S.SNAME='张一'
    

    2.2.2

    3、注意
    (1)select … from A join B on …和select … from B join A on …查询结果本质上一样,都是内连接。
    (2)inner join 可以简写为 join,也称为内连接。

    展开全文
  • 数据库的内连接查询

    千次阅读 2020-03-29 09:35:48
    数据库的内连接查询 数据库查询时,用户需要查询的数据有时并不都在一个数据表中,可能涉及一个以上的表,这时就要使用多表查询 多表查询是将多个表连接在一起的查询,也称为连接查询 根据查询的需要,连接查询主要...
  • MySQL--内连接查询(inner join)

    千次阅读 2021-10-15 20:27:08
    1)内连接查询 – inner join 语法1:select f1,f2,f3... from table1 inner join table2 on 关联匹配条件 语法2: select f1,f2,f3... from table1,table2,table3 where 关联匹配条件 (1)自连接 概念:是...
  • Oracle单表内连接查询

    千次阅读 2018-02-28 14:36:31
    源数据如下:根据Col3值,把Co1和Co2映射并去空查询,预期结果如下:思路分析:使用单表内连接+where条件判断非空即可查询SQL:SELECT t1.col1,  t2.col2 FROM test t1 INNER JOIN test t2 ON t1.col3 = t2.col3 ...
  • MySQL数据库连接查询(内连接)

    千次阅读 2021-05-31 21:50:54
    连接查询 1. 交叉连接(笛卡尔积)Cross Join ...2.内连接查询 实例2.1: 使用内连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,机信息中只需包含姓名和身份证 实例2.1: 使
  • 至于left为什么比inner快。 是因为left时, 数据库在执行时, left左边的表是被优化执行的,因为left左边的表被无条件返回, left右边的表对结果集不存在影响。 但是inner的时候, 就需要对数据进行过滤。...
  • 分为显示内连接和隐式内连接查询的数据必须左右两表都存在才会显示 左连接 又叫左外连接,查询的数据以左表为准,即使左表中的数据在其他表中没有匹配也会查询出来,且会以null补齐 右连接 又叫右外连接,和左...
  • 连接查询 内连接查询 外连接查询
  • MySQL5.5多表之连接查询

    千次阅读 2021-03-14 01:41:15
    当查询数据时,通过连接操作查询多个表中的实体信息,当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询,连接查询包括交叉连接查询、内连接查询、外连接查询,本节将针对这些连接...
  • DB2内连接查询和外连接查询

    千次阅读 2017-01-25 09:14:50
    DB2内连接查询返回连接表中符合连接条件和查询条件的数据行,下面就为你详细介绍DB2内连接查询的方法,供您参考学习。  DB2内连接查询(INNER JOIN):  DB2内连接查询有两种,显式的和隐式的,返回连接表中符合...
  • 内连接与外连接(全网最详细)

    千次阅读 2022-04-29 17:59:46
    全面剖析 内外连接查询 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 在学习内连接与外连接之前,你不妨思考为什么要引入这两种连接方式,带着问题去学习,更有...
  • 数据库查询语句内连接外连接效率

    千次阅读 2018-12-06 22:20:45
    今天老大问到内连接外连接的查询速度问题,之前没有了解过因为做的项目比较小所以没有在效率上考虑过。今天问到了就查一下文档和大佬们的博客总结一下,以后有需要也可以查看博客温习。 内连接和外连接其实是有步骤...
  • MySQL多表连接查询

    千次阅读 2022-01-21 23:55:46
    MySQL多表连接查询1 什么是多表连接查询2 表和表之间的关系2.1 并2.2 笛卡尔积2.3 连接查询3 查询操作3.1 内连接查询3.2 外连接查询(OUTER JOIN)3.3 交叉连接(CROSS JOIN) 1 什么是多表连接查询 在一个查询语句...
  • 内连接查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足连接条件的元组信息。比如,我们想知道每个学生的选课情况,包括已经选课的学生(这部分学生的学号在学生表中有,在选课表中也有,是满足...
  • 1、使用内连接获取客户“王传华”所有的订单信息和客户信息。 2、使用内连接获取客户“王传华”所有的下单日期信息,要求显示客户姓名和下单日期。 3、使用内连接获取客户“王传华”下单日期在 2015 年 4 月之后的...
  • 数据库三表连接查询怎么做

    万次阅读 2021-01-19 15:03:58
    3、查询表中记录; select 10, a.* from test_a a union all select 20, b.* from test_b b union all select * from test_c c; 4、编写sql,进行三表关联; select a.aname,b.bname,c.value from test_c c join ...
  • 数据库中内连接与多表查询的区别

    千次阅读 2018-11-17 21:29:53
    数据库中内连接与多表查询的区别 sql = "select [个人信息$].*,[工作经历$].* from [个人信息$],[工作经历$] where [个人信息$].UID=[工作经历$].UID" sql = "select [个人信息$].*,[工作经历$].* ...
  • Mysql—— 内连接、左连接、右连接以及全连接查询

    万次阅读 多人点赞 2018-10-05 23:03:31
    一、内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集...
  • MySQL数据库 - 连接查询

    千次阅读 2021-01-20 12:18:35
    第1关:内连接查询 任务描述 本关任务:使用内连接查询数据表中学生姓名和对应的班级。 相关知识 为了完成本关任务,你需要掌握: 1.什么是内连接查询; 2.如何使用内连接查询内连接查询 仅将两个表中满足连接...
  • 数据库-连接查询

    千次阅读 2021-12-06 14:57:39
    数据库连接查询可以进行多表联查,可以同时展示多个表的数据,方便进行查阅。那么连接查询分为多种方式,我们可以根据要求筛选合适的方式进行查询。下面我们来讲解一下怎么进行多表联查。 首先连接查询大致分为3种...
  • 多表查询前先根据目标厘清如下思路: ①确定表(从哪些表中查?);from 表1,表2 ②确定连接条件:where/on ③确定筛选出哪些列:select 列 一、内连接 1)、隐式内连接 首先得澄清一个概念:...隐式内连接:就是使
  • 我的电脑系统:Windows 10 64位 SQL Server 软件版本: SQL Server 2014 Express 本篇博客...连接查询定义: 将两个表或者两个以上的表以一定的连接条件连接起来。从中检索出满足条件的数据。一 . 内连接 — 知识点
  • 数据库两个表之间有四种连接方式,其中包括左连接、右连接、内连接和全连接。 左连接 左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后...
  • MySQL COUNT(*) INNER JOIN 内连接查询

    千次阅读 2015-01-17 15:23:27
    mysql 内连接查询
  • oracle中的连接查询

    千次阅读 2020-08-31 19:48:19
    两个表进行内连接查询时,先找到表1的第一条记录,然后从头到尾扫描表2,将符合连接条件的记录与表1第一条记录连接成结果; 当表2扫描一遍后,再从表1的第二条记录开始,从头到尾扫描表2,将符合连接条件的与表1第二...
  • 通过用户名称查询用户的权限(模块) 1. RBAC权限模型 RBAC(Role Based Access Control)是基于角色访问控制。 RBAC实际上就是针对产品去发掘需求时所用到的Who(角色)、What(拥有什么资源)、How(有哪些操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 864,593
精华内容 345,837
关键字:

内连接查询

友情链接: MEEM_v1.1_release.zip