MySQL四大引擎建库建表账号管理

目录

一. 数据库四大引擎

1.1 引擎查看

1.2 InnoDB引擎

1.3 MyISAM引擎

1.4 MEMORY引擎 

1.5 Archive引擎

二. 数据库管理

2.1 元数据库

2.2 数据库的增删改查及使用

2.3 权限相关表

 三. 数据表管理

3.1 三大范式

3.2 基本数据类型

优化原则

分类

四. 数据库账号管理

4.1 通用

4.2 不同

4.2.1 MySQL5.7版本

4.2.2 MySQL8.0版本

思维导图


一. 数据库四大引擎

1.1 引擎查看

查看命令

  • SHOW ENGINES

Support字段说明

  • default为默认引擎
  • YES表示可以使用
  • NO表示不能使用

1.2 InnoDB引擎

使用场景

  • 事务性的一般使用该引擎,用途最广,如果不知道使用哪种引擎,就使用该引擎

特点

  • 修改快,支持事务(只有它支持事务)——行锁
  • 存储限制:64TG

1.3 MyISAM引擎

使用场景

  • 在开发中,数据字典、系统参数表会用到。
  • 大量查询,很少修改的时候

特点

  • 强调了快速读取操作——表锁
  • 存储限制:256TG
  • 不支持事务

1.4 MEMORY引擎 

使用场景

  • 由于易失性,用于存储在分析中产生的中间表

特点

  • 所有的数据都存储在内存中,一旦服务器重启,所有的表数据都会丢失但表结构会保存
  • 存储限制:取决于RAM(随机存储器)
  • 不支持事务

1.5 Archive引擎

使用场景

  • 在日志和数据采集时使用

特点

  • 只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引

二. 数据库管理

2.1 元数据库

简介

  • 记录MySQL自身数据的数据库

元数据库分类

1、information_schema

信息数据库,保存MySQL所维护的其他数据库信息。

例如:数据库名、数据库表、表栏的数据类型与访问权限等。

2、mysql

核心数据库,主要负责存储数据库的用户,权限设置,关键字等。

mysql自己需要使用的控制和管理信息。

3、performance_schema

用于mysql的监控数据的存放。

2.2 数据库的增删改查及使用

  1. 使用:use 数据库名
  2. 增加:create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;(设置字符集编码以及不区分大小写)
  3. 查询所有数据库:show database
  4. 删除:drop database 数据库名;

2.3 权限相关表

1、user表(用户层权限)

决定用户拥有哪些数据库的权限

2、db表(数据库层权限)

决定用户对于该数据库哪些表具有操作权限

3、tables_priv表(表层权限)

决定了用户对于具体某张表具有增删改查的权限

4、columns_priv表(字段层权限)

决定了用户对于某张表的哪些字段具有操作权限

 三. 数据表管理

3.1 三大范式

  • 第一范式:列不可再分(原子性)

假如说,将一个地址湖南省长沙市岳麓区浪琴湾15栋。这个时候需要用四个字段来保存这个地址:province保存省份、city保存市、area保存区域、address保存详细地址。这样就符合了第一范式。

  • 第二范式:主键约束

 也就是说一张表的每一个字段它都要依托于主键存在。例如:订单项表里有编号、单价、数量、小计。这里的小计是依托于单价和数量存在,这就违背了第二范式。

  • 第三范式:外键约束

假如说在医疗系统中,需要拿到一个患者的档案信息,那么就需要用到两张表,患者信息表和医生信息表。要在患者信息表中保存医生id,而不能直接在患者表中拿到医生姓名。

3.2 基本数据类型

优化原则

1、越小越好

  • 越小越快;
  • 拥有更小的磁盘空间、内存、CPU缓存;
  • 更少的CPU周期。

2、简单就好

  • 整型比字符串操作代价更小;
  • 用时间类型表示日期,而不是字符串。

3、尽量避免使用NULL

  • 尽量指定列为NOT NULL,特别是需要建索引的列;
  • 查询含有NULL的类,MySQL更难优化(不利于使用索引、索引统计更复杂、值比较 更复杂);
  • 用整型值而非字符串表示IP地址。

分类

1、整数

  • tinyint 8位(-128~127)
  • smallint 16位(-32768~32767)
  • mediumint 24位(-8388608~8388607)
  • int 32位 (大约正负21亿)
  • bigint 64位

2、实数(带有小数点)

  • float 4个字节
  • double 8个字节
  • decimal 最多允许65个数字(涉及到数字的运算最好使用decimal)

3、字符串

  • char:定长,MySQL根据定义字符串的长度一次分配足够的空间;

适用场景:较短的字符串,且所有值接近同一长度。

  • varchar:比定长类型节约空间;

适用场景:字符串的最长长度比评估长度大很多,列的更新较少;

缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂。

4、text存储字符数据 & blob存储二进制数据

  • tinytext                                                 tinyblob
  • smalltext                                              smallblob
  • mediumtext                                          mediumblob
  • text                                                       blob
  • longtext                                                longblob

都为存放很大的数据而设计;

与其他数据不同,都作为独立的对象存储;

当值太大时,使用外部存储区存储。

5、日期时间

  • datetime

精度:秒;

与时区无关,8个字节存储空间;

范围:1001至9999年。

  • timestamp

保存1970年1月1日午夜以来的秒数;

占用4个字节存储空间;

范围:1970年至2038年;

与时区有关;

默认为NOT NULL;

通常尽量使用timestamp。

  • date:yyyy-MM-dd
  • time:HH:mm:ss

6、选择标识符

  • 用来进行关联操作;
  • 在其他表中作为外键;
  • 整型通常是标识符的最好选择;
  • 相关的表中使用相同的数据类型;
  • 尽量避免字符串作为标识列,尤其是随机生成的字符串(如uuid)

原因:①插入值被随机写到索引的不同位置,insert慢,容易导致页分裂,磁盘随机读取;

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

③使MySQL查询缓存失效;

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

四. 数据库账号管理

4.1 通用

1、查询用户

select *from user;

2、查看用户常用信息

select host,user from user;

user表中host列的值的意义:

  • %                匹配所有主机
  • localhost     localhost不会被解析成IP地址,直接通过UNIXsocket连接
  • 127.0.0.1    会通过TCP/IP协议连接,并且只能在本机访问

3、删除用户

drop user 用户名;

4、权限操作

  1. 设置权限(grant):grant privileges on databasename.tablename to username@'host';  
  2. 撤销权限(revoke):revoke privileges on databasename.tablename from username@'host';        revoke只能回收grants列表中更小的权限;
  3. 查看用户权限:show grants for 用户名;

4.2 不同

4.2.1 MySQL5.7版本

1、创建用户并设置登录密码

create user 用户名 identified by '密码';

(identified by 会将纯文本密码加密作为散列值存储)

2、修改用户密码

set password for 用户名 = password('新密码');

flush privileges;

4.2.2 MySQL8.0版本

1、创建用户并设置登录密码

用户名密码创建需要分开;

create user 用户名;

2、修改用户密码

alert user 用户 identified with mysql_native_password by'123456';

思维导图

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++Qt6 多种排序算法的比较 数据结构课程设计 | JorbanS

一、 问题描述 在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法(例如搜索算法与合…

学习【Mysql基础篇】这一篇就够了

Mysql基础篇 1. Mysql概述1-1. 数据库相关概念1-2. Mysql数据库版本下载安装启动停止客户端连接数据模型 2. SQL2-1. SQL通用语法2-2. SQL分类2-3. DDL数据库操作表操作 - 查询创建表操作 - 修改表操作 - 删除数据类型 2-4. 图像化界面工具2-5. DML2-6. DQL2-7. DCL 3. 函数4. …

深度理解Flutter:有状态Widget与无状态Widget的详细对比

有状态Widget 什么是有状态Widget (StatefulWidget) 官方解释: 如果用户与 widget 交互,widget 会发生变化,那么它就是 有状态的。 有状态的 widget 自身是可动态改变的(基于State)。 例如用户交互而改变 Widget 的 s…

Java中的类和方法(方法重载)

目录 前言: 什么是面向对象? 什么是类? 类和方法的关系: 方法的定义: 方法重载: 类的定义: 修改类的名字: 实例化: 利用方法对其属性赋值: this…

C++多态性——(2)联编

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 成功的秘诀就在于多努力一次&#xff…

JVM篇:JVM内存结构

程序计数器 程序计数器英文名叫:Program Counter Register 作用:用来记录下一条jvm指令的地址行号。 先来查看一段jvm指令,这些指令对应的java代码就是输出1-5 操作系统运行该Java程序时具体流程如下 语言解释:源文件通过编译转…

基于机器视觉的害虫种类及计数检测研究-人工智能项目-附代码

概述 农业与民生和经济发展息息相关,对农业发展科学化的关注既是民生需求, 也是经济稳步发展的迫切需求。病虫害是影响农作物生长的重要因素,对农作物的产量和品质都能造成无法估计的损害。 - 针对目前广大农业产区农业植保人员稀缺、病虫害…

从零开始配置kali2023环境:配置jupyter的多内核环境

在kali2023上面尝试用anaconda3,anaconda2安装实现配置jupyter的多内核环境时出现各种问题,现在可以通过镜像方式解决 1. 搜索镜像 ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker search anaconda ┌──(holyeyes㉿kali2023)-[~] └─$ sudo …

关于this.router 和this.route的总结

this.router 和this.route这2个东西一直在用可是我还是迷迷糊糊的不知道啥啥意思,尤其是idea的提示功能,总是让我一个回车就弄错了。 总结一波: 概述 this.$router(路由实例) : 是VueRouter的实例.包含了很多属性和对象(比如 h…

V8R6小版本升级步骤(单机环境)

在KingbaseES V8R6版本提供了sys_upgrade的升级工具。 sys_upgade介绍 sys_upgrade实现KingbaseES服务器实例版本升级。 sys_upgrade 允许将存储在KingbaseES数据文件中的数据升级到一个更高的KingbaseES主版本,而无需进行主版本升级(例如从 V8R6C4 到 V8R6C5)通常…

Django开发5-Django开发知识点快速预览

Django开发知识点快速预览 Django开发1.知识点的回顾:2.Ajax请求3.订单小结图表 各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料! Django开发 1.知识点的回顾: 安装Django pip install django创建Django项…

通达信佳庆离散指标公式,衡量价格波动率

佳庆离散指标(Chaikin Volatility)是由股票经纪人Mark Chaikin发明的,通过计算选定时期内最高价和最低价之间的差值来衡量价格波动率,将波动率量化为最高价和最低价之间范围的扩大或缩小。 在技术分析中,波动性具有比…

5 个顶级的免费磁盘分区软件工具评测分享

磁盘分区可能是一个脆弱而复杂的过程,磁盘崩溃或用户设备受到病毒攻击的风险很高。因此,它们很难由用户单独或手动管理。本文详细介绍了可以帮助简化磁盘分区过程的不同软件工具、它们的功能和优点。那么让我们开始吧。 什么是磁盘分区工具?…

常见的锁策略详细讲解(悲观锁 vs 乐观锁,轻量锁 vs 重量锁,自旋锁 vs 互斥锁,公平锁 vs 非公平锁,读写锁等)

文章目录 悲观锁和乐观锁Java中的悲观锁和乐观锁乐观锁常见的两种实现方式版本号机制CAS(compare and swap) 算法乐观锁的缺点 轻量级锁和重量级锁自旋锁 VS 互斥锁公平锁 VS 非公平锁读写锁读写锁的插队策略读写锁的升级策略 可重入锁 VS 不可重入锁 悲观锁和乐观锁 所谓悲观…

Android 13 - Media框架(29)- MediaCodec(四)

上一节我们了解了如何通过 onInputBufferAvailable 和 getInputBuffer 获取到 input buffer index,接下来我们一起学习上层如何拿到buffer并且向下写数据的。 1、获取 input Buffer 获取 MediaCodec 中的 buffer 有两种方式,一种是调用 getInputBuffers…

在vscode中创建任务编译module源文件

接昨天的文章 [创建并使用自己的C模块(Windows10MSVC)-CSDN博客],觉得每次编译转到命令行下paste命令过于麻烦,于是研究了一下在vscode中创建自动编译任务。 经过尝试,在task.json中增加如下代码: {"…

IDEA2023 最新版详细图文安装教程(安装+运行测试+汉化+背景图设置)

IDEA2023 最新版详细图文安装教程 名人说:工欲善其事,必先利其器。——《论语》 作者:Code_流苏(CSDN) o(‐^▽^‐)o很高兴你打开了这篇博客,跟着教程去一步步尝试安装吧。 目录 IDEA2023 最新版详细图文安…

SpringBoot整合Validator

前言 @Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束。 通过对DTO中实体类的约束,可以大大增加代码的简洁性。 错误的状态码 返回的响应码推荐使用400 bad request. 参数注解含义 实体类 /*** @author:…

索引语法SQL性能分析

创建 查看 删除 SQL执行频率 Com后七个下划线 慢查询日志 show profiles explain explain执行计划 各字段含义: 多表查询 根据主键或者唯一索引时会出现const const就已经是很棒的性能了,实际中 NULL几乎不会出现

信息安全管理与评估省赛经验总结

信息技能大赛 在比赛开始之前,一定要检查设配,认真审查注意事项;拿到题之后,把对应设备的基本配置完成,任何异常及时报告,这个时候可以把设备的线链接上配置好,登录清单上管理地址等查看是否能登…