Mysql之账号管理、建库以及四大引擎详解

这篇具有很好参考价值的文章主要介绍了Mysql之账号管理、建库以及四大引擎详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、MySql数据库引擎

1.1 什么是数据库引擎?

1.2 MySQL常见数据库引擎

1.2.1.InnoDB(MySQL默认引擎)

1.2.2.MyISAM

1.2.3.MEMORY(Heap)

1.3 存储引擎查看

二、建库

2.1.默认数据库介绍 

2.2.建库

2.3.查看数据库

2.4.删除数据库

三、账号管理

3.1.创建用户

3.1.1.创建用户并设置登陆密码

3.1.3.修改密码

3.2.查看用户

3.3.删除用户

3.4.用户授权

3.5.用户撤权

3.6.查看用户权限

面试题:


一、MySql数据库引擎

1.1 什么是数据库引擎?

        数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。

        不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎

        MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。

Mysql之账号管理、建库以及四大引擎详解,MySQL,mysql,数据库,缓存,linux

1.2 MySQL常见数据库引擎

1.2.1.InnoDB(MySQL默认引擎)

        InnoDB是事务型存储引擎,提供了对数据库ACID事务的支持,并实现了SQL标准的四种隔离级别,具有行级锁定(这一点说明锁的粒度小,在写数据时,不需要锁住整个表,因此适用于高并发情形)及外键支持(所有数据库引擎中独一份,仅有它支持外键)该引擎的设计目标便是处理大容量数据的数据库系统,MySQL在运行时InnoDB会在内存中建立缓冲池,用于缓存数据及索引。

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。InnoDB是默认的MySQL引擎

  • ACID事务

  1. 原子性(Atomicity):事务是一个原子性质的操作单元,事务里面的对数据库的操作要么都执行,要么都不执行。

  2. 一致性(Consistency):在事务开始之前和完成之后,数据都必须保持一致状态,必须保证数据库的完整性。也就是说,数据必须符合数据库的规则。

  3. 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

  4. 持久性(Durability):持久性也成为永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久的。

  • 四种隔离级别

    1.读未提交(Read Uncommitted):在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)

    2.读已提交(Read Committed):这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(NonrepeatableRead),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果

    3.可重复读(Repeatable Read):这是MySQL的默认事务隔离级别,同一事务的多个实例在并发读取数据时,会看到同样的数据。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。

    4.可串行化(Serializable):这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

隔离级别 脏读 不可重复读 幻读
Read Uncommitted 可能 可能 可能
Read Committed 不可能 可能 可能
Repeatable Read 不可能 不可能 可能
Serializable 不可能 不可能 不可能

何为脏读,幻读,不可重复读?

  • 脏读

脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

  • 不可重复读

不可重复读,有时候也会说成“读已提交”。什么意思呢,就是在一个事务内,多次读取同一个数据,却返回了不同的结果。实际上,这是因为在该事务间隔读取数据的期间,有其他事务对这段数据进行了修改,并且已经提交,就会发生不可重复读事故。

  • 幻读

幻读是指当事务不独立执行时,插入或者删除另一个事务当前影响的数据而发生的一种类似幻觉的现象。举个例子,某事务在检查表中的数据数count时,是10,过一段时间之后再查是11,这就发生了幻读,之前的检测获取到的数据如同幻觉一样。

出现幻读和不可重复读的原因很像,都是在多次操作数据的时候发现结果和原来的不一样了,出现了其他事务干扰的现象。但是,幻读的偏重点是添加和删除数据,多次操作数据得到的记录数不一样;不可重复读的偏重点是修改数据,多次读取数据发现数据的值不一样了。

1.2.2.MyISAM

        相比起InnoDB,没有提供对数据库事务的支持,不支持细粒度的锁(行锁)及外键,当表Insert与update时需要锁定整个表,因此效率会低一些,在高并发时可能会遇到瓶颈,但MyIsam引擎独立与操作系统,可以在windows及linux上使用。不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。

缺点:

  • 不能在表损坏后恢复数据

适用场景:

  • MyIsam极度强调快速读取

  • MyIsam表中自动存储了表的行数,需要时直接获取即可

  • 适用于不需要事物支持、外键功能、及需要对整个表加锁的情形

1.2.3.MEMORY(Heap)

        使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。 HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。 Memory同时支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多。

缺点:

  • 要求存储的数据是数据长度不变的格式,Blob和Text类型数据不可用(长度不固定)

  • 用完表格后表格便被删除

适用场景:

  • 那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地堆中间结果进行分析并得到最终的统计结果

  • 目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。可以通过参数max_heap_table_size控制Memory表的大小,限制Memory表的最大的大小

  • 数据是临时的,而且必须立即能取出用到,于是可存放在内存中

  • 存储在Memory表中的数据如果突然间丢失的话也没有太大的关系

1.3 存储引擎查看

  • 查询存储引擎

show engines ; 

Support列的值表示某种引擎是否能使用

SUPPORT列值 含义
YES 表示可以使用
NO 表示不能使用
DEFAULT 表示该引擎为当前默认的存储引擎
  • 查看默认引擎

SHOW VARIABLES LIKE 'default_storage_engine' ;

Mysql之账号管理、建库以及四大引擎详解,MySQL,mysql,数据库,缓存,linux

  • 创建表指定存储引擎

在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。

create table t_student

(

        sid int auto_increment primary key,

        sname varchar(20),

        sage int default 0

) engine=MyISAM;   #指定存储引擎,例如:MyISAM、InnoDB等等

二、建库

2.1.默认数据库介绍 

Mysql之账号管理、建库以及四大引擎详解,MySQL,mysql,数据库,缓存,linux

  • information_schema

information_schema提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”。) 换句换说,information_schema是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问权限等)

  • mysql

MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。

  • performance_schema

主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.7默认是开启的。

  • sys

MySQL 5.7 安装完成后会多一个 sys 数据库。sys 数据库主要提供了一些视图,数据都来自于performation_schema,主要是让开发者和使用者更方便地查看性能问题。

2.2.建库

在MySQL中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];

[]中的内容是可选的。语法说明如下:

  • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。

  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。

  • [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。

  • [DEFAULT] COLLATE:指定此数据库的默认排序规则。

示例

CREATE DATABASE IF NOT EXISTS test_db 
DEFAULT CHARACTER SET utf8 
DEFAULT COLLATE utf8_general_ci;

Mysql之账号管理、建库以及四大引擎详解,MySQL,mysql,数据库,缓存,linux

2.3.查看数据库

在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为:

SHOW DATABASES [LIKE '数据库名'];

语法说明如下:

  • LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。

  • 数据库名由单引号' '包围。

2.4.删除数据库

在 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:

DROP DATABASE [ IF EXISTS ] <数据库名>

语法说明如下:

  • <数据库名>:指定要删除的数据库名。

  • IF EXISTS:用于防止当数据库不存在时发生错误。

  • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

三、账号管理

3.1.创建用户

        MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。

3.1.1.创建用户并设置登陆密码

MySQL 提供了以下 3 种方法创建用户。

  1. 使用 CREATE USER 语句创建用户

  2. 在 mysql.user 表中添加用户

  3. 使用 GRANT 语句创建用户

  • 使用 CREATE USER 语句创建用户

可以使用 CREATE USER 语句来创建 MySQL 用户,并设置相应的密码。其基本语法格式如下:

CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]

参数说明如下:

  1. 用户:指定创建用户账号,格式为 user_name'@'host_name。这里的user_name是用户名,host_name为主机名,即用户连接 MySQL 时所用主机的名字。

  2. IDENTIFIED BY子句:用于指定用户密码。新用户可以没有初始密码,若该用户不设密码,可省略此子句。

  3. PASSWORD 'password':PASSWORD 表示使用哈希值设置密码,该参数可选。

示例:

CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';

3.1.3.修改密码

SET PASSWORD 语句可以用来重新设置其他用户的登录密码或者自己使用的账户的密码。使用 SET 语句修改密码的语法结构如下:

SET PASSWORD FOR 用户名 = PASSWORD ("rootpwd");

3.2.查看用户

#切换数据库
use mysql;
#查询用户信息
select host,user,authentication_string from user;

MySQL 5.7 版本不再使用 Password 来作为密码的字段,而改成了 authentication_string。

host参数值说明:

HOST列值 含义
% 匹配所有主机
localhost localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1 会通过TCP/IP协议连接,并且只能在本机访问
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1

3.3.删除用户

使用 DROP USER 语句删除用户的语法格式如下:

DROP USER <用户1> [ , <用户2> ]…

注意:用户的删除不会影响他们之前所创建的表、索引或其他数据库对象,因为 MySQL 并不会记录是谁创建了这些对象。

3.4.用户授权

在 MySQL 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句,其语法格式如下:

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]

参数说明:

  • priv_type 参数表示权限类型;

  • columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表;

  • database.table 用于指定权限的级别;

  • user 参数表示用户账户,由用户名和主机名构成,格式是“'username'@'hostname'”;

  • IDENTIFIED BY 参数用来为用户设置密码;

  • password 参数是用户的新密码。

WITH 关键字后面带有一个或多个 with_option 参数。这个参数有 5 个选项,详细介绍如下:

  • GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;

  • MAX_QUERIES_PER_HOUR count:设置每个小时可以允许执行 count 次查询;

  • MAX_UPDATES_PER_HOUR count:设置每个小时可以允许执行 count 次更新;

  • MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立 count 个连接;

  • MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的 count 个连接。

示例:

GRANT SELECT,INSERT ON *.* TO 'zking'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;

3.5.用户撤权

删除用户某些特定的权限,语法格式如下:

REVOKE priv_type [(column_list)]...
ON database.table
FROM user [, user]...

REVOKE 语句中的参数与 GRANT 语句的参数意思相同。其中:

  • priv_type 参数表示权限的类型;

  • column_list 参数表示权限作用于哪些列上,没有该参数时作用于整个表上;

  • user 参数由用户名和主机名构成,格式为“username'@'hostname'”。

示例1:取消用户的某些权限

REVOKE INSERT ON *.* FROM 'zking'@'localhost'

示例2:取消用户的所有权限

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'zking'@'localhost'

3.6.查看用户权限

使用 SHOW GRANTS FOR 语句查看权限。其语法格式如下:

SHOW GRANTS FOR 'username'@'hostname';

其中,username 表示用户名,hostname 表示主机名或主机 IP。

示例:

SHOW GRANTS FOR 'zking'@'localhost';

面试题:

Mysql之账号管理、建库以及四大引擎详解,MySQL,mysql,数据库,缓存,linux文章来源地址https://www.toymoban.com/news/detail-522372.html

1,
select sum(order_amt) from(
	select *,order_amt as xf from (
		select *,month(order_time)=1 as a from tb_user
	) b where b.a>0
) c where c.xf>20
 
2,
select count(*) from (
	select count(*) as a from tb_user where order_category='麻辣烫' or order_category='汉堡' group by user_id
) b where b.a
 
3,
select SUM(b.order_amt)  from tb_shop as a,tb_user as b where a.shop_id = b.shop_id GROUP BY a.db_team
 

到了这里,关于Mysql之账号管理、建库以及四大引擎详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL高级-存储引擎+存储过程+索引(详解01)

    目录 1.mysql体系结构  2.存储引擎 2.1.存储引擎概述 2.2.1.InnoDB 2.2.2.MyISAM 2.2.3.存储引擎选择 3.存储过程 3.1.存储过程和函数概述  3.2.创建存储过程 3.3.调用存储过程 3.4.查看存储过程 3.5.删除存储过程 3.6.语法 3.6.1.变量 3.6.2.if条件判断 3.6.3.传递参数 3.6.4.case结构 3.6.5.while循环 3.

    2024年02月13日
    浏览(41)
  • MySQL高级篇复盘笔记(一)【存储引擎、索引、SQL优化、视图、触发器、MySQL管理】

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 连接层

    2024年02月06日
    浏览(72)
  • SQL 50 题(MySQL 版,包括建库建表、插入数据等完整过程,适合复习 SQL 知识点)

    ① 本文整理了经典的 50 道 SQL 题目,文本分为 建库建表 、 插入数据 以及 SQL 50 题 这三个部分。 ② 这些题目许多博主也整理过,但本人不太了解这些题目具体的出处。第一次了解这些题目是本科期间老师出的题目。如果有网友知道这些题目的最原始出处,可以在评论评论区

    2024年02月07日
    浏览(40)
  • MySQL-四大类日志

    目录 🍁MySQL日志分为4大类 🍁错误日志 🍃修改系统配置 🍁二进制日志 🍃查看二进制日志 🍃删除二进制日志 🍃暂时停止二进制日志的功能 🍁事务日志(或称redo日志) 🍁慢查询日志:slow query log   🦐博客主页:大虾好吃吗的博客   🦐MySQL专栏:MySQL专栏地址        

    2023年04月08日
    浏览(39)
  • 【MySQL】· 一文了解四大子查询

    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL标量/单行子查询、列子/表子查询的讲解 ✨ 一、子查询概念 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入;在特定情况下,一个查询语句的条件需要另一个查询语句来获取,内层

    2024年02月10日
    浏览(36)
  • MySQL基础 — 多表查询以及事务管理

    一对一 ​ 多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率 ​ 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE) ​ 因为是一对一,所以需要设置唯一约束 一对多 ​ 在多的一方建立外键,指向一

    2024年02月07日
    浏览(46)
  • 【⑦MySQL】· 一文了解四大子查询

    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL标量/单行子查询、列子/表子查询的讲解 ✨ 一、子查询概念 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入;在特定情况下,一个查询语句的条件需要另一个查询语句来获取,内层

    2024年02月10日
    浏览(36)
  • 四大顶级开源网络管理工具详解

    随着网络方案的不断扩展与多元化走势,大量有线及无线设备开始成为网络体系不可或缺的组成部分,用户对网络监控工具的需求也随之持续走高。虽然功能丰富的商业产品比比皆是,但来自开源社区的强大方案仍然对监控工具市场的发展起到巨大的推动作用。 在本系列文章

    2024年02月09日
    浏览(38)
  • MySQL 篇-深入了解事务四大特性及原理

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍     文章目录         1.0 事务的概述         2.0 事务的特性         2.1 原子性         2.2 一致性         2.3 持久性         2.4 隔离性         2.4.1 脏读问题         2.4.2 不可重复读问题  

    2024年03月22日
    浏览(40)
  • 【面试题】MySQL 事务的四大特性说一下?

    事务是一个或多个 SQL 语句组成的一个执行单元,这些 SQL 语句要么全部执行成功,要么全部不执行,不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务的主要作用是保证数据库操作的一致性,即事务内的

    2024年04月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包