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

2024-01-03 11:44:10

目录

数据库存储引擎

简介

?存储引擎得查看

?support字段说明?

InnoDB

MyISAM

MEMORY

Archive

数据库管理

元数据库简介

元数据库分类?

相关操作

?MySQL库

?数据表管理

三大范式

基本数据类型

优化原则

整形

实数

字符串?

text&blob

日期类型?

选中标识符

数据库账号管理?

查询用户

查看常用的用户信息

权限操作

设置权限?

思维导图

?


数据库存储引擎

简介

是一种用于存储、管理和检索数据的软件程序,它负责在数据库中存储数据、执行查询和管理数据的存取。存储引擎通过将数据存储在磁盘上,并提供一组API来访问和操作数据,从而实现数据库的持久化存储和高效的数据查询功能。常见的数据库存储引擎有InnoDB、MyISAM、MongoDB、SQLite等。不同的存储引擎具有不同的特性和适用场景,可以根据实际需求选择合适的存储引擎来搭建数据库系统。

?存储引擎得查看

? 命令:SHOW ENGINES

?support字段说明?

1.default为默认引擎

2.YES则可以使用

3.NO则不可以使用

InnoDB

1.使用场景:适合需要支持事务处理、具有高并发读写需求的数据库应用,如电子商务平台、社交网络应用等。

2.特点:支持事务处理、具有较高的并发性能、支持外键约束、具有崩溃恢复功能。

3.存储限制:64GB

4.事务支持:支持事务

MyISAM

1.使用场景:适合用于读写操作相对平衡的应用程序,如博客、新闻网站等。

2.特点:不支持事务,表级锁定,不支持外键约束,适合于静态和频繁读取的数据。

3.存储限制:256GB

4.事务支持:不支持事务

MEMORY

1.使用场景:MEMORY存储引擎适用于需要快速读取和操作临时数据的场景,如缓存、临时表等。

2.特点:MEMORY存储引擎将表的数据存储在内存中,因此读取速度非常快,适合于对读性能要求较高的应用。它支持事务处理,但是在服务器重启或崩溃时,所有的数据会丢失。MEMORY存储引擎不支持外键约束和崩溃恢复功能,同时对于数据的存储和访问没有进行磁盘IO操作,因此比其他存储引擎更适合处理小型数据集。

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

事务支持:不支持事务

Archive

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

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

archive表比M有ISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%

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

数据库管理

元数据库简介

元数据库是指存储关于数据库结构和元数据的数据库。它记录了数据库中的表、列、约束、视图、索引等对象的定义和属性信息。元数据是描述数据的数据,用于描述数据库中的数据定义、结构和关系。元数据库通过存储和管理元数据信息,可以提供对数据库的管理、查询和分析。

元数据库的主要作用是支持数据库的管理和开发。它可以用于数据字典的管理,即记录和维护数据库中各个对象的定义、注释和属性等信息。元数据库还可用于数据库设计和开发工具,在开发过程中可以参考和操作元数据,提高数据库开发的效率和一致性。此外,元数据库还可以用于数据分析和数据仓库的构建,通过分析元数据信息,可以揭示数据之间的关系和特征,为数据分析和决策提供支持。

元数据库分类?

1.information_schema:信息数据库,保存MySQL所维护的其他数据库信息 .例如:数据库名,数据库的表,表栏的数据类型于访问权限等

2.MySQL:核心数据库,主要负责存储数据库用户,权限设置,关键字等.MySQL自己需要使用的控制和信息管理.

3.performance_schema:用于MySQL的监控数据的存放

相关操作

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

1.use数据库名

2.create database? if not exists 数据库名 degaut charset utf8 collate utf8_general_ci;

3.show database

3.drop database 数据库名

?MySQL库

权限相关的表

1.user表(用户层权限)

权限:his oa 物流

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

权限:患者记录表, 门诊卡表,看病流程表

3.tables_priv表(表层权限)

权限:增加,删除,修改,查询,创表,删除表

4.columns_priv表(字段层权限)

权限:患者id,患者姓名,患者年龄

?数据表管理

三大范式

  1. 第一范式(1NF): 确保每列都包含原子性数据,不可再分。每行都有唯一标识(主键)。

  2. 第二范式(2NF): 确保表符合1NF,所有非主键列完全依赖于主键,避免部分依赖。

  3. 第三范式(3NF): 确保表符合2NF,非主键列之间不存在传递依赖,消除冗余,提高数据一致性。

基本数据类型

优化原则

  1. 选择最小存储类型: 选择能够满足需求的最小数据类型,以节省存储空间。例如,使用INT而不是BIGINT,除非需要更大范围的数值。

  2. 避免不必要的精度: 选择适当的数值类型,不要过度精确。例如,如果只需要整数,就不需要使用浮点数。

  3. 选择合适的字符类型: 对于存储文本,选择适当长度的字符类型,避免使用过长的VARCHAR

  4. 日期和时间类型的选择: 使用适当的日期和时间类型,避免使用过于复杂或不必要的类型。

  5. 避免使用过多的NULL: NULL值需要额外的存储空间,尽量设计表结构时避免过多的NULL,使用默认值或其他方法替代。

  6. 考虑性能和查询效率: 在选择数据类型时,也要考虑数据库引擎的性能和查询效率,有时使用合适的数据类型可以提高数据库操作的速度。

整形

1.tinyint8位(-128-127)

2.smallint 16位(-32768-32767)

3.mediumint24位(-8388608-8388607)

4.int 32位 大约正负21亿

5.bigint 64位

实数

float 4个字节

double 8个字节

decimal 最多允许65个字节

字符串?

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

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

2.varchar:比定长类型节约空间

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

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

text&blob

1.text存储字符数据:tinytext,?smalltext,mediumtext,text,longtext

2.blob存储二进制数据:tinyblob,smallblob,mediumtext,text, longblod

日期类型?

datetime:精度:秒

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

范围:1001-9999年?

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

占用4个字节存储空间

范围:1970-2038

与时区有关

默认为NOT NULL

通常尽量使用timestamp?

精度:秒

?data:yyyy-mm-dd

time:hh.mm.ss?

选中标识符

用来进行关联操作

在其他表中做为外键

整型通常是标识列的最好选则

相关的表中使用时间的数据类型?

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

数据库账号管理?

查询用户

SELECT*FROM USER

?

查看常用的用户信息

select host user from user?

权限操作

设置权限?

1.授予特定数据库的所有表的SELECT权限

GRANT SELECT ON database_name.* TO 'username'@'hostname';

2.授予特定数据库的所有表的SELECT和INSERT权限

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';

3.授予特定表的SELECT和INSERT权限

GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'hostname';

4.授予所有数据库的所有表的SELECT、INSERT和UPDATE权限

GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname';

5.撤销特定数据库的所有表的SELECT权限

REVOKE SELECT ON database_name.* FROM 'username'@'hostname';

6.撤销特定表的SELECT和INSERT权限

REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'hostname';

7.授予登录和刷新权限

GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname' WITH GRANT OPTION;

8.限制特定IP地址的访问

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'specific_ip_address';

9.授予所有数据库的所有表的权限,并设置密码

GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname' IDENTIFIED BY 'password';

10.更改已存在的用户的密码

ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';

思维导图

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