您现在的位置是:课程教程文章

mysql内连接是什么

2023-12-14 20:11课程教程文章 人已围观

说明

1、内部连接类似于自然连接,但内部连接不要求比较两个表的同名属性列,可以用on或using指定两个表比较的字段。

(比较的字段不要求同名)。

2、内部连接的条件可以不写,此时查询的是笛卡尔积。

实例

#表的内连接,内连接是结果集中只保留符合连接条件的记录
--方法一
SELECTe.empno,e.ename,d.dname
--连接目标
FROMt_empeJOINt_deptd
--连接条件
ONe.deptno=d.deptno;

--方法二
SELECTe.empno,e.ename,d.dname
--连接目标
FROMt_empe,t_deptd
--连接条件
WHEREe.deptno=d.deptno;

--内连练习一
#不同表的内连接
#查询每个员工的工号,姓名,部门名称,底薪,职位,工资等级
SELECTe.empno,e.ename,d.dname,e.sal,e.job,s.grade
FROMt_empeJOINt_deptdONe.deptno=d.deptno
JOINt_salgradesONe.salBETWEENs.losalands.hisal;

#相同表的内连接一
#查询Scott相同部门的员工都有谁
SELECTe2.ename
FROMt_empe1JOINt_empe2ONe1.deptno=e2.deptno
WHEREe1.ename="SCOTT"ANDe2.ename!="SCOTT";

#相同表的内连接二
#查询底薪超过公司平均底薪的员工信息
SELECTe.empno,e.ename,e.deptno,e.job
FROMt_empeJOIN
(SELECTavg(sal)asavgsFROMt_emp)t
ONe.sal>=t.avgs;

#查询RESEARCH部门的人数,最高底薪、最低底薪、平均底薪、平均工龄
SELECTCOUNT(*),MAX(e.sal),MIN(e.sal),AVG(e.sal),
FLOOR(AVG((DATEDIFF(NOW(),e.hiredate)/365)))
FROMt_empeJOINt_deptdONe.deptno=d.deptno
WHEREd.dname="RESEARCH";

SELECTFLOOR(29.9)#29
SELECTCEIL(1.1)#1.2

#查询每种职业的最高工资、最低工资、平均工资、最高工资等级和最低工资等级
SELECTe.job,
MAX(e.sal+IFNULL(e.comm,0)),
MIN(e.sal+IFNULL(e.comm,0)),
AVG(e.sal+IFNULL(e.comm,0)),
MAX(s.grade),
MIN(s.grade)
FROMt_empeJOINt_salgrades
ON(e.sal+IFNULL(e.comm,0))BETWEENs.losalANDs.hisal
GROUPBYe.job;


#查询每个底薪超过部门平均底薪的员工信息
SELECTe.empno,e.ename,e.sal
FROMt_empeJOIN
(SELECTdeptno,AVG(sal)asdepsalFROMt_empGROUPBYdeptno)t
ONe.deptno=t.deptno
ANDe.sal>depsal;

以上就是mysql内连接的介绍,希望对大家有所帮助。更多mysql学习指路:MySQL

推荐操作系统:windows7系统、mysql5.8、DELL G3电脑

课程教程:mysql内连接是什么

上一篇:mysql内连接查询的两种类型

下一篇:没有了

站点信息

  • 文章统计篇文章