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

2024-01-04 10:04

本文主要是介绍MySQL之四大引擎、建库建表以及账号管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、数据库存储引擎

1.1 存储引擎查看

1.2 InnoDB 

 1.3 MyISAM 

 1.4 MEMORY

1.5 Archive 

二、数据库管理

 2.1元数据库简介

2.2 数据库相关操作 

2.3 MySQL库

三、数据库表管理

3.1 三大范式

3.2 基本数据类型 

优先原则

值类型分类 

text&blob 

日期时间 

选择标识符 

四、数据库账号管理

相同

不同

 五、思维导图


一、数据库存储引擎

1.1 存储引擎查看

命令:SHOW ENGINE

support字段说明:

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

1.2 InnoDB 

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

特点:

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

 1.3 MyISAM 

使用场景:大量查询、很少修改的场景

特点:

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

 1.4 MEMORY

可以把一些常见的数据,要保证性能,就保存在memory存储引擎

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

特点:

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

1.5 Archive 

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

特点:

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

二、数据库管理

 2.1元数据库简介

1.这几个数据库就是数据库安装成功后,默认带的,就叫元数据库,MySQL自身数据的数据库

2.元数据库分类

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

2.2 数据库相关操作 

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

  • use数据库名
  • create database if not exists 数据库名 default charse utf8 collate utf8_general_ci;——设置了字符集编码以及不区分大小写
  • show databases;
  • drop database 数据库名;

2.3 MySQL库

权限相关:

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

三、数据库表管理

3.1 三大范式

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

  • 例如:湖南省长沙市岳麓区浪琴湾燕联8栋
  • 如果开发人员不遵循第一范式:可能就是用一个列address
  • 如果遵循第一范式:provence省、city市、area区、address详细地址

第二范式:主键约束

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

第三范式:外键约束

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

3.2 基本数据类型 

优先原则

更小通常更好

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

简单就好

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

尽量避免NULL

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

整数

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

实数(带有小数点):

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

字符串:

  • char:定长,MySQL根据定义字符串的长度一次分配足够的空间
               适用场景:较短的字符串,且所有值接近同一长度
  • varchar:比定长类型节约空间
                    适用场景:字符串的最长长度比评估长度大很多,列的更新较少
                    缺点:频繁修改,且字符串的长度变化大时,可能出现页分裂
text&blob 

给来存放很大的数据而设计,与其他数据不同,都作为独立的对象存储

text存储字符数据

  • tinytext
  • smalltext
  • mediumtext
  • text
  • longtext

blob存储二进制数据:

  • tinyblob
  • smallblob
  • mediumblob
  • blob
  • longblob
日期时间 
  • datetime:精度:秒
                     与时区无关,8个字节存储空间
                     范围:1001至9999年
  • timestamp:保存1970年1月1日午夜以来的秒数
                        占用4个字节存储空间
                        范围:1970年至2038年
                        与时区有关
                        默认为NOT NULL
                        通常尽量使用timestamp
                        精度:秒
  • date:yyyy-MM-dd
  • time:HH:mm:ss
选择标识符 
  • 用来进行关联操作
  • 在其他表中作为外键
  • 整形通常是标识列的最后选择
  • 相关的表中使用相同的数据类型
  • 尽量避免字符串作为标识列,尤其是随机生成的字符串,(如:UUID)导致insert与select都很慢:
                  插入值被随机写到索引的不同位置,insert慢,容易导致页分裂,磁盘随机读取
                  辑上相邻的行被分布在磁盘和内存的不同地方,select慢
                  是MySQL查询缓存失效
                  如果需要存储UUID,则应将“-”去除
                          

四、数据库账号管理

相同

查询用户: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`.* TO `zs`@`%`这条赋权语句带来的权限

          revoke all on db_xiaoli.* from zs@'%';

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

  查看用户权限

          #命令:show grants for 用户名;

          show frants for 'zs'@'%';

不同

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;

 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;

 五、思维导图

这篇关于MySQL之四大引擎、建库建表以及账号管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568966

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提