前言
大家好,在这先问大家一个问题,在做项目中什么最重要,想必一定都知道了,那就是数据库。现在数据库有很多,例如: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 特点:
- 开源和免费:MySQL使用GNU通用公共许可证(GPL)进行发布,可以免费使用和分发。它也有商业许可证提供额外功能和支持。
- 跨平台支持:MySQL可以在多个操作系统上运行,包括Windows、Linux、Mac等。
- 容易使用:MySQL提供了完善的命令行工具和图形用户界面,使得数据库的创建、管理和查询变得简单易懂。
- 高性能:MySQL被设计为高性能的数据库系统,能够处理大量的数据和并发请求。
- 可扩展性:MySQL支持水平和垂直扩展,可以通过添加更多的服务器节点或增加硬件资源来应对数据量增长和负载增加。
- 存储引擎:MySQL支持多种存储引擎,最常见的是InnoDB和MyISAM。不同的存储引擎具有不同的特点和适用场景。
- 安全性:MySQL提供了各种安全措施,包括用户和权限管理、数据加密、网络安全等,以保护数据库的安全性。
1.3 用途:
- 网站开发:MySQL是构建网站和Web应用程序的首选数据库之一。它可以存储用户信息、文章、产品数据、日志等。通过与后端编程语言(如PHP、Python、Java)结合使用,开发人员可以轻松地创建动态和交互性的网站。
- 应用程序开发:MySQL是许多应用程序的后端数据库选择。无论是桌面应用程序、移动应用程序还是嵌入式系统,MySQL都可以提供可靠的数据存储和管理。
- 数据分析:MySQL可以存储和管理大量的数据,适合进行数据分析和报告生成。许多数据分析工具和业务智能平台支持MySQL作为数据源,可以进行数据挖掘、数据可视化和决策支持等任务。
- 日志记录和审计:MySQL可以记录系统事件、用户活动和操作日志,用于系统审计和故障排查。通过存储和分析日志数据,可以帮助发现潜在的问题和优化系统性能。
- 内部工具和管理系统:许多组织使用MySQL创建内部工具和管理系统,用于员工管理、库存管理、项目跟踪、客户关系管理等任务。
- 电子商务:MySQL被广泛用于电子商务网站和在线商店的开发,用于管理商品目录、客户订单、支付信息等。
- 社交媒体和应用: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' ]]
语法参数说明:
- 用户:指定创建用户账号,格式为
user_name'@'host_name
。这里的user_name
是用户名,host_name
为主机名,即用户连接 MySQL 时所用主机的名字。 - IDENTIFIED BY子句:用于指定用户密码。新用户可以没有初始密码,若该用户不设密码,可省略此子句。
- 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';
结束语
这期博客分享就到这里了,如果有老铁想了解更多的请关注后续博客发布,感谢三连一波。