MySQL-10. 存储引擎、视图、mysql管理

10.1 存储引擎

        存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
  • 存储引擎(Storage Engines)主要包括MyISAM、innoDB、Memory等。
  • MySQL的表类型由存储引擎决定。
  • MySQL 数据表主要支持六种类型:CSV、Memory、ARCHIVE、MRG MYISAM、MYISAM、InnoBDB。根据是否支持事务,将六种类型分为两大类:”事务安全型”(transaction-safe),比如:InnoDB;其余都属于第二类,称为”非事务安全型”(non-transaction-safe)[mysiam 和memory]。
  1. MyISAM:mysql最早提供。不支持事务和外键,但其访问速度快,对事务完整性没有要求,支持表级锁
  2. MyISAM Merge:将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。
  3. InnoDB:提供了具有提交、回滚和崩溃恢复能力的事务安全。支持事务、外键和行级锁。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。也是目前MySQL默认的存储引擎。
  4. Memory(heap):使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常快(没有IO读写),因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦MySQL服务关闭,表中的数据就会丢失掉,表的结构还在,对临时表有用。
  5. archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

# 查看所有存储引擎
SHOW ENGINES;
# 修改存储引擎
ALTER TABLE 表名 ENGINE=存储引擎;-- innodb 存储引擎,是前面使用过. 
-- 1. 支持事务 2. 支持外键 3. 支持行级锁-- myisam 存储引擎
-- 1. 添加速度快 2. 不支持外键和事务 3. 支持表级锁
CREATE TABLE t28 (id INT, `name` VARCHAR(32)) ENGINE MYISAM;-- memory 存储引擎
-- 1. 数据存储在内存中[关闭了 Mysql 服务,数据丢失, 但是表结构还在]
-- 2. 执行速度很快(没有 IO 读写) 3. 默认支持索引(hash 表)
CREATE TABLE t29 (id INT, `name` VARCHAR(32)) ENGINE MEMORY;

存储引擎的选择:

  • 如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择,速度快。
  • 如果需要支持事务,选择InnoDB
  • Memory 存储引擎就是将数据存储在内存中,由于没有磁盘I/O的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。(经典用法:用户的在线状态) 

10.2 视图

1. 需求:

表的列信息很多,有些是重要信息,如果我们希望某个用户只能査询部分列信息(不重要),有什么办法?=>视图。即让用户查的其实是包含部分列信息的视图,而不是原始的表。

2. 视图概念:

  • 视图是一个虚拟表,其内容由查询定义,有基表创建(基表可以有多个)。
  • 同真实的表一样,视图包含列,其数据来自对应的真实表(基表)。
  • 通过视图可以修改基表数据,修改基表数据也会改变视图。
  • 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式: 视图名.frm),而没有数据文件。
  • 视图中可以再使用视图,数据仍然来自于基表。

3. 视图的使用:

# 创建视图
create view 视图名 as select 语句
CREATE VIEW emp_view01ASSELECT empno, ename, job, deptno FROM emp;# 更新成新的视图
alter view 视图名 as select 语句 # 查看创建视图的指令
SHOW CREATE VIEW 视图名# 删除视图
drop view 视图名1,视图名2;
# 对emp、dept、salgrade三张表.创建一个视图
# 显示雇员编号,雇员名,雇员部门名称和薪水级别
CREATE VIEW emp_view03ASSELECT empno, ename, dname, gradeFROM emp, dept, salgradeWHERE emp.deptno = dept.deptno AND (sal BETWEEN losal AND hisal)

10.3 mysql用户管理

1. Mysql用户

mysql中的用户,都存储在系统数据库mysql中 user 表中。
不同的数据库用户,登录到DBMS,根据相应的权限,可以操作的数据库和数据对象不相同。
可以通过授权和回收使不同用户操作其他用户的数据库。
其中user表的重要字段说明:
host: 允许登录的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.100
user:用户名
authentication_string:密码,是通过mysql的password()函数加密之后的密码。
# 创建用户,同时指定密码
create user '用户名’@’允许登录位置’ identified by '密码';
-- 创建用户 shunping 密码 123 , 从本地登录
CREATE USER 'shunping'@'localhost' IDENTIFIED BY '123'# 删除用户
drop user '用户名’@'允许登录位置';# 用户修改密码
# 修改自己的密码:
set password = password('密码');
# 修改他人的密码(需要有修改用户密码权限)
set password for'用户名'@'登录位置’ = password('密码');
-- 修改 shunping 的密码为 abc
SET PASSWORD FOR 'shunping'@'localhost' = PASSWORD('abc');
在创建用户的时候,如果不指定@’允许登录位置’, 则为% , %表示所有 IP 都有连接权限
-- create user xxx;
CREATE USER jack
也可以这样指定IP段
-- create user 'xxx'@'192.168.1.%' 表示 xxx 用户在 192.168.1.*的 ip 可以登录 mysql
CREATE USER 'smith'@'192.168.1.%;
在删除用户的时候,如果 host 不是 %, 需要明确指定 '用户'@'host 值'
DROP USER jack -- 默认就是 DROP USER 'jack'@'%' 
DROP USER 'smith'@'192.168.1.%

 2. mysql中的权限管理:授权和回收

权限列表:

2.1 授权

# 给用户授权
grant 权限列表 on 库.对象名 to '用户名’@’登录位置';
grant 权限列表 on 库.对象名 to '用户名’@’登录位置' identified by '密码';-- 给 shunping 分配查看 news 表和 添加 news 的权限
GRANT SELECT , INSERTON testdb.newsTO 'shunping'@'localhost'
  • 权限列表,多个权限用逗号分开
  • 库.对象名如果写成:
         (1) *.*:代表本系统中的所有数据库的所有对象(表,视图,存储过程)
        (2) 库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可以省略,也可以写出:
        (1) 如果用户存在,授权的同时修改该用户的密码
        (2) 如果该用户不存在,创建该用户同时授权

2.2 回收用户授权

revoke 权限列表 on 库.对象名 from'用户名"@"登录位置';

2.3 权限生效指令

 如果权限没有生效执行:
FLUSH PRIVILEGES;

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

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

相关文章

【MySQL】C# 连接MySQL

C# 连接MySQL 1. 添加MySQL引用 安装完MySQL之后,在安装的默认目录 C:\Program Files (x86)\MySQL\Connector NET 8.0 中查找MySQLData.dll文件。 在Visual Studio 中为项目中添加引用。 2. 引入命名空间 using MySql.Data.MySqlClient;3. 构建连接 private …

【深度学习】pytorch计算KL散度、kl_div

使用pytorch进行KL散度计算,可以使用pytorch的kl_div函数 假设y为真实分布,x为预测分布。 import torch import torch.nn.functional as F# 定义两组数据 tensor1 torch.tensor([[0.1, 0.2, 0.3, 0.2, 0.2],[0.2, 0.1, 0.2, 0.3, 0.2],[0.2, 0.3, 0.1…

SpringBoot使用Zxing生成二维码

SpringBoot使用Zxing生成二维码 什么是Zxing具体实现1. 在pom文件中导入依赖2. 二维码生成工具类3. 控制层和服务层4. 前端 总结参考 什么是Zxing ZXing,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(…

spring boot admin搭建,监控springboot程序运行状况

新建一个spring boot web项目&#xff0c;添加以下依赖 <dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.3.0</version></dependency> <dependency&…

微信小程序自定义tabbar,页面切换存在闪动【解决方案】

需求&#xff1a; 自定义tabbar&#xff0c;在需要的几个主页面都加入这么一个组件&#xff0c;但是有个情况&#xff1b;而组件中使用照片&#xff08;svg或png&#xff09;和文字;在切换tabbar的时候&#xff0c;跳转相应的页面&#xff0c;运行到真机或是模拟器&#xff0c;…

Docker搭建Nginx+keepalived高可用负载均衡服务器

一、背景 1.nginx高可用 在生产环境下&#xff0c;Nginx作为流量的入口&#xff0c;如果Nginx不能正常工作或服务器宕机&#xff0c;将导致整个微服务架构的不可用。所以负责负载均衡、反向代理的服务&#xff08;Nginx&#xff09;为了提高处理性能&#xff0c;高可用&#…

python-pytorch NLP中处理中文的步骤0.5.002

python-pytorch NLP中处理中文的步骤0.5.001 1. 导入包2. 准备停用词3. 把需要处理的文本切词4. 将切的词放入list中5. 获取vocab、vocab_size6. 获取word_to_idx、idx_to_word7. 告一段落8. 其他&#xff08;1800的停用词&#xff09; 1. 导入包 import jieba import torch i…

Go —— channel (二)

一个空的 channel 会产生哪些问题 读写nil管道均会阻塞触发死锁。关闭的管道仍然可以读取数据&#xff0c;向关闭的管道写数据会触发panic。 问&#xff1a;如果有多个协程同时读取一个channel&#xff0c;channel会如何选择消费者 channel 会按照维护的 recvq 等待读消息的…

239. 奇偶游戏(带权值并查集,邻域并查集,《算法竞赛进阶指南》)

239. 奇偶游戏 - AcWing题库 小 A 和小 B 在玩一个游戏。 首先&#xff0c;小 A 写了一个由 0 和 1 组成的序列 S&#xff0c;长度为 N。 然后&#xff0c;小 B 向小 A 提出了 M 个问题。 在每个问题中&#xff0c;小 B 指定两个数 l 和 r&#xff0c;小 A 回答 S[l∼r] 中…

苍穹外卖11(Apache ECharts前端统计,营业额统计,用户统计,订单统计,销量排名Top10)

目录 一、Apache ECharts【前端】 1. 介绍 2. 入门案例 二、营业额统计 1. 需求分析和设计 1 产品原型 2 业务规则 3 接口设计 2. 代码开发 3. 功能测试 三、用户统计 1. 需求分析和设计 1 产品原型 2 业务规则 3 接口设计 2. 代码开发 3. 功能测试 四、订单统…

0.开篇:SSM+Spring Boot导学

1. 为什么要使用框架 Spring是一个轻量级Java开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。 几乎当下所有企业级JavaEE开发都离不开SSM&#xff08;Spring SpringMVC MyBatis&#xff09;Spring B…

什么是企业邮箱?如何选择合适的企业邮箱?

企业邮箱和个人邮箱不同&#xff0c;它的邮箱后缀是企业自己的域名。企业邮箱供应商一般都提供手机app、桌面端、web浏览器访问等邮箱使用途径。那么什么是企业邮箱&#xff1f;如何选择合适的企业邮箱&#xff1f;好用的企业邮箱应具备无缝迁移、协作、多邮箱管理等功能。 企…

【hive】单节点搭建hadoop和hive

一、背景 需要使用hive远程debug&#xff0c;尝试使用无hadoop部署hive方式一直失败&#xff0c;无果&#xff0c;还是使用有hadoop方式。最终查看linux内存占用6GB&#xff0c;还在后台运行docker的mysql(bitnami/mysql:8.0)&#xff0c;基本满意。 版本选择&#xff1a; &a…

全面深入学习Java中的字符串类

二、字符串类 &#xff08;一&#xff09;String String&#xff1a;字符串 concat() --- 在末尾追加字符串&#xff0c;返回新的字符串 substring(int begindex) --- 从指定下标处截取到字符串末尾&#xff0c;并返回新的字符串 substring(int begindex,endindex) --- 从开始…

OceanBase 中一个关于 NOT IN 子查询的 SQL 优化案例

通过一个案例了解 not in 对 NULL 值敏感的处理逻辑和优化方法。 作者&#xff1a;胡呈清&#xff0c;爱可生 DBA 团队成员&#xff0c;擅长故障分析、性能优化&#xff0c;个人博客&#xff1a;[简书 | 轻松的鱼]&#xff0c;欢迎讨论。 爱可生开源社区出品&#xff0c;原创内…

Linux中账号登陆报错access denied

“Access denied” 是一个权限拒绝的错误提示&#xff0c;意味着用户无法获得所请求资源的访问权限。出现 “Access denied” 错误的原因可以有多种可能性&#xff0c;包括以下几种常见原因&#xff1a; 错误的用户名或密码&#xff1a;输入的用户名或密码不正确&#xff0c;导…

机器学习—1.快速入门

机器学习步骤 确定与问题相关的输入&#xff08;明确输入&#xff09;收集与问题相关的数据&#xff08;数据准备&#xff0c;学&#xff09;分析预测结果的类型&#xff08;分类&#xff1f;回归&#xff1f;是判断题还是应用题&#xff09;根据预测记过的类型&#xff0c;选…

http添加SSL证书后打开变成另外一个网站是怎么回事

当在使用http的网站上添加了SSL证书后&#xff0c;如果打开该网站时出现了另外一个网站&#xff0c;可能是由以下几种情况引起的&#xff1a; 错误的证书配置 证书配置可能存在错误&#xff0c;导致SSL连接时服务器返回了错误的证书&#xff0c;或者证书与网站域名不匹配。这…

MySQL-系统及自定义变量

详情系统变量信息参考MySQL官方文档 系统变量分类&#xff1a; 全局系统变量&#xff08;global&#xff09; 全局系统变量针对于所有会话&#xff08;连接&#xff09;有效&#xff0c;但 不能跨重启 会话系统变量&#xff08;session&#xff09; 仅针对当前连接有效&am…

STM32-模数转化器

ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换 为离散的数字信号的器件。 ADC相关参数说明&#xff1a; 分辨率&#xff1a; 分辨率以二进制&#xff08;或十进制&#xff09;数的位数来表示&#xff0c;一般有 8 位、10 位、12 位、16 位…