前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习mysql第五天

学习mysql第五天

作者头像
白胡杨同学
发布2020-04-23 17:44:47
4170
发布2020-04-23 17:44:47
举报

在select语句中,如果from子句引用了多个表源或试图,则可以用join关键字连接

1、内连接

内连接:inner join,从一张表中取出所有的记录去另外一张表中匹配,利用匹配条件

进行匹配。

基本语法:

表1[inner] join 表2 on 匹配条件

1、如果内连接没有条件(允许),那么就是交叉连接

2.使用匹配条件进行匹配

3、因为表的设计通常容易产生同名字段,尤其是ID,为了避免重名出现错误,通常

使用表名.字段名,确保唯一性.

select * from my_student inner join my_class on my_student.class_id=my_class

4、通常,如果条件中使用对应的表名,而表名通常比较长,所以可以通过表别名来简化

5、内连接匹配的时候,必须保证匹配到才保存

6、内连接可以在数据匹配完成后,使用where条件来限制,效果与on一样(推荐使用on).

using 关键字

是在连接查询中用来代替对应的on关键字的,进行条件匹配

1、在连接查询时,使用on的地方用using代替

2、使用using的前提是对应的两张表连接的字段是同名

3、如果using关键字,那么对应的同名字段,最终在结果中只会保留一个

基本语法:

表1[inner,left,right] join 表2 using (同名字段列表)//连接字段
select * from my_student a left join my_class b on a.class_id=b.class_id;
select * from my_student left join my_class using(class_id)
交叉连接

交叉连接:将两张表的数据与另外一张表彼此交叉。

基本语法:

表1 cross join 表2;
外连接

outer join,按照某一张表作为主表(表中所有记录在最后都会保留),根据条件去连接另外一张表

外连接分为两

种:左外连接(left join),右连接(right join)

左连接:左表是主表有连接:有表是主表

1、确定连接主表:左连接就是 left join 左边的表为主表;right join 就是右边为主表

2、拿主表的每一条记录,去匹配另外一张表的每一条记录

3、如果满足匹配条件:保留;不满足不保留。

4、如果主表记录在从表中一条都没有匹配成功,那么也要保留该记录,从表对应的字段值都为null;

基本语法:

左连接:主表 left join 从表 on 连接条件;
右连接: 主表 right join 从表 On 连接条件;

左连接对应的主表数据在左边;右连接对应的主表数据在右边;

事务概念

事务就是有一组SQL语句组成的业务逻辑,这组语句要么全执行,要么全不执行,不存在部分执行的情况。

基本原理

基本原理:Mysql 允许将事务 统一进行管理(存储引擎INNODB),将用户所做的操作,暂时保存起来,不直接放到数据表(更新),等到用于确认结果之后再进行操作

事务在mysql中通常是自动提交,但是也可以使用手动提交

事务特点
1、原子性

事务从start transaction 起到提交事务(commit 或者 rollback),要么所有操作都成功,要么就是所有操作都失败;

2、一致性

数据表中的数据修改,要么是所有操作一次性修改,要么都不修改

3、隔离性

如果一个客户端使用事务操作一个数据时候,另外一个客户端不能对该数据进行操作

4、持久性

事务一旦提交,他对数据库中数据的改变是永久性的。

自动事务

自动事务:autocommit,当客户端发送一条sql指令给服务器时候,服务器在执行之后需,不用等待用户反馈结果,会自动将结果同步到数据表

证明:利用两个客户端,一个客户端执行SQL指令,另外一个客户端查看执行结果。

自动事务:系统做了额外的步骤来帮助用户操作,系统是通过变量来控制的。

查看数据库是否开启自动功能:
show variables like 'autocommit';

在默认情况下,如果开启了自动提交功能,则此时返回的结果为ON;

关闭自动提交功能
set autocommit = 0;
执行命令手动进行事务提交:
commit;
事务回滚
rollback;
手动事务

手动事务:不管是开始还是过程还是结束都需要用户,手动的发送事务操作指令来实现。

开启事务
start transaction;
执行事务

将多个连续的但是是一个整体的sql指令,逐一执行。


提交事务

确认提交:commit,数据写到数据表(清空事务日志)

回滚操作:rollback,所有数据无效并清空

回滚点
回滚点:savepoint
增加回滚点:savepoint 回滚点名字//字母数字和下划线构成
回到回滚点:rollback to 回滚点名字

注意:在一个事务处理中,如果有很多个步骤,那么可以设置多个回滚点。

select * from my_stydent as s lefy join my_clas c on s.class_id =c.class_id;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、内连接
  • using 关键字
  • 交叉连接
  • 外连接
  • 事务概念
  • 基本原理
  • 事务特点
    • 1、原子性
      • 2、一致性
        • 3、隔离性
          • 4、持久性
          • 自动事务
            • 查看数据库是否开启自动功能:
              • 关闭自动提交功能
                • 执行命令手动进行事务提交:
                  • 事务回滚
                  • 手动事务
                    • 开启事务
                      • 执行事务
                        • 提交事务
                          • 回滚点
                          相关产品与服务
                          数据库
                          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档