MySQL:多表查询和事务

多表查询

从多张表中查询数据

如果直接执行多表查询

select * from emp,dept;

会得到大量的结果集,即两张表的全部组合结果(笛卡尔积)

但我们并不需要这么多的无效结果,只需要保留两张表关联部分的数据

通过添加连接查询条件

select * from emp,dept where 外键 = 主键;

连接查询

内连接

查询两个集合的交集部分数据

隐式内连接
select 字段列表 from1 as 别名,2 as 别名 where 条件..
显式内连接
select 字段列表 from1 别名1[inner] join2 别名2 on 连接条件

外连接

左外连接:

查询左表所有数据,以及两张表交集部分的数据

select 字段列表 from1 left [outer] join2 on条件
右外连接:

查询右表所有数据,以及两张表交集部分数据

select 字段列表 from1 right [outer] join2 on条件

自连接

当前表与自身的连接查询,自连接必须使用表别名

子查询

在SQL语句中嵌套select语句,称为嵌套查询,又称子查询

分为

标量子查询(子查询结果为单个值)
列子查询(查询结果为一列)
行子查询(子查询结果为一行)
表子查询(子查询结果为多行多列)

子查询可以写在

WHERE,FROM,SELECT

之后

标量子查询

最简单的子查询形式

只需要单纯的将需求分解即可

select a from b where + 条件
条件: a=(select a from b where c)

列子查询

子查询的结果为一列(可以是多行)

常用操作符:

IN,NOT IN
IN 在指定的集合范围内,多选
NOT IN 不在指定的集合范围内
select a from b where a in (select a from b where c)

行子查询

子查询结果返回一行(一列或多列)

常用操作符:

=,<>,IN,NOT IN
select * from emp where (a,b) = (select a,b from emp where ....)
#行和行进行判断

表子查询

子查询结果为多行多列(临时表)

常用操作符:

IN

事务

一组操作的集合,一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败.

开启事务
START TRANSACTIONBEGIN;
提交事务
COMMIT
回滚事务
ROLLBACK

事务的四大特性

ACID

原子性:

Atomicity

事务是不可分割的最小操作单元,要么全部成功,要么全部失败.

一致性:

Consistency

事务完成时,必须使所有数据都保持一致状态.

隔离性:

Isolation

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行.

持久性:

Durability

事务一旦提交或回滚,那对数据库中数据的改变就是永久的.

相关推荐

  1. MySQL:查询事务

    2024-05-02 18:28:02       35 阅读
  2. MySQL - 查询

    2024-05-02 18:28:02       64 阅读
  3. MySQL-查询

    2024-05-02 18:28:02       74 阅读
  4. MySQL查询

    2024-05-02 18:28:02       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 18:28:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 18:28:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 18:28:02       82 阅读
  4. Python语言-面向对象

    2024-05-02 18:28:02       91 阅读

热门阅读

  1. 程序员副业可用的四大原则

    2024-05-02 18:28:02       29 阅读
  2. Circuits--Sequential--Finite5

    2024-05-02 18:28:02       30 阅读
  3. BKPUNIX

    2024-05-02 18:28:02       28 阅读
  4. 单片机与Python串口通讯

    2024-05-02 18:28:02       30 阅读
  5. Python Json数据解析

    2024-05-02 18:28:02       31 阅读
  6. 单机多GPU的训练及debug中vscode下launch.json内容设置

    2024-05-02 18:28:02       31 阅读
  7. 【Golang】使用 GORM 的 Scopes 进行查询

    2024-05-02 18:28:02       31 阅读
  8. 设计模式之单例模式

    2024-05-02 18:28:02       29 阅读
  9. IntelliJ IDEA 常用快捷键

    2024-05-02 18:28:02       34 阅读