Mysql数据库入门

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: Mysql数据库入门

前言

大家好,在这先问大家一个问题,在做项目中什么最重要,想必一定都知道了,那就是数据库。现在数据库有很多,例如:SqlServer、Oracle、Mysql等等,今天我要给大家带来的是Mysql数据库基础知识的分享。让我们跟着思维导图一起来看看吧。

1. MySql简介

1.1 什么是Mysql及Mysql的历史

MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发并于2000年起发布。后来,MySQL AB被Sun Microsystems收购,随后Sun又被Oracle收购,因此MySQL现在是Oracle Corporation的一部分。

1.2 特点:

  1. 开源和免费:MySQL使用GNU通用公共许可证(GPL)进行发布,可以免费使用和分发。它也有商业许可证提供额外功能和支持。
  2. 跨平台支持:MySQL可以在多个操作系统上运行,包括Windows、Linux、Mac等。
  3. 容易使用:MySQL提供了完善的命令行工具和图形用户界面,使得数据库的创建、管理和查询变得简单易懂。
  4. 高性能:MySQL被设计为高性能的数据库系统,能够处理大量的数据和并发请求。
  5. 可扩展性:MySQL支持水平和垂直扩展,可以通过添加更多的服务器节点或增加硬件资源来应对数据量增长和负载增加。
  6. 存储引擎:MySQL支持多种存储引擎,最常见的是InnoDB和MyISAM。不同的存储引擎具有不同的特点和适用场景。
  7. 安全性:MySQL提供了各种安全措施,包括用户和权限管理、数据加密、网络安全等,以保护数据库的安全性。

1.3 用途:

  1. 网站开发:MySQL是构建网站和Web应用程序的首选数据库之一。它可以存储用户信息、文章、产品数据、日志等。通过与后端编程语言(如PHP、Python、Java)结合使用,开发人员可以轻松地创建动态和交互性的网站。
  2. 应用程序开发:MySQL是许多应用程序的后端数据库选择。无论是桌面应用程序、移动应用程序还是嵌入式系统,MySQL都可以提供可靠的数据存储和管理。
  3. 数据分析:MySQL可以存储和管理大量的数据,适合进行数据分析和报告生成。许多数据分析工具和业务智能平台支持MySQL作为数据源,可以进行数据挖掘、数据可视化和决策支持等任务。
  4. 日志记录和审计:MySQL可以记录系统事件、用户活动和操作日志,用于系统审计和故障排查。通过存储和分析日志数据,可以帮助发现潜在的问题和优化系统性能。
  5. 内部工具和管理系统:许多组织使用MySQL创建内部工具和管理系统,用于员工管理、库存管理、项目跟踪、客户关系管理等任务。
  6. 电子商务:MySQL被广泛用于电子商务网站和在线商店的开发,用于管理商品目录、客户订单、支付信息等。
  7. 社交媒体和应用:MySQL可以用于存储和管理社交媒体平台的用户信息、帖子、评论和关系数据等。许多社交媒体应用程序都使用MySQL来处理庞大的用户基础和活动数据。

2. Mysql常见的数据引擎

2.1 InnoDB

2.1.1 概念:

InnoDB是MySQL的默认存储引擎,支持事务和行级锁定。

2.1.2 优势:

它提供了强大的数据完整性、并发性能和容错能力。

2.1.3 适用范围:

InnoDB适用于大多数应用程序,特别是需要事务支持和高并发性的场景。

2.2 MyISAM

2.2.1 概念:

MyISAM是MySQL的另一个常见的存储引擎,它不支持事务和行级锁定。

2.2.2 优势:

它适合于读取密集型应用,如数据仓库、网站缓存和只读表。MyISAM具有较低的存储和维护成本。

2.2.3 不足:

在并发写入和崩溃恢复方面不如InnoDB稳定。

2.3 Memory

2.3.1 优势:

Memory引擎(也称为Heap引擎)将数据存储在内存中,速度非常快。

2.3.2 适用范围:

它适用于临时表、缓存和其他临时数据存储需求。

2.3.3 不足:

一旦服务器关闭,存储在Memory引擎中的数据将丢失。

2.4 Archive

2.4.1 优势:

Archive引擎压缩数据以提供更高的存储效率。

2.4.2 适用范围 :

它适合于存储和归档大量历史数据,但不支持事务和索引。

2.5 其他

数据引擎 说明
CSV CSV引擎允许将数据存储为逗号分隔的值(CSV)格式。它适用于数据交换和简单数据加载。
NDB Cluster NDB Cluster引擎(也称为MySQL Cluster)是专为高可用性和分布式数据库集群设计的。它提供了数据分区和复制,可以实现高可扩展性和故障容忍性。

3. MySql数据库

3.1 默认数据库介绍

  • 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,主要是让开发者和使用者更方便地查看性能问题。

3.2 数据库的基本使用

3.2.1 新建数据库
方法一:

方法二:
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 YX 
DEFAULT CHARACTER SET utf8 
DEFAULT COLLATE utf8_general_ci;

新建查询,输入代码选择执行,然后刷新即可。

3.2.2 查看数据库

查看当前用户权限范围以内的数据库

代码:

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

语法说明如下:

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

案例

SHOW DATABASES

3.2.3 删除数据库
方法一:

方法二:

编写sql语句

代码

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

语法说明如下:

  • <数据库名>:指定要删除的数据库名。
  • IF EXISTS:用于防止当数据库不存在时发生错误。
  • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

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

4 账号管理

4.1 创建用户

方法一:

方法二:使用 CREATE USER 语句创建用户
语法:
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 'yx'@'localhost' IDENTIFIED BY '123456';

4.2 查看用户

方法一:

方法二:编写mysql语句
#切换数据库
use mysql;
#查询用户信息
select host,user,authentication_string from user;

执行结果

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

4.3 删除用户

方法一:

方法二:编写mysql语句

语法:

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

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

4.5 用户权限管理

4.5.1 用户授权
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 用户账户,由用户名和主机名构成,格式
IDENTIFIED BY 用来为用户设置密码;
password 用户的新密码。
WITH 关键字后面带有一个或多个 with_option 参数说明
参数 说明
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 'yx'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;

前提要有这个用户

4.5.2 用户撤销权限

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

参数说明借鉴上面的参数说明表

示例1:取消用户的某些权限
REVOKE INSERT ON *.* FROM 'yx'@'localhost'
示例2:取消用户的全部权限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM  'yx'@'localhost'

4.5.3 查看用户权限

语法
SHOW GRANTS FOR 'username'@'hostname';
参数说明
参数 说明
username 用户名
hostname 主机名或主机 IP
示例
SHOW GRANTS FOR 'yx'@'localhost';

st’

##### 示例2:取消用户的全部权限
```mysql
REVOKE ALL PRIVILEGES, GRANT OPTION FROM  'yx'@'localhost'

4.5.3 查看用户权限

语法
SHOW GRANTS FOR 'username'@'hostname';
参数说明
参数 说明
username 用户名
hostname 主机名或主机 IP
示例
SHOW GRANTS FOR 'yx'@'localhost';

结束语

这期博客分享就到这里了,如果有老铁想了解更多的请关注后续博客发布,感谢三连一波。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
23天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
41 4
SpringBoot入门(4) - 添加内存数据库H2
|
2月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
86 0
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
317 0
|
25天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
29 2
SpringBoot入门(4) - 添加内存数据库H2
|
18天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
58 13
|
12天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
32 4
|
26天前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
93 6
|
1月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
113 2
|
28天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)