MySQL中的TCL语言(事务控制语言)事务的介绍、使用及并发问题,视图介绍及使用——笔记6

本文介绍了MySQL中的事务,包括事务的ACID属性、隐式与显式事务的使用,以及并发问题。同时,讲解了视图的概念、创建与使用方法,强调了视图的不可更新情况。事务隔离级别中,MySQL默认为可重复读,可避免脏读和不可重复读,但可能存在幻读问题。视图作为虚拟表,提供动态数据视图,其创建、修改、删除及查看的操作也一并阐述。
摘要由CSDN通过智能技术生成


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、事务

1、事务简介

1、含义:
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行,每个mysql语句都是相互依赖的。其中innodb引擎支持事务。
通过show engines;:查看mysql支持的存储引擎
在这里插入图片描述
2、事务的ACID属性
原子性:
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
隔离性:
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

2、事务的使用

1、事务的创建
隐式(自动)事务:
事务没有明显的开启和结束的标记。比如:insert、update、delete语句
显式事务:
事务具有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用
set autocommit=0;设置自动提交功能为禁用(只针对当前事务有效)
在这里插入图片描述
step1:开启事务
set autocommit=0;
start transaction;可选的

step2:编写事务中的sql语句(select、、insert、update、delete)
语句1;
语句2;

step3:结束事务
commit;提交事务
rollback;回滚事务

在这里插入图片描述
savepoint 节点名;设置保存点
在这里插入图片描述

3、事务的并发问题

对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题。
比如:脏读(一个事务读取了其他事务还没有提交的数据)、不可重复读(一个事务多次读取,但结果不一样)、幻读(一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务“插入”的数据)
MySQL支持4种事务隔离级别,MySQL默认的事务隔离级别为:repeatable read(可重复读)。
😶可重复读:确保事务可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但幻读的问题依然存在。
每启动一个mysql程序,就会获得一个单独的数据库连接,每个数据库连接都有一个全局变量@@tx_isolation,表示当前的事务隔离级别。
✔查看当前的隔离级别:SELECT ✔@@tx_isolation;
✔设置当前mysql连接的隔离级别:set transaction isolation level read committed;
✔设置数据库系统的全局隔离级别:set global transaction isolation level read committed;
在这里插入图片描述

二、 视图

1、视图的简介

含义:就是虚拟的表,通过表动态生成的数据,只保存了sql逻辑,不保存查询结果,具有临时性。
在这里插入图片描述

2、视图使用

1、创建视图

create view 视图名;

在这里插入图片描述

2、修改视图
方式一:create or replace view 视图名 as 查询语句;
在这里插入图片描述

方式二:alter view 视图名 as 查询语句;
在这里插入图片描述

3、删除视图
语法:drop view 视图名,视图名,…;

在这里插入图片描述
4、查看视图

语法:desc 视图名;(推荐)

图中演示俩种方式:
在这里插入图片描述
5、视图的更新(一般不更新,例子比较简单所以能更新)
在这里插入图片描述
以下类型视图是不能更新的
😷包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
😷常量视图
😷Select中包含子查询
😷join(不能插入)
😷from 一个不能更新的视图
😷where子句的子查询引用了from子句中的表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值