子查询和事务隔离以及用户管理

news2025/1/20 13:29:16

一、子查询

子查询是另一个语句中的select语句嵌套在另一个select中。注意子查询语法上必须使用()包起来。
嵌套的那个语句返回的结果有可能是:

  • 一个字段,一行记录,一个列或一个表。
  • 嵌套的位置
    • where / having语句里面作为条件使用
    • 在from语句中作为新表使用

子查询的结果作为新表

select * from (
	select 
		ename,
		salary,
	    salary - (select avg(salary) from t_employee) as diff
	from t_employee 
) where abs(diff) > 500;

子查询的结果作为条件

  • 使用聚合函数将多个结果合并为一个值
    select * 
    from t_employee
    where salary > (
    	select avg(salary) from t_employee;
    ) and gender = '男'
  • 使用ALL / ANY/EXIST对多个数据进行比较
    select * 
    from t_employee
    where salary > ALL( -- 大于所有人的薪资
    	select salary from t_employee;
    ) and gender = '男'

使用窗口函数来获取新表

问题:查询每个部门薪资排名前两位的的员工

select ename, salary, did, 
row_number() over(partition by did 
order by salary desc) as cnt 
from t_employee;

子查询复制表

create table dept like t_department; -- 复制表
insert into dept (select * from t_department); -- 复制表数据

create table emp as (select * from t_employee); -- 复制表和数据

二、事务

事务(Database Transaction) 是一个逻辑工作单元,要么完全的执行,要么完全的不执行。如果操作过程中无法执行下去,则会撤销已经执行的操作,恢复到执行前的数据状态。

事务的ACID四特性

  • 原子性:不可分割
  • 一致性:有引用关系的表的更新要一致的改变
  • 隔离性:多个事务操作数据必须是线程安全的
  • 持久性:一旦事务被提交,数据库中数据的改变应该是永久的

事务的前提

MySQL的两种引擎:InnoDB是支持事务的,MyISAM是不支持事务的。
MySQL是默认自动提交事务的,可以设置关闭。
set autocommit = false;
这个设置当你关闭可视化软件后会重新回到自动提交。使用commit;关键字才会对数据库产生持久化影响。

基本操作

  • 开启事务 begin; 执行后,数据库开启了临时的手动提交状态
  • 提交事务 commit; 提交begin后面的SQL语句,恢复自动提交
  • 事务回滚 rollback;撤销begin后面的SQL语句,恢复自动提交

事务只对DML数据操作语言有效,比如常用的增删改操作。但是比如truncate等DDL数据库定义语句,直接删除了表之后重新创建了一个新表,这个无法回滚撤销。

事务的隔离级别

事务间干扰产生的问题

  • 脏读:别人处理过程中的数据被自己读取了,最后结果可能撤销和修改,是脏数据。
  • 不可重复读:读取了前一事务提交的数据,有些时候不可重复读并不是问题。
  • 虚读:指一个事务内读取到了别的事务插入的数据,导致前后读取不一致,和不可重复读的区别是:不可重复读查询的是同一个数据项,幻读针对的是一批数据整体。

隔离级别

  • 串行化(serializable):解决了三个问题
  • 可重复读(repeatable-read):解决了不可重复读问题
  • 读已提交(read-committed):解决了脏读问题
  • 读未提交(read-uncommitted):三个问题都会出现

查询隔离等级:select @@transaction_isolation;
设置隔离等级:set transaction_isolation = ‘read_uncommitted’
这个设置是会话级别的,当前会话结束后会恢复到原先的样子。

三、权限管理

权限级别

  • 全局权限
  • 数据库权限
  • 表权限
  • 字段权限
  • 存储过程以及

用户管理

  • 创建新用户:create user ‘tom’@% identified by ‘密码’;%表示可以远程登录该主机。
  • 查看当前用户的权限: show grants for ‘tom’@‘%’;
  • 给用户授权:
    • grant select on db1.emp to 'ray@%'
    • grant all on db1.* to 'ray'@'%';
  • 收回客户权限
    • revoke select on db1.emp from 'ray'@'%';
    • revoke all on db1.* from 'ray'@'%';
  • 删除用户
    • drop user 'ray'@'%';

您也可以在可视化工具的窗口里面寻找User and Privileges进行操作。
在这里插入图片描述

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

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

相关文章

DPLVO

在这篇论文核心: 实现了dso的点线优化框架实现了线特征的参数最小化 点的投影与线的投影 点在相机中是一个射线的投影,线其实是一个平面的投影。在vins等系统中采用逆深度对点特征进行表达,三维点只需要一维度的表达就可以了,大…

从VMware Workstation的虚拟机导入到esxi主机中

从VMware Workstation的虚拟机导入到esxi主机中 是从VMware Workstation中的虚拟机导入部署到ESXI主机中使用,使用真实环境导出和部署的过程,我为了帮助到有些初学者仅供参考,我做了知识共享。 1、打开VMware Workstation中的一个虚拟机&…

下半场开哨!AIGC+智能汽车,谁在引领市场新风口

“智能汽车已经成为AIGC应用的下一个‘重地’。” 中科创达副总裁、畅行智驾CEO屠科在8月22日于南京举办的《软件赋能汽车智能化转型发展高峰论坛》上发表演讲时表示:在AIGC时代,汽车的“智能属性”将加速释放,智能驾驶也将迎来快速发展。 中…

Windows 基础结构密码管理

在大多数 IT 环境中,Windows 服务器和系统是基础结构的重要组成部分。本地、域和服务帐户构成了对 Windows 基础结构的核心访问,因此,对于任何组织来说,破坏这些特权帐户中的任何一个都是最糟糕的情况: 本地管理员帐户…

在线翻译插件

今天找到一个浏览器在线插件,支持翻译本地PDF文档。 链接 支持各种浏览器,这里以Chrome为例。下载安装完扩展程序之后,如下操作: 选择需要翻译的PDF就OK了

基于Java+SpringBoot+vue前后端分离英语知识应用网站设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

OAuth2.0 客户端实战

上一次课程,我们了解了 OAuth 认证是怎么回事,以及了解了四种认证方式,今天我们将以 Github 为例,了解一下如何用 Flask 第三方应用 在之前的介绍 JWT 的时候,了解过 Authlib 库,Authlib 是集 JWT、OAuth1…

使用 eBPF 在云中实现网络可观测性

可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法。随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注。许多应用程序都有严格的承诺,比如在停机时间、延迟和吞…

战略企业家派:企业家愿景形成的过程

战略企业家派:战略的是企业家愿景形成的过程【安志强趣讲267期】 趣讲大白话:企业家才是关键因素 **************************** 战略企业家派的代表是熊彼特 他认为企业家的职责在创新 只有创新才能赢得更多利润 创新是新产品或新生产方式的各种组合 提…

学习心得04:CUDA

2018年的时候,看过同事使用CUDA。因为工作忙,所以也没请教。 近来买了本入门的CUDA书,学习了一番。有两个心得: 工作拆分。 CUDA是并行计算,也就是大量重复的可拆分的计算。数组最符合这个要求。简单点就是把数组外面…

接口多态 面试题及习题

基础题目 第一题:概念辨析 什么是接口,如何定义接口? 接口,是Java语言中一种引用类型,是方法的集合。使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法&#xf…

实例044 在关闭窗口前加入确认对话框

实例说明 用户对程序进行操作时,难免会有错误操作的情况,例如不小心关闭程序,如果尚有许多资料没有保存,那么损失将非常严重,所以最好使程序具有灵活的交互性。人机交互过程一般都是通过对话框来实现的,对话…

基于SpringBoot母婴商城系统【附开题|万字文档(LW)和搭建文档】

主要功能 前台界面: ①首页、商品信息推荐、商品资讯展示、查看更多等 ②商品信息、商品名称、标签、品牌等 ③添加购物车、立即购买、点我收藏、评论等 ④个人中心、我的订单、我的地址、我的收藏、支付等 后台登录: ①首页、个人中心:修改…

ElasticSearch-集成ik分词器

本文已收录于专栏 《中间件合集》 目录 背景介绍版本选择优势说明集成过程1.下载安装包2.解压安装包3.重启ElasticSearch服务3.1通过ps -ef | grep elastic查看正在启动的es进程号3.2使用kill -9 xxx 杀死进程3.3使用 ./elasticsearch 启动es服务 分词测试细粒度分词方式分词请…

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作,一般是同步不同网站的同个仓库,比如说gitee 和github。某个网站更新了,你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库,把B仓库分支&am…

字节8年经验之谈 —— 如何设计一个自动化测试平台?

之前写过很多自动化测试相关的文章,后台有同学留言:希望写一篇自动化测试平台的文章。他的原话是这样:目前市场上开源或者商业的自动化测试平台很多,但试用下来总感觉有些地方不太融洽,想自己落地一个适合自己团队和项…

LC-1448. 统计二叉树中好节点的数目(DFS、)

1448. 统计二叉树中好节点的数目 中等 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,…

Python案例|Matplotlib库实现的数据分析

数据展示是数据分析和挖掘中的重要环节,通过图形的形式可以直观、清晰地呈现数据内在的规律。 本文所用数据采用上一篇案例实现后的数据表,数据存储在newbj_lianJia.csv文件中,具体代码如下。 import pandas as pd #导入库 import matplot…

论文阅读_图形图像_U-NET

name_en: U-Net: Convolutional Networks for Biomedical Image Segmentation name_ch: U-Net:用于生物医学图像分割的卷积网络 addr: http://link.springer.com/10.1007/978-3-319-24574-4_28 doi: 10.1007/978-3-319-24574-4_28 date_read: 2023-02-08 date_publi…

基于“R语言+遥感“水环境综合评价方法教程

详情点击链接:基于"R语言遥感"水环境综合评价方法教程 一:R语言 1.1 R语言特点(R语言) 1.2 安装R(R语言) 1.3 安装RStudio(R语言) (1)下载地址…