20 MySQL(下)

文章目录

  • 视图
    • 视图是什么
    • 定义视图
    • 查看视图
    • 删除视图
    • 视图的作用
  • 事务
    • 事务的使用
  • 索引
    • 查询索引
    • 创建索引
    • 删除索引
    • 聚集索引和非聚集索引
    • 影响
  • 账户管理(了解非DBA)
    • 授予权限 与 账户的相关操作
  • MySQL的主从配置

视图

视图是什么

通俗的讲,视图就是一条 SELECT 语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条 SQL 查询语句上。

视图是对若干张基本表的引用,一张虚表(也是一张表,不过是一张特殊的表),查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);方便操作,特别是查询操作,减少复杂的 SQL

还有就是采用视图之后,可以做到让后端程序员无法进行修改相关数据,只能进行查询,就是有一个安全性的考量,并且代码写的也不会那么复杂。

定义视图

create view 视图名称 as select 语句;

给个例子:

create view goods_view as (select goods.id as id,goods.name as name,goods_cates.name as type from goods left join goods_cates on goods_cates.id=goods.cate_id)

查看视图

select * from 视图名

删除视图

drop view 视图名称

视图的作用

  1. 提高了重用性,就像一个函数
  2. 对数据库重构,却不影响程序的运行
  3. 提高了安全性能,可以对不同的用户
  4. 让数据更加清晰

事务

事务广泛的运用于订单系统、银行系统等多种场景
例如:
A 用户和 B 用户是银行的储户,现在 A 要给 B 转账 500 元,那么需要做以下几件事:

  1. 检查 A 的账户余额>500 元;
  2. A 账户中扣除 500 元;
  3. B 账户中增加 500 元;

正常的流程走下来,A 账户扣了 500,B 账户加了 500,皆大欢喜。

那如果 A 账户扣了钱之后,系统出故障了呢?A 白白损失了 500,而 B 也没有收到本该属于他的 500。

以上的案例中,隐藏着一个前提条件:A 扣钱和 B 加钱,要么同时成功,要么同时失败。事务的需求就在于此,所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性

所以就引入了事务

事务的使用

开启事务,命令如下(开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中)
begin;  或者   start transaction;提交事务,命令如下(将缓存中的数据变更维护到物理表中)
commit;回滚事务,命令如下( 放弃缓存中变更的数据)
rollback;

例子:

# 开启事务
begin;
# 查询people1是否有500元
select money from bank where name='people1';
# people1转300元
update bank set money=money-300 where name='people1'
# people2收到300元
update bank set money=money+300 where name='people2'执行结束后,进行查询数据库,这些数据是否都是正确的,正确的就可以:
commit;如果是错误的:
rollback;

关于事务主要应用于高并发的情况下,有时候某线程会突然死掉,这种情况下就需要使用这种方式,还有就是在没有commit的时候,你新建查询,去查询你操作的表,你的所有操作都是没有执行的,而在本张查询中(使用了begin的),你会发现你的查询和你的操作相关,减了就是减了(但实际上没减)

索引

当数据库中数据量很大时,查找数据会变得很慢,优化方案:索引----就是数据结构(有序),B+树索引(一般都是B+),哈希索引

查询索引

show index from 表名;
在这里插入图片描述

创建索引

create index 索引名称 on 表名(字段名称(长度))

如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致

创建索引
create index name1 on goods(name(255));创建唯一索引,代表的就是这个索引所对应的那个东西必须是唯一的,比如这边就是price再表中必须是唯一的
create unique index price1 on goods(price);创建联合索引 实际上就是我们查询的时候不是where 可能条件经常有 where  and 两种条件相结合的情况,这种情况下就需要联合索引create index name2 on goods(name(255),price);

删除索引

drop index 索引名称 on 表名;

聚集索引和非聚集索引

聚集索引实际上就是在sql进行索引存储的时候,他会把数据(data)也存到和索引一起的位置,而非聚集索引就是数据(data)存储的仅仅是表明是这个数据的标记,然后会再通过这个标记去寻找对应的数据

所以说一张表实际上对应的就只有一个聚集索引,也绝大多数都是利用主键进行索引区分,然后再MySQL中,其他新建的索引也就是非聚集索引下存储的数据都是对应的id,然后再通过id再去寻找对应的数据。

影响

  1. 提高删除 查询 修改的速度。
  2. 减少新增的速度,因为新增的时候需要多经过索引,然后再插入数据。

账户管理(了解非DBA)

  1. 在生产环境下操作数据库时,绝对不可以使用 root 账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的 crud
  2. MySQL 账户体系:根据账户所具有的权限的不同,MySQL 的账户可以分为以下几种:
账户说明
服务实例级账号启动了一个 mysqld,即为一个数据库实例;如果某用户如 root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表
数据库级别账号对特定数据库执行增删改查的所有操作
数据表级别账号对特定表执行增删改查等所有操作
字段级别的权限对某些表的特定字段进行操作
存储程序级别的账号对存储程序进行增删改查的操作
  1. 账户的操作主要包括创建账户、删除账户、修改密码、授权权限等
  2. 进行账户操作时,需要使用 root 账户登录,这个账户拥有最高的实例级权限
  3. 通常都使用数据库级操作权限

授予权限 与 账户的相关操作

参考连接
笔者这边数据库出现问题,没实操过,所以没总结OxO 尴尬

MySQL的主从配置

相关链接

实际上所做的事情就是读写分离,比如一台机器专门用来读数据,一台机器专门用来写数据,然后读数据的机器所作的事情实际上是隔一段时间,去写机器那边进行到处bin.log,也就是二进制文件(sql底层引擎使用的东西),然后进行同步数据库。

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

  1. 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  2. 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  3. 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

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

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

相关文章

Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)

一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式,将前端和后端的开发工作结合在一起,以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中,前端和…

CATIA Composer R2023安装教程

软件下载 软件:CATIA Composer版本:2023语言:简体中文大小:1.82G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.60GHz 内存8G(或更高)下载通道①百度网盘丨64位下载链接:https://pa…

汇编-内中断

中断的意思是指, CPU不再接着(刚执行完的指令) 向下执行, 而是转去处理这个特殊信息。 内中断的产生 8086CPU,当CPU内部有下面的情况发生的时候, 将产生相应的中断信息: (1)除法错误, 比如, 执行div指令产生的除法溢出; (2)单步执行;   (3)执行into指令; (4)执…

文件上传漏洞-upload靶场3-4(全网最详细解读)

文件上传漏洞-upload靶场3-4关通关笔记(全网最详细解读) upload 第三关(特殊后缀) 思路 按照第一关和第二关的思路,先随便上传一个文件用burpsuite工具抓包,看它到底是前段验证还是后端验证。 上传一个we…

社招中级前端笔试面试题总结

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 typeof null 的结果是什么,为什么? typeof null 的结果是Object。 在 JavaScript 第一个版本中,所有值都存储在 32…

网络编程 day 3

1、UDP下载 #include<myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define SER_PORT 8888 //端口号&#xff0c;范围1024~49151 #define SET_IP "192.168.114.85" //本机…

javaee spring 静态代理

静态代理 package com.test.staticProxy;public interface IUsersService {public void insert(); }package com.test.staticProxy;//目标类 public class UsersService implements IUsersService {Overridepublic void insert() {System.out.println("添加用户");…

全网首发,人体姿态估计算法在OK3588上部署应用(十三)

一、主机模型转换 采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 主机环境搭建可以参考上一篇 《OK3588板卡实现人像抠图&#xff08;十二&#xff09;》 生成onnx文件 cd FastDeploy # 下载Paddle静态图模型并解压…

Vision Transformer(vit)原理分析以及特征可视化

目录 Vit简介 Vit model结构图 vit输入处理 图像分块 class token与position的添加 特征提取 vit代码 Vit简介 Vision Transformer&#xff08;ViT&#xff09;是一种基于Transformer架构的深度学习模型&#xff0c;用于图像识别和计算机视觉任务。与传统的卷积神经网络…

WebGL模型矩阵

前言&#xff1a;依赖矩阵库 WebGL矩阵变换库_山楂树の的博客-CSDN博客 先平移&#xff0c;后旋转的模型变换&#xff1a; 1.将三角形沿着X轴平移一段距离。 2.在此基础上&#xff0c;旋转三角形。 先写下第1条&#xff08;平移操作&#xff09;中的坐标方程式。 等式1&am…

如何将 PDF 转换为 Word:前 5 个应用程序

必须将 PDF 转换为 Word 才能对其进行编辑和自定义。所以这里有 5 种很棒的方法 PDF 文件被广泛使用&#xff0c;因为它非常稳定且难以更改。这在处理法律合同、财务文件和推荐信等重要文件时尤其重要。但是&#xff0c;有时您可能需要编辑 PDF 文件。最好的方法是使用应用程序…

openGauss学习笔记-54 openGauss 高级特性-MOT

文章目录 openGauss学习笔记-54 openGauss 高级特性-MOT54.1 MOT特性及价值54.2 MOT关键技术54.3 MOT应用场景54.4 不支持的数据类型54.5 使用MOT54.6 将磁盘表转换为MOT openGauss学习笔记-54 openGauss 高级特性-MOT openGauss引入了MOT&#xff08;Memory-Optimized Table&…

读书笔记——《万物有灵》

前言 上一本书是《走出荒野》&#xff0c;太平洋步道女王提到了这本书《万物有灵》&#xff0c;她同样是看一点撕一点的阅读。我想&#xff0c;在她穿越山河森林&#xff0c;听见鸟鸣溪流的旅行过程中&#xff0c;是不是看这本描写动物有如何聪明的书——《万物有灵》&#xf…

vue中解决ajax跨域问题(no “access-control-allow-origin”)

文章目录 跨域报错信息产生原因举例解决方法方式一优缺点方式二优缺点 跨域报错信息 产生原因 跨域是是因为浏览器的同源策略限制&#xff0c;是浏览器的一种安全机制&#xff0c;服务端之间是不存在跨域的。 所谓同源指的是两个页面具有相同的协议、主机和端口&#xff0c;三…

R语言空气污染数据的地理空间可视化和分析:颗粒物2.5(PM2.5)和空气质量指数(AQI)...

原文链接&#xff1a;http://tecdat.cn/?p23800 由于空气污染对公众健康的不利影响&#xff0c;人们一直非常关注。世界各国的环境部门都通过各种方法&#xff08;例如地面观测网络&#xff09;来监测和评估空气污染问题&#xff08;点击文末“阅读原文”获取完整代码数据&…

可拖动表格

支持行拖动&#xff0c;列拖动 插件&#xff1a;sortablejs UI: elementUI <template><div><hr style"margin: 30px 0;"><div><!-- 数据里面要有主键id&#xff0c; 否则拖拽异常 --><h2 style"margin-bottom: 30px&qu…

打开谷歌浏览器远程调试功能

谷歌浏览器远程调试功能 首先我们来启动Chrome的远程调试端口。你需要找到Chrome的安装位置&#xff0c;在Chrome的地址栏输入chrome://version就能找到Chrome的安装路径 开启远程控制命令 文件路径/chrome.exe --remote-debugging-port9222开启后的样子(注意要关闭其他谷歌浏…

Qt快捷键

#include //注意&#xff0c;头文件一定要添加 QT提供了一个很有用的调试方式&#xff1a;断点调试。这使用户可以轻易地看到自己某个部分的调试结果。下面是使用方法&#xff1a; 按下F5或者左侧的在这里插入图片描述进入调试模式&#xff0c;然后在代码的左侧设置断点 一:断…

MFC网络编程简单例程

目录 一、关于网络的部分概念1 URL(网址)及URL的解析2 URL的解析3 域名及域名解析3 IP及子网掩码4 什么是Web服务器5 HTTP的基本概念6 Socket库概念7 协议栈8 Socket库收发数据基本步骤 二、基于TCP的网络应用程序三、基于UDP的网络应用程序 一、关于网络的部分概念 1 URL(网址…

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法播放HLS协议该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…