mysql内连接是什么

美女程序员鼓励师

说明

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

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

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

实例

# 表的内连接,内连接是结果集中只保留符合连接条件的记录

-- 方法一

SELECT e.empno,e.ename,d.dname

-- 连接目标

FROM t_emp e JOIN t_dept d

-- 连接条件

ON e.deptno=d.deptno;

 

-- 方法二

SELECT e.empno,e.ename,d.dname

-- 连接目标

FROM t_emp e,t_dept d

-- 连接条件

WHERE e.deptno=d.deptno;

 

-- 内连练习一

# 不同表的内连接

# 查询每个员工的工号,姓名,部门名称,底薪,职位,工资等级

SELECT e.empno,e.ename,d.dname,e.sal,e.job,s.grade

FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno

JOIN t_salgrade s ON e.sal BETWEEN s.losal and s.hisal;

 

# 相同表的内连接一

# 查询Scott相同部门的员工都有谁

SELECT e2.ename

FROM t_emp e1 JOIN t_emp e2 ON e1.deptno=e2.deptno

WHERE e1.ename="SCOTT" AND e2.ename!="SCOTT";

 

# 相同表的内连接二

# 查询底薪超过公司平均底薪的员工信息

SELECT e.empno,e.ename,e.deptno,e.job

FROM t_emp e JOIN

(SELECT avg(sal) as avgs FROM t_emp) t

ON e.sal>=t.avgs;

 

# 查询RESEARCH部门的人数,最高底薪、最低底薪、平均底薪、平均工龄

SELECT COUNT(*),MAX(e.sal),MIN(e.sal),AVG(e.sal),

FLOOR(AVG((DATEDIFF(NOW(),e.hiredate)/365)))

FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno

WHERE d.dname="RESEARCH";

 

SELECT FLOOR(29.9) # 29

SELECT CEIL(1.1) # 1.2

 

# 查询每种职业的最高工资、最低工资、平均工资、最高工资等级和最低工资等级

SELECT e.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)

FROM t_emp e JOIN t_salgrade s

ON (e.sal+IFNULL(e.comm,0)) BETWEEN s.losal AND s.hisal

GROUP BY e.job;

 

 

# 查询每个底薪超过部门平均底薪的员工信息

SELECT e.empno,e.ename,e.sal

FROM t_emp e JOIN

(SELECT deptno,AVG(sal) as depsal FROM t_emp GROUP BY deptno) t

ON e.deptno=t.deptno

AND e.sal>depsal;

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

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

以上是 mysql内连接是什么 的全部内容, 来源链接: utcz.com/z/545459.html

回到顶部