美文网首页开发应用
SQL之多表查询

SQL之多表查询

作者: 每天起床都想摆 | 来源:发表于2021-12-11 08:14 被阅读0次

    多表查询

    MySQL不支持full join ,可以使用union连接两条查询语句,实现全连接(查询并集)

    例如:select * from stu1 union select * from stu2;

    概念

    笛卡尔积 取A,B集合所有组合情况
    多表查询 从多张表中查询数据:连接查询&子查询

    • 连接查询

      • 内连接 查询集合A,B的交集数据
      • 外连接
        • 左外连接 查询A表所有数据和交集部分数据
        • 右外连接 查询B表所有数据和交集部分数据
    • 子查询

    @$HDA_Y@L9YG`TCC}ZZJEQG.png

    内连接

    基本语法

    -- 隐式内连接
    select 字段列表 from 表名1,表名2... where 条件;
    
    -- 显式内连接
    select 字段列表 from 表1 [inner] join 表2 on 条件;> 
    

    为应对不同表中字段名相同的情况,在字段名前加上表名作为前缀进行引用,例如emp.id,stu.id

    当表名过长时,通常给表名取别名以简化书写

    例如

     select t1.id,t2.id  from emp t1,stu t2 where t1.id = t2.id
    

    外连接

    基本语法

    --左外连接
    select 字段列表 from 表1 left [outer] join 表2 on 条件;
    
    --右外连接
    select 字段列表 from 表1 right [outer] join 表2 on 条件;
    

    子查询

    概念 查询中嵌套查询,称嵌套查询为子查询(查询语句的条件是一条可以得出结果的查询语句)

    子查询根据查询结果不同 ,作用不同

    • 单行单列 作为条件值,使用= != > < 等进行条件判断

      select 字段列表 from 表 where 字段名 = (子查询);
      
    • 多行单列 作为条件值,使用in等关键字进行条件判断

      select 字段列表 from 表 where 字段名 in (子查询);
      
    • 多行多列 作为虚拟表

      select 字段列表 from (子查询) where 条件;
      

    事务

    概念

    • 数据库的事务是一种机制,一个操作序列,包含了一组数据库操作命令
    • 事务把所有命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
    • 事务是一个不可分割的工作逻辑单元

    操作

    一个事务的操作包括了 开启事务--->(出现异常)回滚事务--->提交事务

    基本语法

    -- 开启事务
    start transaction;
    或者
    begin;
    
    -- 回滚事务
    rollback;
    
    -- 提交事务
    commit;
    

    roolback和commit不能同时运行,二者同时运行时,并不能理想的进入回滚的内循环,而会回滚一次后直接执行commit

    commit会让数据被持久化的更改,即在其他窗口页面查询时数据也会呈现更改后的结果

    roolback会阻止发生异常的事务继续执行,回滚到事务初始的状态

    事务的提交方式

    --查看事务的默认提交方式
    
    select @@autocommit;
    
    -- 1    自动提交            0   手动提交
     
    修改事务提交方式
    
    set @@autocommit = 0;
    

    事务的四大特征(A-C-I-D)

    • 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败

    • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态

    • 隔离性(Isolation):多个事物之间,操作的可见性

    • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

    相关文章

      网友评论

        本文标题:SQL之多表查询

        本文链接:https://www.haomeiwen.com/subject/puwoxrtx.html