【Mysql数据库基础08】事务、视图的创建和修改

事务和视图

  • 1 事务
    • 1.1 事务的介绍 ACID
    • 1.2 演示事务的使用步骤
      • 1.2.1 事例:张无忌转账500给赵敏
    • 1.3 事务并发问题的介绍
    • 1.4 "删除"在事务中的区别
  • 2 视图
    • 2.1 视图的介绍
    • 2.2 视图的创建
    • 2.3 视图的修改
      • 2.3.1 方式一 create or replace view
      • 2.3.2 方式二 alter view
    • 2.4 视图的删除
    • 2.5 查看视图
  • 3 练习
  • 4 视图的一些其他操作
    • 4.1 插入数据
    • 4.2 修改数据
    • 4.3 删除数据

1 事务

TCL transaction control language事务控制语言

1.1 事务的介绍 ACID

  1. 原子性(Atomicity):原子性要求事务是不可分割的最小工作单位,要么全部操作成功,要么全部操作失败回滚。即要么所有操作都执行,要么都不执行,不存在部分执行的情况。

  2. 一致性(Consistency): 一致性保证了事务在执行前后数据库的状态必须是一致的。在事务开始之前和结束之后,数据库应该仍然保持一致性约束,不会破坏数据完整性和业务规则。

  3. 隔离性(Isolation): 隔离性指的是多个事务并发执行时,事务之间应该相互隔离,使得每个事务感觉不到其他事务的存在。隔离性能够防止并发事务之间出现数据混乱、并发读取数据的问题。

  4. 持久性(Durability): 持久性确保一旦事务提交,其所做的修改将永久保存在数据库中,即使系统发生故障或重新启动,修改的数据也不会丢失。

1.2 演示事务的使用步骤

必须先设置自动提交功能为禁用
set autocommit=0;

步骤1:开启事务
set autocommit=0;
start transaction;步骤2:编写事务中的sql语句(select insert update delete)
语句1;
语句2;
...步骤3:结束事务
commit;提交事务
rollback;回滚事务show variables like 'autocommit';
show engines;

1.2.1 事例:张无忌转账500给赵敏

1.先创建一个账户表

create table account(id int primary key auto_increment,username varchar(20),balance double
);

auto_increment 通常用于为表中的主键字段生成唯一的自增值。当某一列被指定为 auto_increment 时,数据库系统会自动为新插入的记录分配一个唯一的递增值,而不需要用户手动指定该值。

2.查看account表中的所有索引

show index from account;

3.插入值

insert into account(username,balance)
values ('张无忌',1000),('赵敏',1000);

4.事务流程

# 开启事务
set autocommit=0;
start transaction;# 编写事务的语句
update account 
set balance = 1000
where username = '张无忌';update account 
set balance = 1000
where username = '赵敏';#结束事务
commit;

5.回滚事务

# 开启事务
set autocommit=0;
start transaction;# 编写事务的语句
update account 
set balance = 1000
where username = '张无忌';update account 
set balance = 1000
where username = '赵敏';#回滚事务
rollback;

1.3 事务并发问题的介绍

  1. 脏读(Dirty Read):脏读指在一个事务中读取了另一个事务未提交的数据,如果另一个事务在后续发生回滚操作,那么当前事务读取到的数据就是“脏”的。为避免脏读,可以使用 READ_COMMITTED 隔离级别,它规定一个事务只能读取到已经提交的数据。

  2. 不可重复读(Non-Repeatable Read):不可重复读指在同一事务中,由于其他事务修改了数据,导致一个事务两次读取相同的记录时,结果不一致。为避免不可重复读,可以使用 REPEATABLE_READ 隔离级别,它确保在一个事务中多次读取同一数据时,得到的结果是一致的。

  3. 幻读(Phantom Read):幻读指在同一事务内,由于其他事务插入、更新或删除数据,导致同一查询操作多次返回不同数量的数据行。为避免幻读,可以使用 SERIALIZABLE 隔离级别,它规定事务之间是串行执行的,确保在事务执行期间,其他事务无法对数据进行操作,从而避免幻读问题。

可以通过设置隔离级别,避免以上现象发生

事务的隔离级别

脏毒不可重复读幻读
read uncommitted
read committed×
repeatable read××
serializable×××

1.4 "删除"在事务中的区别

# 演示delete
set autocommit = 0;
start transaction;
delete from account;
rollback;# 演示truncate
set autocommit=0;
start transaction;
truncate table account;
rollback;

2 视图

2.1 视图的介绍

MYSQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。不占据物理空间。

例:查询姓张的同学的姓名和专业名
原始方法:

select stuname,majorname
from stuinfo s
inner join major m 
on s.majorId = m.id
where s.stuname = '张%';

视图方法:

create view v1
as
select stuname,majorname
from stuinfo s
inner join major m
on s.majorid = m.id;select *
from v1
where stuname like '张%';

2.2 视图的创建

例1:查询姓名中包含a字符的员工名、部门名和工种信息

# 创建视图
create view myv1
as
select last_name,department_name,job_title
from employees e
join departments d on e.department_id = d.department_id
join jobs j on e.job_id = j.job_id;# 查询视图
select *
from myv1
where last_name like '%a';

例2:查询各部门的平均工资级别

# 创建视图查看每个部门的平均工资
create view myv2
as
select department_id,avg(salary) as ag
from employees e
group by department_id;# 根据视图和job_grades查询工资级别
select myv2.*,grade_level
from myv2
join job_grades on ag between lowest_sal and highest_sal;

例3:查询平均工资最低的部门信息

# 创建视图查看部门的平均工资
# 例2中已创建# 在视图中查询工资最低的部门信息
select d.*
from myv2
join departments d
on myv2.department_id = d.department_id
where ag = (select min(ag)from myv2
);

还有更简单的做法,但是这个没有显示出部门的所有信息:

select *
from myv2 
order by ag asc
limit 1;

在这里插入图片描述
例4: 查询平均工资最低的部门名和工资

create view myv3
as 
select *
from myv2 
order by ag asc
limit 1;select department_name,ag
from myv3
join departments d
on d.department_id = myv3.department_id;

视图的好处:
1.重用sql语句
2.简化复杂的sql操作,不必知道它的查询细节
3.保护数据,提高安全性

2.3 视图的修改

2.3.1 方式一 create or replace view

create or replace view 视图名
as 
查询语句;

2.3.2 方式二 alter view

alter view 视图名
as 
查询语句;

2.4 视图的删除

drop view myv1,myv2,myv3;

2.5 查看视图

#方式一
desc myv3;#方式二 效果不好
show create view myv3;

3 练习

一、创建视图 emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱

create or replace view emp_v1
as
select last_name,salary,email,phone_number
from employees;select last_name,salary,email
from emp_v1
where phone_number like '011%';

二、创建视图 emp_v2,要求查询部门的最高工资高于 12000 的部门信息

# 创建视图查询部门的最高工资高于12000的id有哪些
create or replace view emp_v2
as
select department_id,max(salary) as m_s
from employees
group by department_id
having m_s > 12000;# 查询视图部门id的部门信息
select d.*,emp_v2.m_s
from emp_v2
join departments d on emp_v2.department_id = d.department_id;

4 视图的一些其他操作

4.1 插入数据

insert into myv1
values ( ),( ),( );

4.2 修改数据

update myv1
set last_name = ''
where last_name = '';

4.3 删除数据

delete from myv1
where last_name = '';

学的好疲惫😇,坚持一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DaisyDisk for mac 苹果电脑磁盘清理工具

DaisyDisk for Mac是一款直观易用的磁盘空间分析工具,专为Mac用户设计,旨在帮助他们快速识别和管理磁盘上的文件与文件夹,从而释放存储空间。 软件下载:DaisyDisk for mac 激活版 DaisyDisk采用独特的可视化界面,将磁盘…

Shadow Tactics

本题链接: 题目: 样例: 输入 1 1 3 3 U 2 2 2 输出 YES 思路: 根据题意,隼人的坐标是不会动的,并且士兵只能直线来回行动。 所以这里我们需要分成三种情况。 1、隼人坐标在士兵走动路线之间,…

通过修改ospf的COST值来控制路由选路

配置好OSPF之后,发现默认走的是上面 PC1>tracert 192.168.200.1traceroute to 192.168.200.1, 8 hops max (ICMP), press Ctrl+C to stop1 192.168.100.254 16 ms <1 ms 16 ms2 10.10.10.2 15 ms &l

探究QUIC协议:基于UDP的可靠传输之路

为什么需要基于 UDP 实现可靠传输 主要是 TCP 协议四个方面的缺陷&#xff1a; 升级 TCP 的工作很困难&#xff1b;TCP 建立连接的延迟&#xff1b;TCP 存在队头阻塞问题&#xff1b;网络迁移需要重新建立 TCP 连接&#xff1b; 因此&#xff0c;基于UDP实现可靠传输并不是重…

ReentrantLock 原理

(一)、非公平锁实现原理 1、加锁解锁流程 先从构造器开始看&#xff0c;默认为非公平锁实现 public ReentrantLock() {sync new NonfairSync(); } NonfairSync 继承自 AQS 没有竞争时 加锁流程 构造器构造&#xff0c;默认构造非公平锁(无竞争&#xff0c;第一个线程尝试…

2023自适应霍夫曼编码High-performance RDHEI with adaptive Huffman code

RRBE 本文仅供自我学习使用,切勿转载和搬运,如有侵权,联系立删~ 方法总框架 首先由内容所有者生成原始图像像素点的标签映射; 然后数据隐藏者采用自适应霍夫曼编码将多个信息插入加密图像像素点;接收端进行数据提取和图像恢复。在数据提取之前,必须对标记的加密图像进行…

DC-7靶场

一.环境搭建 1.下载地址 靶机下载地址:https://download.vulnhub.com/dc/DC-7.zip 2.虚拟机配置 设置nat&#xff0c;打开靶机&#xff0c;遇到错误点重试和是 开启后如图所示即可 二.开始渗透 1.信息收集 首先找到靶机的ip地址 arp-scan -l 发现靶机的ip地址为192.168.…

分布式ID生成方案总结

分布式场景下&#xff0c;需要保证每一个服务拿到的id是唯一的。本文讨论、分析、总结了一些常见的分布式ID生成方案 结论&#xff1a;技术上没有银弹&#xff0c;每种分布式id都有自己的使用场景。uuid适用于业务比较简单&#xff0c;对性能没有太高追求等。 目前主流是 基于数…

某手信息流如何跳V,达到精准数据回传?

在数字营销的新纪元中&#xff0c;快手磁力引擎凭借其卓越的推广能力&#xff0c;已经吸引了无数品牌的目光。而为了更有效地将快手上的流量转化为企业微信的用户&#xff0c;数灵通正逐渐崭露头角&#xff0c;成为品牌方的得力助手。今天&#xff0c;我们就来探讨一下&#xf…

【问题处理】蓝鲸监控-数据断点解决

本文来自腾讯蓝鲸智云社区用户&#xff1a;fadewalk 在问答社区看到有小伙伴在落地蓝鲸的过程中出现监控平台的grafana面板数据断点问题&#xff0c;往往出现这种问题&#xff0c;都比较的头疼。 如果将CMDB&#xff08;配置管理数据库&#xff09;比作运维的基石&#xff0c;…

Soft Robotics:两栖环境下螃蟹仿生机器人的行走控制

传统水陆两栖机器人依靠轮胎或履带与表面的接触及摩擦产生推进力&#xff0c;这种对于表面接触的依赖性限制了现有水陆两栖机器人在低重力环境下&#xff08;如水中&#xff09;的机动性。利用生物自身的推进机制&#xff0c;人为激发生物运动行为&#xff0c;由活体生物与微机…

电阻的妙用:限流、分压、滤波,助力电路设计!

电阻可以降低电压&#xff0c;这是通过电阻的分压来实现的。事实上&#xff0c;利用电阻来降低电压只是电阻的多种功能之一。电路中的电阻与其他元件&#xff08;电容、电感&#xff09;结合用于限流、滤波等。&#xff08;本文素材来源&#xff1a;https://www.icdhs.com/news…

C++ :STL中vector扩容机制

vector是STL提供的动态数组&#xff0c;它会在内部空间不够用时动态的调整自身的大小&#xff0c;调整过程中会有大量的数据拷贝&#xff0c;为了减少数据拷贝的次数vector会在调整空间的时候尽量多申请一些空间&#xff0c;这些预留出的空间可以很大程度上减少拷贝的发生。 在…

适合新手小白的wordpress详细安装教程

1、下载程序 到wordpress官方网站下载wordpress程序&#xff0c;官方下载地址&#xff1a;Download | WordPress.org China 简体中文。 下载最新版的wordpress程序 https://cn.wordpress.org/latest-zh_CN.zip 2、上传程序 上传程序前先确认主机是否符合安装的环境要求&…

爬虫基础训练题

1.抓取imooc网站实战课程部分的课程名称&#xff08;所有课程大概7页&#xff0c;抓取1到5页&#xff09;&#xff0c;并把所有课程名称存储为txt文件第一页地址 2.设置一个请求头&#xff08;headers&#xff09;&#xff0c;这是一个字典&#xff0c;用于在HTTP请求中设置请…

职场人必备!效率翻倍的多微信号必备管理工具大揭秘

在职场中&#xff0c;高效率的工作方式是非常重要的。而为了提高工作效率&#xff0c;合理运用一些工作神器也是必不可少的。今天给大家分享一个多微信号管理工具——微信管理系统&#xff0c;它能够帮助职场人员管理多个微信号&#xff0c;让工作变得更加高效。 首先&#xf…

mamba的学习记录

最近新出了一种很火的架构mamba&#xff0c;听说吊打transformer&#xff0c;特此学习一下&#xff0c;总结一下学习的内容。 state-spaces/mamba (github.com)3个月8Kstar&#xff0c;确实有点受欢迎。 目录 1.先验 RNN​ LSTM ​2.mamba State Space Models​ Selecti…

React和Vue.js的有什么区别

在当今前端开发领域&#xff0c;React 和 Vue.js 作为两大热门的前端框架备受开发者关注。它们各自拥有独特的特点和优势&#xff0c;在实际项目中有着广泛的运用。本文将深入探讨 React 和 Vue.js 之间的区别&#xff0c;从组件化方式、数据绑定、模板语法以及生态系统和工具支…

案例 | 华院计算x第一财经:我和我的数智人唱双簧

创新关乎命运&#xff0c;科技引领未来。生成式人工智能(AIGC)给传媒行业发展带来严峻挑战的同时&#xff0c;也带来千载难逢的重大发展机遇。2024年政府工作报告中提出&#xff0c;要深化大数据、人工智能等研发应用&#xff0c;开展“人工智能”行动&#xff0c;打造具有国际…

俚语加密漫谈

俚语加密是一种古老而有效的通信方式&#xff0c;将特定词语或短语在群体内赋予特殊含义&#xff0c;从而隐藏真实信息。类似于方言&#xff0c;它在历史上的应用不可忽视。随着计算机时代的到来&#xff0c;现代密码学通过数学运算编织密语&#xff0c;使得加密变得更加高深莫…