MySQL多表查询与事务操作

1、多表查询

1.1、什么是多表查询

使用一条select语句查询多张表的信息

1.2、多表查询的分类

多表查询:

  1. 内连接
    隐式内连接
    显示内连接
  2. 外连接
    左外连接
    右外连接

1.2.1、隐式内连接

隐式内连接,看不到JOIN关键字,条件使用WHERE指定

SELECT 字段名 FROM 主表(左表),从表(右表) WHERE 条件

-- 隐式内连接,查询每个员工的姓名和年龄以及所在的部门名称,及位置
SELECT e.name,e.age,d.dept_name,d.dept_location from dept as d ,employee as e where e.dept_id=d.id;

1.2.2、显示内连接

显示内连接 使用INNER JOIN … ON 语句 ,INNER可以省略

SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 连接条件

SELECT e.name,e.age,d.dept_name,d.dept_location from dept as d inner join employee e on e.dept_id=d.id;

1.2.3、内连接的特点

内连接只查询多个表中符合连接条件的记录。

1.3、内连接

用左边表的记录去匹配右边表的记录,如果符合条件则显示,如:从表.外键=主表.主键;

【内连接:只查询符合连接条件的数据】

1.4、左外连接

左外连接,使用LEFT [OUTER] JOIN … ON ,OUTER可以省略

语法:SELECT 字段名 FROM 主表 LEFT JOIN 从表 ON 条件

左外连接的特点:左外连接会把主表(左表)中所有的数据都查询出来,从表中只查询符合连接条件

select * from employee e left join dept  d on d.id=e.dept_id;

1.5、右外连接

右外连接,使用RIGHT [OUTER] JOIN … ON ,OUTER可以省略

语法:SELECT 字段名 FROM 主表 RIGHT JOIN 从表 ON 条件

右外连接的特点:右外连接会把从表中所有的数据都查询出来,主表只查询符合条件的。

select * from employee e right join dept d on d.id=e.dept_id;

1.6、子查询

概念:
(1)一个查询的结果作为另一个查询的条件
(2)有查询的嵌套,内部的查询称为子查询
(3)子查询要使用小括号

子查询的三种情况

1)子查询的结果是单行单列的
2)子查询的结果是多行单列
3)子查询的结果是多行多列

子查询的结果是一个值

SELECT 字段名 FROM 表名 WHERE 字段=(子查询)

例如:查询大于员工平均年龄的员工信息

select * from employee where age>(select avg(age) from employee);
子查询的结果是多行单列

子查询结果是单列多行,结果类似一个数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值