MySQL之四大引擎、账号管理以及建库

目录

一.数据库存储引擎

① MEMORY

 ②MyISAM

 ③InnoDB

 ④ARCHIVE

二.数据库管理

2.1.三大数据库 

2.1.1.information_schema

2.1.2.mysql

2.1.3.performance_schema

2.2.相关操作

2.3.权限相关的表

三. 数据库的表管理

3.1.三大范式

3.2.基本数据类型

四.账号管理

查询用户 :

查看用户常用信息:

删除用户(慎用):

权限操作

五.思维导图


一.数据库存储引擎

查看存储引擎命令:SHOW ENGINES

DEFAULT: 为默认的引擎

YES: 表示可以使用

NO: 表示不能使用

① MEMORY

MEMORY是 MySQL 数据库中的一种存储引擎,它将表的数据存储在内存中而不是磁盘上。也称为 HEAP 存储引擎,因为在创建表时可以使用 语句来指定。ENGINE=MEMORY

以下是一些 存储引擎的特点和限制:MEMORY

特点:

  1. 快速访问: 数据存储在内存中,因此读取和写入速度较快。
  2. 表锁: 存储引擎使用表级锁,而不是行级锁,这可能会影响并发性能。MEMORY
  3. 易于配置: 不需要复杂的配置,可以很容易地在内存中创建表。

限制:

  1. 数据丢失: 因为数据存储在内存中,数据库重启或服务器关闭会导致数据丢失。
  2. 表大小限制: 存储引擎对表的大小有限制,因为它受系统的可用内存和配置参数的限制。MEMORY
  3. 不支持事务: 不支持事务处理,这意味着不能使用 或 操作。COMMITROLLBACK

请注意,尽管 存储引擎对于某些特定的使用场景非常有用,但由于其限制,它并不适用于所有情况。在选择存储引擎时,需要考虑到应用程序的需求、数据量、并发性能等因素。MEMORY

 ②MyISAM

MyISAM 是 MySQL 数据库中一种常见的存储引擎,它在很长一段时间内是 MySQL 默认的存储引擎,但从 MySQL 5.5 版本开始,InnoDB 取代了 MyISAM 成为默认存储引擎。尽管如此,MyISAM 仍然在某些场景中有其用武之地。

以下是 MyISAM 存储引擎的一些特点和注意事项:

特点:

  1. 表级锁:MyISAM 使用表级锁,而不是行级锁。这可能导致在高并发写入的情况下性能下降。

  2. 支持全文索引:MyISAM 存储引擎支持全文本搜索,这使得它在特定的搜索应用中很有用。

  3. 不支持事务:MyISAM 不支持事务处理,这意味着不能使用 或 操作。COMMITROLLBACK

  4. 表压缩:MyISAM 支持表级别的压缩,可以减小存储空间。

  5. 缓存:MyISAM 使用系统文件缓存来缓存索引和数据。

  6. 易于备份: 由于表级锁的使用,MyISAM 在备份时相对容易处理。

注意事项:

  1. 不支持事务: 如果你的应用程序需要事务支持,应该考虑使用 InnoDB 等支持事务的存储引擎。

  2. 不适合高并发写入: 由于表级锁的使用,MyISAM 在高并发写入的情况下性能可能不如 InnoDB。

请注意,虽然 MyISAM 有其用途,但在现代应用中,特别是需要事务支持或高并发性能的应用中,InnoDB 存储引擎更为常见。选择存储引擎应该根据应用程序的具体需求来做出。

 ③InnoDB

InnoDB 是 MySQL 数据库中的一种常用存储引擎,它在现代 MySQL 版本中被广泛使用,并且是默认的存储引擎(从 MySQL 5.5 版本开始)。InnoDB 提供了许多优点,特别适合需要事务支持和高并发性能的应用。

以下是 InnoDB 存储引擎的关键特点和优势:

  1. 事务支持:InnoDB 是一个支持事务处理的存储引擎。它遵循 ACID(原子性、一致性、隔离性、持久性)属性,允许使用 和 来管理事务。COMMITROLLBACK

  2. 行级锁定:InnoDB 支持行级锁定,而不是表级锁定。这意味着它可以在同一表中的不同行之间进行并发操作,提高了多用户环境下的性能。

  3. 外键约束:InnoDB 支持外键,可以保持数据完整性,实现表之间的关联关系。

  4. 崩溃恢复:InnoDB 提供了崩溃恢复的能力,它有日志文件(redo log)来记录数据修改操作,使得数据库在异常情况下可以进行恢复。

  5. 并发控制:InnoDB 使用 MVCC(多版本并发控制)来处理并发访问,允许读取操作不被写入操作所阻塞。

  6. 自动增加的大小: InnoDB 表的大小可以根据需要自动增加,而不需要手动设置或分配空间。

  7. 性能优化: InnoDB 针对高并发负载进行了优化,适合于需要处理大量并发读写请求的应用。

虽然 InnoDB 在许多方面提供了优越性能和功能,但在某些特定场景下,例如对于只读或很少更新的数据,或者需要全文索引支持的情况下,可能会选择其他存储引擎。选择存储引擎应该根据应用程序的需求和性能特点来决定。

 ④ARCHIVE

ARCHIVE是 MySQL 数据库中的一种特殊存储引擎。与 InnoDB 或 MyISAM 不同, 存储引擎的设计目标主要是为了实现高压缩率和快速插入,适用于对数据进行归档和存储的场景。ARCHIVE

以下是 存储引擎的一些特点和适用场景:ARCHIVE

  1. 高压缩率: 存储引擎使用 zlib 压缩算法,因此对于大量相似数据的存储非常高效。这使得它在归档大量历史数据时能够显著减小存储空间。ARCHIVE

  2. 只支持 INSERT 和 SELECT 操作: 存储引擎主要用于插入和检索大量数据。它不支持 UPDATE、DELETE 或其他复杂的操作,因此适用于一次性插入大量数据并且之后只进行查询的场景。ARCHIVE

  3. 不支持索引: 存储引擎不支持普通的 B 树索引,这意味着查询速度较慢。它主要适用于需要大量历史数据的存档场景,而不是需要频繁检索的情况。ARCHIVE

  4. 适用于日志和归档数据: 由于其高压缩率和只读特性, 存储引擎适用于存储日志数据或归档历史数据。ARCHIVE

需要注意的是,由于 存储引擎的特性,它并不适用于所有类型的应用。在选择存储引擎时,应该考虑到应用程序的读写模式、数据量、查询需求等因素。对于频繁读取和更新的数据表,通常会选择其他存储引擎,如 InnoDB。ARCHIVE

二.数据库管理

 元数据库(Metadatabase)通常是指一个数据库中存储关于该数据库中其他数据库和它们之间关系的信息的数据库。这种数据库通常用于管理和存储关于其他数据库对象(如表、列、索引等)的元数据。元数据库的存在使得用户和应用程序能够查询和了解数据库中存储的数据结构和关系,从而更有效地管理和操作数据库。记录MySQL自身数据的数据库

2.1.三大数据库 

2.1.1.information_schema

  • 用途: 是一个包含元数据(metadata)信息的数据库,提供了关于数据库结构和对象的信息,允许用户查询和了解数据库的结构、表、列、索引等元数据信息。information_schema
  • 内容: 包含一系列的表,例如 (数据库)、(表)、(列)、(统计信息)、(键列使用情况)等,这些表存储了数据库和其对象的元数据信息。SCHEMATATABLESCOLUMNSSTATISTICSKEY_COLUMN_USAGE
  • 用途示例: 用户可以通过查询 来获取数据库中的表、列、索引、约束等信息,用于数据库管理、查询优化和设计。information_schema

2.1.2.mysql

  • 用途: 是存储 MySQL 服务器的配置和授权信息的数据库,包含了用户账户、权限、全局变量等 MySQL 服务器配置和安全相关的信息。mysql
  • 内容: 包含了用户、密码、授权信息、全局变量等表,如 、、、 等,用于存储访问权限和服务器配置。userdbtables_privcolumns_priv
  • 用途示例: 管理员可以通过对 数据库进行操作,管理用户权限、修改全局变量设置,以及控制数据库的安全和行为。mysql

2.1.3.performance_schema

  • 用途: 是用于性能监控和诊断的数据库,提供了关于数据库服务器性能和活动的详细信息,允许用户查询和分析数据库的性能特征。performance_schema
  • 内容: 包含了用于监控数据库性能的一系列表,如 、、 等,这些表提供了关于语句执行、锁、文件 I/O 等性能相关的信息。events_statements_summary_by_digestmutex_instancesfile_summary_by_event_name
  • 用途示例: 数据库管理员和开发人员可以通过查询 中的表来了解数据库服务器的性能状况,识别潜在的性能问题,并进行性能调优和优化。performance_schema

 用于访问数据库的元数据信息, 用于管理 MySQL 服务器的配置和安全, 则用于监控和诊断数据库服务器的性能。这三个数据库在不同层面上提供了对 MySQL 数据库系统的重要信息和控制。information_schema  mysql performance_schema

2.2.相关操作

使用数据库:

use 数据库名

创建数据库:

create data base if not exists 数据库名 default charset utf8 collate utf8_general_ci;(完整的)

查询数据库:

show databases;

删除数据库:

drop database数据库名;

2.3.权限相关的表

mysql.user 表:(用户层权限)

  • 存储数据库用户的基本信息,包括用户名、主机、密码等。
  • 用于管理用户的认证信息。

mysql.db 表:(数据库层权限)

  • 记录数据库级别的权限信息,包括哪个用户有权限访问哪个数据库。

mysql.tables_priv 表:(表层权限)

  • 存储表级别的权限信息,包括哪个用户有权限对哪个表进行操作(例如 SELECT、INSERT、UPDATE、DELETE)。

mysql.columns_priv 表:(字段层权限)

  • 记录列级别的权限信息,包括哪个用户有权限访问表的哪些列。

三. 数据库的表管理

3.1.三大范式

数据库设计中的三大范式(Normal Forms)是一组规范,用于确保数据库表的结构具有最佳的组织和关联性,以减少数据冗余和提高数据的一致性。

第一范式:列不可再分(原子性) 例如:详细地址:湖南省长沙市岳麓区浪琴湾清水27栋

  • 数据表中的每个列都包含原子性的值,不能再分解为更小的数据单元。
  • 确保每个单元格只包含一个值,而不是多个值的列表或集合。

第二范式:主键约束 例如:订单项表设计:id、单价数量、小计

  • 数据表必须符合第一范式,且表中的非主键列完全依赖于整个主键,而不是仅依赖于主键的一部分。
  • 主要解决部分依赖的问题。

第三范式:外键约束  例如:患者id、患者姓名同时存在于一张关联表中

  • 数据表必须符合第二范式,且表中的非主键列之间不能存在传递依赖关系。
  • 主要解决传递依赖的问题。

3.2.基本数据类型

数据库中的基本数据类型通常包括数值型、字符型、日期/时间型等。不同的数据库系统可能支持略有不同

         整数                                                tinyint8位(-128~127)
                                        smallint16位(-32768~32767)
                                mediumint24位(-8388608~8388607)
                                                int32位大约正21亿
                                                        bigint64位
实数(带有小数点)                                                        float4个字节
                                                        double8个字节
                                                decimal最多允许65个数字
字符串             Char定长,MySQL根据定义字符串的长度一次分配足够的空间
适用场景:较短的字符串,且所有值接近同一长度
            varchar比定长类型节约空间
适用场景:字符串的最长长度比评估长度大很多,列的更新较少
缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
     text&blob      text存储字符数据                                      tinytext
                                      smalltext
                                      mediumtext
                                          text
                                        longtext
      blob存储二进制数据                                        tinyblob
                                        smallblob
                                        mediumblob
                                        blob
                                        longblob
日期时间                datatime精度:秒
与时区无关,8个字节存储空间
范围:1001至9999年
                timestamp保存1970年1月1日午夜以来的秒数
占用4个字节存储空间
范围:1970年至2038年
与时区有关
默认为NOTNULL
通常尽量使用timestamp
精度:秒
datayyyy:MM:dd
timeHH:mm:ss
选中标识符用来进行关联操作
在其他表中作为外键
-整型通常是标识列的最好选择
-相关的表中使用相同的数据类型
-尽量避免字符串作为标识列,尤其是随机生成的字符串,(如:UUID)导致insert与select都很慢-----------插入值被随机写到索引的不同位置,inser慢,容易导致页分裂,磁盘随机读取

逻辑上相邻的行被分布在磁盘和内存的不同地方,select慢

是MySQL查询缓存失效

如果需要存储UUID,则应将“-”去除

四.账号管理

查询用户 :

SELECT*from user

查看用户常用信息:

select host,user from user,

删除用户(慎用):

#命令: dropuser用户名;

#drop user Is;

权限操作

设置权限:

  • 角色分配: 通常,权限通过角色进行管理。首先,定义不同的角色,并将相应的权限分配给这些角色。
  • 直接分配权限: 在某些情况下,可能需要直接将权限授予特定的用户,而不通过角色。这样的直接分配可以是临时的或特殊情况下的需求。
  • #语法: grantprvilegesondatabasename.tablenametousername@'host;

    #给zs用户赋予数据库db_xiaoli中的表t_p1_user查询权限

    grant SELECT on db_xiaoli.t_p1_user to zs@%;

    #给zs用户赋予数据库db_xiaoli中的表t_p1_user修改权限

    grant UPDATE on db_xiaoli.t_p1_user to zs@'%'

    #给zs用户赋予数据库db_xiaoli中所有表查询权限

    grant SELECT on db_xiaoli.*to zs@'%';

    #给zs用户赋予数据库db_xiaoli中所有表所有权限

    grant ALL on db_xiaoli.*to zs@%';

撤销权限:

  • 从角色中移除: 如果用户不再需要某些权限,管理员可以从其角色中移除这些权限。
  • 直接取消权限: 对于直接分配的权限,管理员可以直接取消授予用户的特定权限。

查看用户权限:

  • 角色查看: 管理员通常可以查看用户分配的角色,从而了解用户拥有的权限。
  • 权限列表查看: 管理员可以查看用户直接被授予的权限列表,以便更详细地了解其访问权限。
  • 审计日志: 系统可能记录了用户的权限使用情况,管理员可以通过审计日志来检查用户的活动和权限变更历史。
  • #命令:showgrantsfor用户名

    show grantssfor zs'@%

五.思维导图


                                好啦今天就到这里了哦!!!希望能帮到你哦!!!

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

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

相关文章

Arbitrum之后,估值18亿美元Scroll又火了

文章目录 Scroll的核心竞争力EVM等效全面的去中心化如何领取Scroll空投?结语参考 Scroll是用于以太坊的原生zkEVM Layer 2解决方案,帮助解决以太坊的拥堵问题并进行扩容。 Scroll创立于2021年,致力于创建一个 EVM(以太坊虚拟机&a…

论文阅读: Semantics-guided Triplet Loss

ICCV 2021 Abstract 一个度量学习方法,通过浏览语义引导的局部集合去优化内在深度表示。一个新颖的特征融合模块能有效利用跨模态特异质特征。 Senantics-guided Triplet Loss 基本假设: 在场景语义分割图像中,目标内部相邻像素拥有同样…

声明式管理方法

声明式管理方法(yaml)文件: 1,适合对资源的修改操作 2,声明式管理依赖于yaml文件,所有的内容都在yamI文件当中 3,编辑好的yaml文件,还是要依靠陈述式命令发布到k8s集群当中 发布的…

数据损毁!250 亿美金的 Pinterest,在数据库选型上的翻车经历

原文链接 Pinterest 是一个以图片为主的社交网络,用户可以将图片保存或 "钉 / pin" 在自己的图板上。Pinterest 在 2019 年上市,目前市值 250 亿美金。本文内容主要根据 2012 年 Scaling Pinterest 的分享。 2012 年 1 月,Pinteres…

HTML----JavaScript操作对象BOM对象

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 本章要求 了解BOM模型掌握BOM模型实际应用 一.BOM模型概述 BOM(浏览器对象模型)是JavaScript中的一个重要概念,它提供了一组用于控制浏览器窗口和页面内容的…

力扣热题100道-矩阵篇

矩阵 73.矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法**。** 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例…

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》,前十名分别是片仔癀、同仁堂、贵州茅台、五粮液、中国银行、中华、黄山、农业银行、建设银行、汾酒。 榜单调研范围涵盖中国内地具有60年以上历史的为消费者提供产品或服务的品牌,综合考察品牌历史…

C# 语法进阶 委托

1.委托 委托是一个引用类型,其实他是一个类,保存方法的指针 (指针:保存一个变量的地址)他指向一个方法,当我们调用委托的时候这个方法就立即被执行 关键字:delegate 运行结果: 思…

TikTok舞台背后:短视频如何打破艺术界界限?

TikTok,这个以短视频为媒介的平台,正成为全球年轻一代表达创意的重要舞台。然而,其影响不仅仅停留在娱乐领域,更在艺术界引起了巨大的关注。本文将深入探讨TikTok是如何在短视频的形式下打破传统艺术界的界限,为创作者…

欢迎提交pr共同改进项目, pr的含义?

"提交PR"在软件开发和编程领域是一个常用术语,特别是在使用版本控制系统如Git时。这里的“PR”指的是“Pull Request”,它是一种通知项目维护人员您已经完成了一些代码改动并希望将这些改动合并到主项目中的方式。简单来说,当您对一…

【银行测试】超细支付功能测试+测试点总结分析(详全)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、支付功能怎么测…

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装 1、环境2、安装包下载3、安装3.1 、解压3.2、配置3.3、编译安装3.4 、启动与关闭 4、安装 uuid-ossp 、plpython2u插件5、参考 1、环境 centos 7 、 postgresql 10.19 2、安装包下载 postgres 源码安装包 3、安…

golang学习专栏

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…

Java 读取超大excel文件

注意&#xff1a;此参考解决方案只是针对xlsx格式的excel文件&#xff01; Maven <dependency><groupId>com.monitorjbl</groupId><artifactId>xlsx-streamer</artifactId><version>2.2.0</version> </dependency>读取方式1…

安装elasticsearch、kibana、IK分词器、扩展IK词典

安装elasticsearch、kibana、IK分词器、扩展IK词典 后面还会安装kibana&#xff0c;这个会提供可视化界面方面学习。 需要注意的是elasticsearch和kibana版本一定要一样&#xff01;&#xff01;&#xff01; 否则就像这样 elasticsearch 1、创建网络 因为我们还需要部署k…

java常用数据结构

List&#xff1a;ArrayList 和 LinkedList 1、ArrayList 和 LinkedList都是非线程安全 2、ArrayList 可以直接根据下表定位元素&#xff0c;查找速度快&#xff0c;但是修改元素慢&#xff1b;LinkedList 查找元素必须从第一个开始逐个查找&#xff0c;查找速度慢&#xf…

QT上位机开发(会员管理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了ini文件的解析办法&#xff0c;通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外&#xff0c;另外一种经常出…

GC6150 5V低压步进电机驱动芯片,低噪声、低振动 应用于摄像机,机器人 医疗器械等产品中。

GC6150是双通道5V低压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机变焦对焦系统、万向架、摇头机等精度、低噪声STM控制系统&#xff0c;该芯片为每个通道集成了一个256微步的驱动器。通过SPI & T2C接口&#xff0c;客户可以方使地调整驱…

【SpringBoot3】命令行运行jar包报错可能的一些原因

端口号冲突&#xff1a; 有其他的web程序在运行&#xff0c;占用了8080端口没有主清单属性&#xff1a; 在打包jar包前&#xff0c;没有加入打包的插件spring-boot-maven-plugin&#xff0c;参考1.SpringBoot入门的第一个完整小项目&#xff08;新手保姆版教会打包&#xff09;…

【EI会议征稿通知】第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024)

第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024&#xff09; 2024 5th International Conference on Electrical, Electronic Information and Communication Engineering (EEICE 2024) 第五届电气、电子信息与通信工程国际学术会议 (EEICE 2024&#xff09;将于20…