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.rhkb.cn/news/111071.html

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

相关文章

电子仓库预测水浸事件,他怎么做到的?

仓库环境中水浸事件可能导致严重的损失,不仅对货物造成损害,还可能影响设备的正常运行甚至威胁安全。 因此,为了应对这一挑战,引入一套完善的仓库水浸监控系统成为了不可或缺的措施。 客户案例 广东某电子公司是一家领先的电子设…

加油站【贪心算法】

加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和…

uni.uploadFile上传 PHP接收不到

开始这样,后端$file $request->file(file);接收不到 数据跑到param中去了 去掉Content-Type,就能接收到了 param只剩下

openGauss学习笔记-49 openGauss 高级特性-索引推荐

文章目录 openGauss学习笔记-49 openGauss 高级特性-索引推荐49.1 单query索引推荐49.2 虚拟索引49.3 workload级别索引推荐 openGauss学习笔记-49 openGauss 高级特性-索引推荐 openGauss的索引推荐的功能,共包含三个子功能:单query索引推荐、虚拟索引…

.NET Core 实现日志打印输出在控制台应用程序中

在本文中,我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台,从而更好地了解应用程序的运行状况。 .NET Core 实现日志打印输出在控制台应用程序中 在 .NET Core 中,日志输出打印是使用 Microsoft.Extensions.Logging 命名空间…

phpspreadsheet导出excel自动获得列,数字下标

安装composer require phpoffice/phpspreadsheetuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Border;$spreadsheet new Spreadsheet(); $sheet $spreadsheet->getActiveSheet();//从65开&a…

谷歌浏览器调试技巧

一、概述 记录谷歌浏览器实用的调试技巧。 二、详解 技巧1:打开F12调试工具的前提下按下Ctrl Shift P 如下图所示,按下组合键,可打开命令面板。 技巧2:调试工具的Element面板下,按照Alt 鼠标左键可以将目标节点全部…

redis应用 2:延时队列

我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加异步消息传递功能。这两个中间件都是专业的消息队列中间件,特性之多超出了大多数人的理解能力。 使用过 Rabbitmq 的同学知道它使用起来有多复杂,发消息之前要…

【网络】多路转接——五种IO模型 | select

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 五种IO模型 | select 🍧五种IO模型🍧select🧁认识接口&#x1f9c1…

网工内推 | IT网工,华为、华三认证优先,15k*13薪

01 广东善能科技发展股份有限公司 招聘岗位:IT网络工程师 职责描述: 1、负责公司项目售后技术支持工作; 2、负责项目交付实施,配置调试、运维等; 3、参加合作厂商产品技术知识培训; 4、参加合作厂商工程师…

flink on yarn with kerberos 边缘提交

flink on yarn 带kerberos 远程提交 实现 flink kerberos 配置 先使用ugi进行一次认证正常提交 import com.google.common.io.Files; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.flink.client.cli.CliFrontend; import o…

大数据(四)主流大数据技术

大数据(四)主流大数据技术 一、写在前面的话 To 那些被折磨打击的好女孩(好男孩): 有些事情我们无法选择,也无法逃避伤害。 但请你在任何时候都记住: 你可能在一些人面前,一文不值&a…

nacos服务器启动报错集合

报错1 Error creating bean with name ‘user‘: Unsatisfied dependency expressed through field ‘jwtTokenManage 开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为: ### Since 1.4.1, worked when…

git版本管理加合并笔记

目录 1.创建空文件夹,右键Bash here打开 2.打开链接,点击克隆下载,复制SSH链接 3.输入git SSH链接 回车 4.换成https在桌面上进行克隆仓库就正常了 5.去vscode里改东西 6.提交 7.创建dev分支 8.在dev里修改内容,提交&…

自动化测试(三):接口自动化pytest测试框架

文章目录 1. 接口自动化的实现2. 知识要点及实践2.1 requests.post传递的参数本质2.2 pytest单元测试框架2.2.1 pytest框架简介2.2.2 pytest装饰器2.2.3 断言、allure测试报告2.2.4 接口关联、封装改进YAML动态传参(热加载) 2.3 pytest接口封装&#xff…

screen命令,可以断开服务器连接,依旧能运行你的程序了

可以参考博客1:https://blog.csdn.net/nima_zhang_b/article/details/82797928 可以参考博客2:https://blog.csdn.net/herocheney/article/details/130984403 Linux中的screen是一个命令行工具,可以让用户在同一个终端会话中创建多个虚拟终端。它非常有…

顺序表链表OJ题(3)——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 前言: 今天是链表顺序表OJ练习题最后一次分享,每一次的分享题目的难度也再有所提高,但是我相信大家都是非常机智的,希望看到博主文章能学到东西的可以一键三连关注一下博主…

C语言之数组题

目录 1.使用函数实现数组操作 2.冒泡排序 3.三子棋 4.【一维数组】交换数组 5.扫雷 6.概念辨析tips 我又来了,今天是数组题,本人还在补军训真的热!🆗 1.使用函数实现数组操作 2.冒泡排序 3.三子棋 4.【一维数组】交换数组 …

首席执行官Adam Selipsky解读“亚马逊云科技的技术产品差异化”

迄今为止,亚马逊云科技已经参与了21世纪几乎所有的大型计算变革,亚马逊云科技是一个很传奇的故事,它始于大约20年前的一项实验,当时亚马逊试图出售其过剩的服务器。人们确实对此表示怀疑。为什么在线书店试图销售云服务&#xff1…

RBAC实现授权

RBAC分为两种方式: 基于角色的访问控制(Role-Based Access Control) 基于资源的访问控制(Resource-Based Access Control) 角色的访问控制(Role-Based Access Control)是按角色进行授权&…