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

2024-01-03 10:03:18

目录

一、数据库存储引擎

1.1 存储引擎查看

1.2四大引擎

1.2.1 InnoDB

1.2.2?MyISAM

1.2.3?MEMORY

1.2.4?Aichive

二、数据库管理

2.1 元数据库简介

2.2 元数据库分类

2.2.1 information_schema

2.2.2 mysql

2.2.3 performance_schema

2.3 相关操作

数据库的增删改查

2.4 MySQL库

权限相关

三、数据库表管理

3.1 三大范式

3.1.1 列不可再分(原子性)

3.1.2 主键约束

3.1.3 外键约束

3.2 基本数据类型

3.2.1 优化原则

1.更小通常更好

2. 简单就好

3. 尽量避免NULL

3.2.2 分类

1.整型

2.实数(带有小数点)

3.字符串

4. text&blob

5.日期时间

6. 选中标识符

四、数据库账号管理

4.1 相同

4.1.1 查询用户

4.1.2 查看用户常用信息

4.1.3 删除用户(慎用)

4.1.4 操作权限

4.2 不相同

4.2.1 5.7版本

4.2.2 8.0版本

五、思维导图


一、数据库存储引擎

1.1 存储引擎查看

(1)命令:

????????SHOW ENGINES

(2)support字段说明:

? ? ? ? 1、default为默认的引擎

????????2、为YES表示可以使用

? ? ? ? 3、为NO表示不能使用

1.2四大引擎

1.2.1 InnoDB

(1)使用场景:

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

(2)特点:

? ? ? ? 1.修改快,支持事务 --------行锁

? ? ? ? 2.存储限制:64TG

? ? ? ? 3.事务支持:支持事务

1.2.2?MyISAM

(1)使用场景:

????????大量查询,很少修改的场景

(2)特点:

? ? ? ? 1.强调了快速读取操作

? ? ? ? 2.存储限制:256TG

? ? ? ? 3.事务支持:不支持事务

1.2.3?MEMORY

(1)使用场景:

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

(2)特点:

? ? ? ? 1.所有的数据都保存在内存中,一旦服务器重启,所有memory存储引擎的表数据会消失但是表结构会保存下来

? ? ? ? 2.存储限制:取决于RAM(随机存储器)

? ? ? ? 3.事务支持:不支持事务

1.2.4?Aichive

(1)使用场景:

???????在日志和数据采集的时候可以使用

(2)特点:

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

? ? ? ? 2.archive表比MySAM表要小约75%,比支持事务处理的InnoDB表小约83%

? ? ? ? 3.不支持索引(自增ID列除外)

二、数据库管理

2.1 元数据库简介

记录MySQL自身数据的数据库

2.2 元数据库分类

2.2.1 information_schema

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

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

2.2.2 mysql

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

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

2.2.3 performance_schema

用于mysql是监控数据的存放

2.3 相关操作

数据库的增删改查

(1)use数据库名

(2)create database 数据库名

(3)show database;

(4)drop database 数据库名

2.4 MySQL库

权限相关

(1)user表(用户层权限)

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

(3)tables_priv表(表层权限)

(4)columns_priv表(字段层权限)

三、数据库表管理

3.1 三大范式

3.1.1 列不可再分(原子性)

例如:湖南省长沙市望城区中南林业科技大学涉外学院

3.1.2 主键约束

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

3.1.3 外键约束

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

3.2 基本数据类型

3.2.1 优化原则

1.更小通常更好

(1)更小通常更快

(2)更小的磁盘空间、内存、CPU缓存

(3)更少的CPU周期

2. 简单就好

(1)整型比字符串操作代价更小

(2)用时间类型表示日期(date 、datetime等)而不用字符串

3. 尽量避免NULL

(1)NULL为列的的默认值,但除非确实需要,应尽量避免使用NULL
(2)尽量指定列为NOT NULL,特别是需要索引的列

(3)查询中包括有NULL的类,MySQL更难优化

? ? ? ? (3.1)不利于使用索引

? ? ? ? (3.2)索引统计更复杂

? ? ? ? (3.3)值比较更复杂

(4)用整型值而不是字符串表示IP地址

? ? ? ? (4.1)INET_ATON()

? ? ? ? (4.2)INET_NTOA()? ??

3.2.2 分类

1.整型

(1)tinyint 8位(-128~127)

(2)smallint 16 位 (-32768~32767)

(3)mediumint 24位 (-8388608~8388607)

(4)int 32位 大约正负21亿

(5)bigint 64 位

2.实数(带有小数点)

(1)float 4个字节

(2)double 8个字节

(3)decimal 最多允许65个数字

3.字符串

(1)char?

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

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

(2)varchar

? ? ? ? 比定长类型节约空间

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

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

4. text&blob

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

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

4.1 text存储字符串数据

(1)tinytext

(2)smalltext

(3)mediumtext

(4)text

(5)longtext

4.2 blob存储二进制数据

(1)tinyblob

(2)smallblob

(3)mediumblob

(4)blob

(5)longblob

5.日期时间

5.1 detetime

(1)精度:秒

(2)与时区无关,8个字节存储空间

(3)范围:1001至9999年

5.2 timetamp

(1)保存1970年1月饼1月1日午夜以来的秒数

(2)占用4个字节存储课件

(3)范围:1970年至2038年

(4)与时区有关

(5)默认为NOT NULL

(6)通常尽量使用timestamp

(7)精度:秒

5.3 date

yyyy-MM-dd

5.4 time

HH.mm.ss

6. 选中标识符

(1)用来进行关联操作

(2)在其他表中作为外键

(3)整型通常是标识列的最好选择

(4)相关的表中使用相同的数据类型

(5)尽量避免字符串作为标识列,尤其是随机生成的字符串,

(如:UUID)导致insert与select都很慢?
(5.1)插入值随机写到索引的不同位置,insert慢,容易导致分裂,磁盘随机读取

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

(5.3)是MySQL查询缓存失效

(5.4)如果需要存储UUID,则应将“_”去除

四、数据库账号管理

4.1 相同

4.1.1 查询用户

SELECT * FROM USER

4.1.2 查看用户常用信息

select host,user from user;

4.1.3 删除用户(慎用)

drop user 用户名;

drop user ls;

4.1.4 操作权限

(1)设置权限

????????grant privileges on databasename.tablename to username@'host';

(2)撤销权限

????????revoke privileges on databasename. tablename from username@'host';

????????注:revolke只能回收grants列表中更小的权限

(3)查看用户权限

????????show grants for 用户名;

????????如:show grants for 'zs'@'%'

4.2 不相同

4.2.1 5.7版本

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

????????create user 用户名 identitied by '密码'

(2) 修改密码

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

刷新权限:flush privileges;

4.2.2 8.0版本

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

? ? ? ? (用户名密码创建需要分开)

????????create user 同户名;

(2) 修改密码

? ? ? ?ALTER USER 'ls'@'%' IDENTIFIED WITH mysql_native_password BY '123456'?

????????刷新权限:flush privileges;

五、思维导图

文章来源:https://blog.csdn.net/2201_75526942/article/details/135347672
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。