五、多表连接查询——内连接

怎甘沉沦 提交于 2019-12-17 02:20:58

五、多表连接查询——内连接

1.什么是内连接

根据相同的某列把多个表合并。

 

2.等值连接【最常用

使用等于号(=)运算符比较被连接列的列值。

(1)等值连接语法

<1>格式一:

select 表名.列名
from 表名1 [inner] join 表名2
on 表名1.列名=表名2.列名 [...n]

<2>格式二:

select 表名.列名
from 表名1,表名2 [,...]
where 表名1.列名=表名2.列名 [and...]

(2)将学生表(student)和成绩表(student_score)通过学号(student_id)连接起来。【选择全部数据

<1>使用inner join的方法

select * from student inner join student_score on student.student_id=student_score.student_id;

<2>使用where

select * from student,student_score where student.student_id=student_score.student_id;

(2)将学生表(student)和成绩表(student_score)通过学号(student_id)连接起来。【选择学号、姓名、成绩三列

select student.student_id,student.name,student_score.score from student join student_score on student.student_id=student_score.student_id;

3.不等值连接

在连接条件使用除了等于号(=)之外的其它比较运算符比较被连接的列的列值。

比如:>、>=、<、<=、!=、<>、!>、!<。

(1)示例:将学生表(student)和成绩表(student_score)通过学号(student_id)使用>连接起来。【选择全部数据

select * from student join student_score on student.student_id>student_score.student_id;

4.自然连接

自动去除重复的属性列,仅保留所有不重复的属性列。

自然连接中无需指定连接条件,自动匹配列值相同的字段。

(1)示例:将学生表(student)和成绩表(student_score)通过学号(student_id)使用自然连接。【选择全部数据

select * from student natural join student_score;

(2)示例:将学生表(student)和成绩表(student_score)通过学号(student_id)使用自然连接。【选择部分数据

select student.student_id,student.name,student_score.student_id,student_score.score 
from student natural join student_score;

为什么会有重复值?

虽然说select先写,但是select的操作在这个sql语句中最后执行,首先执行自然连接,然后执行选择数据。在自然连接时得到了一张表,但是这张表的结果被select的操作给覆盖掉了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!