数据库学习(4)-------多表查询与事务的操作

多表查询包括:内连接和外连接。

 笛卡尔积: 两表数据相乘

一丶表连接查询

1.内连接:⽤左边表的记录去匹配右边表的记录,如果符合条件的则显示。

  • 隐式内连接:看不到 join关键字,条件使⽤ where 指定
select 字段名 from 左表, 右表 where 条件;
  • 显示内连接
select 字段名 from 左表 [inner] join 右表 on 条件;
  •  内连接查询步骤
    1.确定查询哪些表 2.确定表连接的条件 3.确定查询的条件 4.确定查询的字段
2.外连接
  • 左外连接:使⽤ LEFT OUTER JOIN ... ONOUTER 可以省略
--⽤左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示 NULL
可以理解为:在内连接的基础上保证左表的数据全部显示
select 字段名 from 左表 left [outer] join 右表 on 条件
  • 右外连接:使⽤ RIGHT OUTER JOIN ... ONOUTER 可以省略
-- ⽤右边表的记录去匹配左边表的记录,如果符合条件的则显示;否则,显示 NULL
可以理解为:在内连接的基础上保证右表的数据全部显示
select 字段名 from 左表 right [outer] join 右表 on 条件

二丶子查询

概念:

1.⼀个查询的结果做为另⼀个查询的条件 2.有查询的嵌套,内部的查询称为⼦查询
3.⼦查询要使⽤括号

1.⼦查询结果只要是单⾏单列,肯定在 WHERE 后⾯作为条件,⽗查询使⽤:⽐较运算符

select 查询字段 from 表 where 字段 = (⼦查询);

2.⼦查询结果是单例多⾏,结果集类似于⼀个数组,⽗查询使⽤ IN 运算符

select 查询字段 from 表 where 字段 in (⼦查询);

3.⼦查询结果只要是多列,肯定在 FROM 后⾯作为表

select 查询字段 from (⼦查询) 表别名 where 条件;
小结:⼦查询结果只要是单列,则在 WHERE 后⾯作为条件
           ⼦查询结果只要是多列,则在 FROM 后⾯作为表进⾏⼆次查询

 三丶事务

概念:业务层面上不可分割的最小单位。事务执⾏是⼀个整体,所有的 SQL 语句都必须执⾏成功。如果其中有 1 SQL 语句出现异常,则所有的 SQL 语句都要回滚,整个业务执⾏失败。例如:转账,往往是要多次访问数据库才能完成的。转账是⼀个⽤户扣钱,另⼀个⽤户加钱。

1.手动提交事务

开启事务 start transaction;
提交事务 commit;
回滚事务 rollback;
执⾏成功的情况:开启事务 执⾏多条 SQL 语句 成功提交事务
执⾏失败的情况:开启事务 执⾏多条 SQL 语句 事务的回滚

 

2.自动提交事务

MySQL 默认每⼀条 DML( 增删改 ) 语句都是⼀个单独的事务,每条语句都会⾃动开启⼀个事务,
语句执⾏完毕⾃动提交事务, MySQL 默认开始⾃动提交事务

3.事务的隔离级别

  • 事务的四大特性

 

  •  事务并发访问产生的问题

  • MySQL 数据库有四种隔离级别

 注:隔离级别越⾼,性能越差,安全性越⾼。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值