mysql 不等值join_MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接...

#进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接/*含义: 当查询的字段来自于多个表时, 就会用到连接查询

一: sql 92标准 :等值连接 ,(#内连接)

1.可以为表区别名,区分多个重名的字段

2.为表使用别名后,只能使用别名去"select"!

二:非等值连接

1.where 列名 BETWEEN ... AND ...

三:自连接 :自己连接自己

四:左 / 右 外连接

1.应用场景: 用于查询一个表有内容,另一个表没有内容

如果从表中有和它匹配的,则显示匹配的值

如果从表中没有和它匹配的,则显示null

2.左外连接, left OUTER join (左边的是主表)

on 连接关系

where 筛选条件

3.右外连接,right OUTER join (右边的是主表)

on 连接关系

where 筛选条件

五:#全外连接 = 内连接的结果 + 表1中有但表2中没有的 + 表2中有的但表1中没有的

#MYSQL不支持!! Oracle数据库

六:#交叉连接

实现笛卡尔成绩,实现两个表的任意两项进行连接!

七:sql 92 和 sql 99*/#查询对偶姓名匹配SELECTbeauty.`name`,boys.`boyName`FROMbeauty,boysWHERE beauty.`boyfriend_id`=boys.`id`;

#案例2: 查询员工名和对应的部门名SELECTlast_name,department_nameFROMemployees,departmentsWHERE employees.`department_id`=departments.department_id;

#3.查询员工名/工种号/工种名 #使用别名SELECTe.`last_name` ,e.`job_id`,j.`job_title`FROMemployees e,jobs jWHERE e.`job_id`=j.`job_id`;

#4.查询有奖金的员工名和部门名SELECTe.`last_name`,e.`department_id`FROMemployees e,departments dWHERE e.`department_id`=d.`department_id`;

#5.查询每个工种的工种名和员工的个数, 并且按员工个数排序SELECT j.`job_title`,COUNT(*)FROMjobs j,employees eWHERE j.`job_id`=e.`job_id`GROUP BYj.`job_title`ORDER BY COUNT(*) DESC;

#2 /非等值连接

#案例1:查询员工的工资和工资级别SELECTsalary,grade_levelFROMemployees e,job_grades gWHERE e.salary BETWEEN g.`lowest_sal` ANDg.`highest_sal`;

#3 /左 . 右 外连接

#案例1:查询女生的男朋友不在boys 表中的 女生--[左外连接]

SELECT b.name,bo.*

FROMbeauty bLEFT OUTER JOINboys boON b.`boyfriend_id`=bo.`id`WHERE bo.`id` IS NULL;

#案例2: 查询哪个部门没有员工SELECT d.*,e.employee_idFROMdepartments dLEFT OUTER JOINemployees eON d.`department_id`=e.`department_id`WHERE e.employee_id IS NULL;

#全外连接= 内连接的结果 + 表1中有但表2中没有的 +表2中有的但表1中没有的

#MYSQL不支持!!

#交叉连接SELECT b.*,bo.*

FROMbeauty bCROSS JOINboys bo;

#内连接SELECT *

FROMbeauty bINNER JOINboysON b.`boyfriend_id`=boys.`id`;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值