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

目录

一. 数据库存储引擎

        1.1 存储引擎查看

        1.2 InnoDB

        1.3 MyISAM

        1.4 MEMORY

        1.5 ARCHIVE

二. 数据库管理

        2.1 元数据库简介

        2.2 元数据库分类

        2.3 数据库的增删改查及使用:

        2.4 MySQL库的权限

三. 数据表管理

        3.1 三大范式

        3.2 基本数据类型

        3.2.1 优化原则

        3.2.2 值类型分类

        3.2.3 text&blob

        3.2.4 日期时间

        3.2 5 选择标识符

四. 数据库账号管理

        4.1 相同

        4.2 不同

        4.2.1 MySQL 5.7版本

        4.2.2 MySQL 8.0版本

五. 思维导图


一. 数据库存储引擎

        1.1 存储引擎查看

命令:SHOW ENGINES

support字段说明:

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

        1.2 InnoDB

使用场景:一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引擎

特点:

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

        1.3 MyISAM

使用场景:大量查询,很少修改的场景。例如:数据字典,系统参数

特点:

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

        1.4 MEMORY

使用场景:由于易失性,可以用于存储在分析中产生的中间表

特点:

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

        1.5 ARCHIVE

使用场景:在日志和数据采集的时候可以使用

特点:

  • 只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增ID上建立索引
  • archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%
  • 不支持索引(自增ID列除外)

二. 数据库管理

        2.1 元数据库简介

MySQL自身数据的数据库,就是数据库安装成功后,默认带的,就叫元数据库。

        2.2 元数据库分类

  • information_schema:信息数据库,保存mysql所维护的其他数据库信息。例如:数据库名,数据库的表,表栏的数据类型与访问权限等
  • mysql:核心数据库,主要负责存储数据库的用户、权限设置、关键字等。mysql自己需要使用的控制和管理信息。
  • performance_schema:用于mysql的监控数据的存放。
  • sys:Sys库所有的数据源来自:performance_schema。目标是把performance_schema 的把复杂度降低,让 DBA 能更好的阅读这个库里的内容。让DBA更快的了解 DB 的运行情况。

        2.3 数据库的增删改查及使用:

  • 使用数据库:use 数据库名
  • 创建数据库:create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;(设置了字符集编码以及不区分大小写)
  • 显示所有的数据库:show databases;
  • 删除数据库:drop database 数据库名;

        2.4 MySQL库的权限

  • user表(用户表权限):用户有哪些数据库的操作权限
  • db表(数据库层权限):用户对这个数据库的哪些表有操作权限
  • tables_priv表(表层权限):用户对于表有哪些操作权限:增加、删除、修改、查询、创表、删除表
  • columns_priv表(字段层权限):决定了用户针对于某一张表的哪些字段有操作权限

三. 数据表管理

        3.1 三大范式

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

  • 例如:湖南省长沙市岳麓区浪琴湾清水4栋

第二范式:主键约束

  • 例如:订单项表设计:id、单价 数量、小计

第三范式:外键约束

  • 例如:患者id、患者姓名同时存在于一张关联表中

        3.2 基本数据类型

        3.2.1 优化原则

1. 更小通常更好:

  • 更小通常更快
  • 更小的磁盘空间、内存、CPU缓存
  • 更少的CPU周期

2. 简单就好:

  • 整形比字符串操作代价更小
  • 用时间类型表示日期(date、datetime等)而不用字符串

3. 尽量避免NULL:

  • NULL为列的默认值,但除非确实需要,应尽量避免使用NULL
  • 尽量指定列为NOT NULL,特别是需要建索引的列
  • 查询中包括有NULL的类,MySQL更难优化 不利于使用索引  索引统计更复杂  值比较 更复杂
  • 用整形值而不是字符串表示IP地址: INET_ATON() ② INET_NTOA()
        3.2.2 值类型分类

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: 比定长类型节约空间

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

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

        3.2.3 text&blob

1. 都为存放很大的数据而设计
2. 与其他数据不同,都作为独立的对象存储
3. 当值太大时,使用外部存储区存储

1. text存储字符数据:

  • tinytext
  • smalltext
  • mediumtext
  • text
  • longtext

2. blob存储二进制数据

  • tinyblob      
  • smallblob
  • mediumblob
  • blob
  • longblob
        3.2.4 日期时间

1. datetime:

  • 精度:秒
  • 与时区无关,8个字节存储空间
  • 范围:1001至9999年

2. timestamp:

  • 保存1970年1月1日午夜以来的秒数
  • 占用4个字节存储空间
  • 范围:1970年至2038年
  • 与时区有关
  • 默认为NOT NULL
  • 通常尽量使用timestamp
  • 精度:秒

3. date:yyyy-MM-dd

4. time:HH:mm:ss

        3.2 5 选择标识符
  • 用来进行关联操作
  • 在其他表中作为外键
  • 整形通常是标识列的最后选择
  • 相关的表中使用相同的数据类型
  • 尽量避免字符串作为标识列,尤其是随机生成的字符串,(如:UUID)导致insert与select都很慢

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

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

        3. 使MySQL查询缓存失效

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

四. 数据库账号管理

        4.1 相同

查询用户:SELECT * from user;

查看用户常用信息:select host,user from user;

删除用户(慎用):#命令:drop user 用户名;

                                #drop user ls;

权限操作:

        ① 设置权限(Grant)

        #语法:grant privileges on databasename.tablename to username@'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@'%';

        ② 撤销权限(Revoke)

        #语法:revoke privileges on databasename.tablename from username@'host';
        #啥也不能回收,不会对GRANT ALL PRIVILEGES ON `db_xiaoli`.* TO `zs`@`%`有任何影响
        revoke DELETE on db_xiaoli.t_p1_user from zs@'%';

        #可以回收GRANT SELECT, UPDATE ON `db_xiaoli`.`t_p1_use` TO `zs`@`%`这条赋权语句带来的权限
        revoke all on db_xiaoli.t_p1_use from zs@'%';

        #可以回收GRANT SELECT, UPDATE ON `db_xiaoli`.* TO `zs`@`%`这条赋权语句带来的权限
        revoke all on db_xiaoli.* from zs@'%';


        #注:revoke只能回收grants列表中更小的权限;

        ③ 查看用户权限

        #命令:show grants for 用户名;
        show frants for 'zs'@'%';

        4.2 不同

        4.2.1 MySQL 5.7版本
  • 创建用户并设置登录密码:

        #命令:create user 用户名 identified by '密码';
        #注:identified by会将纯文本密码加密作为散列值存储
        create user ls identified by '123456';

  • 修改用户密码:

        #命令:set password for 用户名=password('新密码');
        set password for zs=password('123456');
        flush privileges;

        4.2.2 MySQL 8.0版本
  • 创建用户并设置登录密码:

        #用户名密码创建需要分开
        #命令:create user 用户名;
        create user ls;

  • 修改用户密码:

        #ALTER USER 用户 IDENTIFIED WITH mysql_native_password BY '新密码';
        ALTER USER 'ls'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
        flush privileges;

五. 思维导图

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

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

相关文章

这个方法可以让你把图片无损放大

随着数字技术的不断发展,照片无损放大已经成为了摄影领域中的一项重要技术。照片无损放大能够让摄影师在不损失细节和画质的情况下,将照片放大到更大的尺寸,从而让观众能够更加清晰地欣赏到照片中的每一个细节。 今天推荐的这款软件主要是通…

Mysql隔离级别MVCC多版本并发控制机制

欢迎大家关注我的微信公众号: 传送门:Mysql事务原理与优化 目录 概述 undo日志版本链与read view机制详解 深入浅出分析MVCC可见性算法的操作示例 关于readview和可见性算法的原理解释 总结 概述 在之前的文章中讲过,Mysql在可重…

基于Segformer实现PCB缺陷检测(步骤 + 代码)

导 读 本文主要介绍基于Segformer实现PCB缺陷检测 ,并给出步骤和代码。 背景介绍 PCB缺陷检测是电子制造的一个重要方面。利用Segformer等先进模型不仅可以提高准确性,还可以大大减少检测时间。传统方法涉及手动检查,无法扩展且容易出错…

魏副业而战:手机副业新风口,短剧内容创作实操,日赚500+的创业指南

我是魏哥,与其躺平,不如魏副业而战! 今天魏哥给大家分享一个短剧推广的副业项目。 有人会有疑惑,短剧推广是去年爆火的副业项目,现在操作是不是有点晚了。 这个大家不要有太多的顾虑。 恰恰相反,短剧推广…

【springboot项目】之秒杀项目常见问题(Seckill)

秒杀问题分为两部分:用户查看商品详情页、用户下单 项目简介: 模拟了高并发场景的商城系统,它具备秒杀功能,为了解决秒杀场景下的高并发问题。引入了 redis 作为缓存中间件,1.主要作用是缓存预热、预减库存等等。2.针…

新年话节能 电梯也减排

小伍恭祝大家2024年元旦快乐!! 目前,电梯的节能已经得到业界的广泛重视,积极推动相关的节能技术的实施,努力宣传和倡导规范的电梯的使用行为,将极大地改变我国电梯的耗能状况,为节能减排做出较大…

遥测终端机:数据世界的千里眼与顺风耳

在当今这个信息爆炸的时代,数据的重要性日益凸显。如何高效、准确地收集、传输和处理这些数据,成为了众多企业和研究机构关注的焦点。而遥测终端机,正是这样一种解决这一问题的强大工具。 遥测终端机,顾名思义,是一种…

JavaScript 基础(一)

实验需新建一个 test.html 文件&#xff0c;用于编写代码。后续的例子中&#xff0c;将不再提醒建立文件&#xff0c;大家根据个人需求自行创建对应的 html 文件&#xff0c;并完成代码练习&#xff1a; 首先来看看范例代码&#xff1a; <!doctype html> <html>&…

OpenAI API/Plus会员信用卡绑定付款方式经历

前言 9月25日起ChatGPT风控升级&#xff0c;428813的卡只可以支付Open ai API-key&#xff0c;直接订阅plus会被拒。部分用户将卡绑定美区Google pay使用app store进行订阅可以成功&#xff0c;如果您没有这两种支付方式&#xff0c;请您重新开一张534786的万事达美卡升级订阅…

光伏效果图是用什么软件建模设计的?

光伏效果图是展示光伏系统在建筑或地面上的外观和效果的图像。要创建这样的效果图&#xff0c;需要使用专业的建模和设计软件。那么&#xff0c;光伏效果图是用什么软件建模设计的呢&#xff1f; 鹧鸪云光伏设计软件&#xff1a;鹧鸪云是一款集开发、设计和施工为一体的设计软…

2023年终总结|回顾学习Tensorflow、Keras的历程

2023年4月&#xff0c;初探TensorFlow2.0&#xff0c;对比了1.0版本的差异。接着&#xff0c;学习了TensorFlow2.0的常量矩阵、四则运算以及常用函数。学习了数据切割、张量梯度计算、遍历元素、类别索引转换等技巧&#xff0c;并掌握了CNN输出特征图形状的计算方法。 在数据处…

kafka消息队列安装以及整合springboot使用

文章目录 一、JMS与AMQP二、安装2.1 Java安装2.2 Zookeeper 和 kafka安装2.3 docker-compose 安装【待定&#xff0c;远程连接可能连接不上】 三、Kafka数据存储流程和原理概述和LEOHW讲解四、代码客户端连接kafka五、**ProducerRecord和key的作用**5.1 **如果保证顺序消费&…

cnstd使用效果测试

使用参考&#xff1a;https://github.com/breezedeus/CnSTD/tree/master 原理参考&#xff1a;https://cnocr.readthedocs.io/zh/latest/intro-cnstd-cnocr.pdf 模型&#xff1a; 结论&#xff1a; 经过测试&#xff0c; 长文本检测效果不错&#xff0c;短文本可能角度不对 …

【Harmony OS - 网络请求】

在一个应用开发中&#xff0c;网络请求是必不可少的&#xff0c;我们一般用的fetch、axios来进行http请求&#xff0c;在鸿蒙中也可以通过createHppt来发生一个http请求&#xff0c;它们都是异步请求返回的Promise&#xff0c;下面我们将介绍’ohos.net.http’和axios这两种方式…

学而时习之---状态模式

在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c; 这些状态在某些情况下能够相互转换&#xff0c; 而且对象在不同的状态下具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计。 使用一种被称为状态模式的设计模式。 状态模式用于解决系统中复…

[DevOps-05] Jenkins实现CI/CD操作

一、简要说明 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 二、准备Springboot工程 1、IDEA新建工程 2、填写项目工程信息 3、选择Springboot版本…

不要盲目自学网络安全!学习顺序特别重要!

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

中国植被分区数据,shp数据,2000年,字段包含区域代码、名称、地带代码及名称,附高清图可视化

数据名称: 中国植被分区数据 数据格式: Shp 数据时间: 2000年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1zbqydm植被区域代码2zbqymc植被区域名称3zbdddm植被地带代码4zbddmc植被地带名称 …

接口和抽象类有什么共同点和区别?

共同点&#xff1a; 都不能被实例化。都可以包含抽象方法。都可以有默认实现的方法&#xff08;Java 8 可以用 default 关键字在接口中定义默认方法&#xff09;。 区别&#xff1a; 接口主要用于对类的行为进行约束&#xff0c;你实现了某个接口就具有了对应的行为。抽象类…

Vue中的选项式 API 和组合式 API,两者有什么区别

Vue中的选项式 API&#xff08;Option API&#xff09;和组合式 API&#xff08;Composition API&#xff09;是两种不同的组件编写方式&#xff0c;它们各有特点和适用场景&#xff1a; 选项式 API&#xff08;Option API&#xff09;: 传统方法&#xff1a;Vue最初的编程范式…