【MySQL】视图,事务、隔离级别

news2024/11/24 19:10:15

视图--虚表,不在数据库中存放数据,数据源于基本表。

为什么要使用视图

  • 简化复杂的sql操作,在编写查询后,可以方便的重用它而不必知道它的查询细节。
  • 重复使用该sql语句。
  • 使用表的组成部分而不是整个表。
  • 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表。
  • 更改数据格式和表示。

性能问题
        因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果是多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会出现性能下降。

 使用视图跟使用基本表没有什么区别。用视图分两步:1.从基本表中查到数据2.打印出来。


创建视图:

create view 视图名 列名

as 子查询

with check option

使用show full tables可以查看表的类型,区分视图与基本表:

 删除视图:

drop view 视图名;


事务

        事务就是一个操作序列,(一个整体)不可分隔,执行一半出错-回滚。

使用场景:银行转账A->B转账不可分割。

事务的四大特性ACID

        原子性atomicity、一致性consistency、隔离性isolation、持久性durability

原子性:一个整体

一致性:状态转换相同

隔离性:两个事务同时执行,互不影响--是否可见

持久性:数据到数据库中,即使数据库坏了,数据也可以恢复。


隔离级别

        隔离状态有四个级别,定义多个事务何时看到对方的修改。

1.未提交读READ UNCOMMITTED

        隔离性最低。事务中的修改即使没有提交,对其他事务也都可见。脏读

2.提交读READ COMMITTED

        大多数数据库的默认隔离级别。必须提交了事务,其他的事务才可见修改。

3.可重复读REPEATABLE READ

        其他事务提交了该事务未结束时都还看不见修改。确保同一事物多次读到的数据是一致的,可能出现幻读问题。

4.可串行化SERIALIZABLE 

        很少使用,可能会导致锁征用和大量超时问题。事务不可同时有多个,事务必须串行的发生。

查询当前会话的隔离级别:

SELECT @@SESSION.transaction_isolation;

默认查出来mysql是可重复读。

 查询系统的隔离级别

SELECT @@GLOBAL.transaction_isolation;

 幻读(可重复读中):

        一个事务在读取某个范围内的记录时,另一个事务在该范围修改了记录,但是前一个事务看不到修改的。

另一个事务插入语句会产生幻行。

设置隔离级别:

设置全局隔离级别:

set global transactin isolation level 级别;

设置会话隔离级别:

set session transaction isolation level 隔离级别;

事务的操作

开启事务:bedin; 或  strat transaction;

提交事务:commit;

回滚事务:rollback;相当于撤回

 因为事务是一个操作序列,开始事务后的操作可以rollback放弃,结束后相当于没有执行语句。

单独执行一条语句,不用begin和commit包围,系统自动将这个语句当一个事务。

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

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

相关文章

vscode编译的时候:未定义标识符 thread

vscode编译的时候:未定义标识符 thread thread’ was not declared in this scope" 未定义标识符 thread 原因 MinGW GCC当前仍缺少标准C 11线程类的实现。 对于跨平台线程实现,GCC标准库依赖于gthreads / pthreads库。如果该库不可用&#xf…

手搓GPT系列之 - 通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解(上篇)

1. 前言 说起RNN和LSTM,就绕不过Sepp Hochreiter 1997年的开山大作 Long Short-term Memory。奈何这篇文章写的实在是太劝退,整篇论文就2张图,网上很多介绍LSTM的文章都对这个模型反向传播的部分避重就轻,更少见(反正…

2023/5/14学习总结

这道题我们可以看到数据范围很小 &#xff0c;所以可以使用暴力枚举&#xff0c;将所有可以组成长方形的长宽全遍历一遍&#xff0c;同时要满足这个长方形里没有障碍物的条件&#xff0c;取得周长最大值 #include<bits/stdc.h> using namespace std; typedef long long …

JavaSE基础(六)—— 面向对象、封装、对象内存图、成员变量和局部变量区别

目录 一、面向对象对象介绍 1. 面向对象的重点学习什么 二、设计对象并使用 1. 设计类&#xff0c;创建对象并使用 1.1 如何得到对象 1.2 如何使用对象 2. 定义类的几个补充注意事项 2.1 对象的成员变量的默认值规则 三、对象内存图 1. 多个对象内存图 2. 两个变量指…

Springboot +Flowable,流程表单应用之静态表单

一.简介 整体上来说&#xff0c;我们可以将Flowable 的表单分为三种不同的类型&#xff1a; 动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息&#xff0c;不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 k…

生命周期、数据共享、ref引用、购物车案例

生命周期&数据共享 1.组件的生命周期2.组件之间的数据共享3.ref 引用4.购物车案例 1.组件的生命周期 生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建 -> 运行 -> 销毁的整个阶段&#xff0c;强调的是一个时间段。 生命…

chatGPT提问,BGP内容

ChatGPT提问&#xff1a;提问框架 背景角色任务要求 动态路由&#xff1a;内部网关协议&#xff1a;如RIP ISIS OSPF 在同一个公司内部运行的路由协议 外部网关协议&#xff1a;如 BGP 在不同公司之间运行的路由协议 AS&#xff1a;自治系统 每个自治系统都有唯一的…

动态组件、插槽、自定义指令、Eslint和prettierrc配置、axios全局挂载

动态组件、插槽、自定义指令、Eslint和prettierrc配置、axios全局挂载 动态组件插槽体验插槽的基础用法作用域插槽 自定义指令Eslint和prettierrc配置prettierrc axios全局挂载 动态组件 动态组件指的是动态切换组件的显示与隐藏。 如何实现动态组件渲染 vue 提供了一个内置的…

Visual Studio 2022 CMake+MinGW+GDB 调试目标程序

前段时间笔者在使用MinGW编译了QtCreator后&#xff0c;想要进行调试。最开始使用VSCode进行调试&#xff0c;可是可以调试&#xff0c;但是发现调试过程中反应比较慢&#xff0c;毕竟QtCreator整个源代码工程还是非常大的&#xff0c;VSCode是由JS语言编写&#xff0c;执行效率…

Golang每日一练(leetDay0065) 位1的个数、词频统计

目录 191. 位1的个数 Nnumber of 1-bits &#x1f31f; 192. 统计词频 Word Frequency &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 191. 位1的个数 Nnum…

Java面试知识点(全)-JVM面试知识点一

[Java面试知识点(全) 导航&#xff1a; https://nanxiang.blog.csdn.net/article/details/130640392 注&#xff1a;随时更新 SQL优化 r m y s q l q u e r y ( " S E L E C T u s e r n a m e F R O M u s e r W H E R E s i g n u p d a t e > ′ r mysql_query(…

RK3568平台开发系列讲解(网络篇)图解linux ping

🚀返回专栏总目录 文章目录 一、SOCK_RAW套接字实现的ping二、ping命令发送端内核实现三、ping命令接收端内核实现沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 ping 命令采用 ICMP 协议,是一个用户空间程序,它打开一个 SOCK_RAW 套接字或者ICMP套接字发送ICMP_…

Chrome启动参数常用参数

Chrome常用参数请参考下表。 序号 参数 说明 1 --allow-outdated-plugins 不停用过期的插件。 2 --allow-running-insecure-content 默认情况下&#xff0c;https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。 3 …

Python爬虫入门教程,BeautifulSoup基本使用及实践

Python爬虫入门教程&#xff0c;BeautifulSoup基本使用及实践 爬虫&#xff0c;是学习Python的一个有用的分支&#xff0c;互联网时代&#xff0c;信息浩瀚如海&#xff0c;如果能够便捷的获取有用的信息&#xff0c;我们便有可能领先一步&#xff0c;而爬虫正是这样的一个工具…

大数据之PySpark的RDD创建和分区

文章目录 前言一、RDD创建二、RDD分区数总结 前言 #博学谷IT学习技术支持# 上篇文章对PySpark的RDD做了简单的介绍&#xff0c;以及总结了RDD的特性&#xff0c;该篇文章主要介绍RDD的创建方式&#xff0c;PySpark的RDD创建方式主要有两种&#xff0c;一种是在程序中直接创建&…

11 dubbo源码学习_dubbo协议通信

dubbo在通信上也支持非常多的网络协议,而dubbo协议属于dubbo框架自研,整体协议也比较有代表性,采用定长协议头+变长协议休的形式; 1. dubbo协议格式 Magic - Magic High & Magic Low (16 bits)标识协议版本号,Dubbo 协议:0xdabbReq/Res (1 bit)标识是请求或响应。请…

「OceanBase 4.1 体验」|OCP Express

文章目录 一、简介二、特性介绍2.1 数据库管理2.2 数据库可观测性 一、简介 OCP Express 是一个基于 Web 的 OceanBase 4.x 轻量化管理工具&#xff0c;作为 OceanBase 数据库的工具组件&#xff0c;它集成在 OceanBase 数据库集群中&#xff0c;支持数据库集群关键性能指标查看…

MyBatis第一章 搭建MyBatis的运行环境

这里写自定义目录标题 一 创建Maven工程1 打包方式设置为jar2 引入依赖进去 二 创建MyBatis的核心配置文件1 配置核心文件2 创建mapper接口3 创建mabatis的映射文件4 测试文件的写法5 需要代码可以访问gitee仓库去看看6 log4j的日志功能 三 先改方法&#xff0c;后改映射文件1 …

Qt开发笔记(Qt5.9.9下载安装环境搭建win10)

#1 Qt下载网站&#xff08;国内、国外镜像&#xff09; #2 Qt5.9.9安装选项 #3 配置系统环境变量 #4 创建测试项目 #1 Qt下载网站&#xff08;国内、国外镜像&#xff09; 官方下载地址&#xff08;慢&#xff09;&#xff1a;http://download.qt.io/ 国内镜像网站 这里给大家…

私有jar包发布到maven中央仓库

一、注册Jira Sonatype JIRAhttps://issues.sonatype.org/secure/Dashboard.jspa 二、新建issue 提交后&#xff0c;等待5-10分钟&#xff0c;会收到中央机器人的评论&#xff0c;如下&#xff1a; 在这里&#xff0c;我没有自己的域名&#xff0c;此时&#xff1a; 1、机器人…