MYSQL 基础篇(零) 用户手册

MYSQL 基础篇 系列文章目录



前言概述

暂时忽略…


一般信息

关于手册

这是8.0.24版之前的MySQL数据库系统8.0版的参考手册。在本文中,参考发行版号(8.0。x)指出了MySQL 8.0的次要版本之间的差异。有关许可信息,请参阅法律声明。

由于MySQL 8.0与先前版本之间的许多功能和其他差异,因此本手册不适用于旧版的MySQL软件。如果您使用的是早期版本的MySQL软件,请参阅相应的手册。例如,《 MySQL 5.7参考手册》 涵盖了5.7系列的MySQL软件版本。

由于本手册仅供参考,因此不提供有关SQL或关系数据库概念的一般说明。它还不会教您如何使用操作系统或命令行解释器。

MySQL数据库软件正在不断开发中,并且参考手册也经常更新。该手册的最新版本可从 MYSQL文档 在线以可搜索的形式获得 。那里也有其他格式,包括可下载的HTML和PDF版本。


1.1 印刷和语法约定

当显示了要从特定程序中执行的命令时,该命令之前显示的提示指示要使用的命令。例如,shell> 表示您从登录外壳执行的命令, root-shell>与之类似,但应作为来执行root,并mysql> 表示您从mysql客户端程序执行的语句 :

shell> #type a shell command here
root-shell> #type a shell command as root here
mysql> #type a mysql statement here

在某些地区,可能会将不同的系统区分开来,以表明应在两个不同的环境中执行命令。例如,复制工作时的命令可能与前缀source和 replica:

source> #type a mysql command on the replication source here
replica> #type a mysql command on the replica here

该“shell”是您的命令解释器。在Unix上,这通常是诸如sh, csh或bash之类的程序。在Windows上,等效程序是command.com或 cmd.exe,通常在控制台窗口中运行。

输入示例中显示的命令或语句时,请勿键入示例中显示的提示。

数据库,表和列名称必须经常替换为语句。为了指示这样的取代是必要的,本说明书的用途db_name, tbl_name和 col_name。例如,您可能会看到类似以下的语句:

mysql> SELECT col_name FROM db_name.tbl_name;

SQL关键字不区分大小写,并且可以用任何大写字母书写。本手册使用大写字母。

在语法描述中,方括号(“ [”和 “ ]”)表示可选的单词或从句。例如,在以下语句中,它IF EXISTS是可选的:

DROP TABLE [IF EXISTS] tbl_name

当语法元素由多个替代项组成时,替代项由竖线(“ |”)分隔。当从一组的一个选择部件可以被选择,则将替换方括号(内列出的“ [” 和“ ]”):

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

当必须从一组选项中选择一个成员时,这些替代项会在大括号(“ {”和 “ }”)中列出:

{DESCRIBE | DESC} tbl_name [col_name | wild]

省略号(…)表示省略了语句的一部分,通常是为了提供更复杂语法的较短版本。例如, SELECT … INTO OUTFILE是SELECT语句形式的简写,该 语句的INTO OUTFILE后面还有一个子句。省略号还可以指示语句的前面的语法元素可以重复。在下面的示例中,reset_option可以给出多个 值,每个值后面的第一个值前都带有逗号:

RESET reset_option [,reset_option] ...

使用Bourne shell语法显示用于设置shell变量的命令。例如, 在Bourne shell语法中,设置CC 环境变量和运行configure命令的顺序如下所示:

shell> CC=gcc ./configure

如果使用的是csh或tcsh,则必须以不同的方式发出命令:

shell> setenv CC gcc
shell> ./configure

1.2 MySQL数据库管理系统概述

1.2.1什么是MySQL?

  • MySQL是一个数据库管理系统
  • MySQL数据库是关系型的
  • MySQL软件是开源的
  • MySQL数据库服务器非常快速,可靠,可扩展且易于使用
  • MySQL Server在客户端/服务器或嵌入式系统中运行
  • 可以使用大量的MySQL软件

1.2.2 MySQL的主要功能

  • 特权和密码系统,非常灵活和安全,并且可以进行基于主机的验证。
  • 连接服务器时,通过对所有密码通信进行加密来实现密码安全。
  • 支持大型数据库。我们将MySQL Server与包含5000万条记录的数据库一起使用。我们也知道使用MySQL Server的用户有200,000个表和大约5,000,000,000行。
  • 每个表最多支持64个索引。每个索引可以包含1到16列或部分列。InnoDB表的最大索引宽度为767字节或3072字节。MyISAM表的最大索引宽度为 1000字节。索引可使用的柱的前缀CHAR, VARCHAR, BLOB,或 TEXT列类型。
  • 客户端可以使用多种协议连接到MySQL Server:
    • 客户端可以在任何平台上使用TCP / IP套接字进行连接。
    • 在Windows系统上,如果在named_pipe启用系统变量的情况下启动服务器,则客户端可以使用命名管道进行连接 。如果在shared_memory启用系统变量的情况下启动,Windows服务器还支持共享内存连接 。客户端可以使用该–protocol=memory选项通过共享内存进行连接 。
    • 在Unix系统上,客户端可以使用Unix域套接字文件进行连接。
  • 可以使用–help 或-?选项调用MySQL程序以获得在线帮助。

1.2.3 MySQL的历史

暂不描述…


1.3 MySQL 8.0的新增功能

1.3.1 MySQL 8.0的新增功能

  • 数据字典
    MySQL现在合并了一个事务性数据字典,用于存储有关数据库对象的信息。在以前的MySQL版本中,字典数据存储在元数据文件和非事务表中。
  • 原子数据定义语句(Atomic DDL)
    原子DDL语句将数据字典更新,存储引擎操作和与DDL操作相关联的二进制日志写入操作组合到单个原子事务中。
  • 升级程序
    以前,在安装新版本的MySQL之后,MySQL服务器会在下次启动时自动升级数据字典表,此后,DBA有望 手动调用mysql_upgrade来升级mysql架构中的系统表 以及其他模型中的对象、架构,例如sys架构和用户架构。
    从MySQL 8.0.16开始,服务器执行以前由mysql_upgrade处理的任务。在安装新的MySQL版本之后,服务器现在将在下次启动时自动执行所有必要的升级任务,并且不依赖于DBA调用 mysql_upgrade。另外,服务器更新帮助表的内容( mysql_upgrade没做的事情)。新的 --upgrade服务器选项可控制服务器如何执行自动数据字典和服务器升级操作。
  • 安全性和帐户管理
    • mysql现在 ,系统数据库中的授权表是InnoDB (事务性)表。
    • 一个新的caching_sha2_password 身份验证插件可用。
  • 资源管理
    MySQL现在支持创建和管理资源组,并允许将服务器中运行的线程分配给特定的组,以便线程根据该组可用的资源执行。使用组属性可以控制其资源,以启用或限制组中线程的资源消耗。
  • 表加密管理
    现在可以通过定义和强制执行加密默认值来全局管理表加密。该 default_table_encryption 变量为新创建的模式和常规表空间定义加密默认值。DEFAULT ENCRYPTION创建模式时,也可以使用子句定义模式的加密默认值。默认情况下,表继承对其创建的模式或常规表空间的加密。通过启用 table_encryption_privilege_check 变量。当使用与设置不同的加密设置来创建或更改模式或常规表空间default_table_encryption 时,或者当使用与默认模式加密不同的加密设置来创建或更改表时,将进行特权检查 。 启用该 TABLE_ENCRYPTION_ADMIN 特权后,将允许覆盖默认的加密设置 table_encryption_privilege_check。
  • InnoDB增强功能
    • 每次值更改时,当前最大自动增量计数器值都会写入重做日志,并保存到每个检查点的引擎专用系统表中。这些更改使当前的最大自动增量计数器值在服务器重新启动后保持不变。
    • InnoDB现在 ,存储引擎使用MySQL数据字典,而不是其自己的特定于存储引擎的数据字典。
  • 从MySQL 8.0.21开始,使用DATA DIRECTORY子句在数据目录外部创建的表和表分区数据文件 仅限于已知的目录InnoDB。此更改允许数据库管理员控制在何处创建表空间数据文件,并确保可以在恢复期间找到这些数据文件。
  • 从MySQL 8.0.21开始,可以使用ALTER INSTANCE {ENABLE|DISABLE} INNODB REDO_LOG语法启用和禁用重做日志记录。此功能旨在将数据加载到新的MySQL实例中。禁用重做日志记录可以避免重做日志写入,从而有助于加快数据加载速度。
  • 未完待续…

1.3.2 MySQL 8.0中删除的功能

  • 未完待续…

1.4 在MySQL 8.0中添加,不建议使用或删除的服务器和状态变量及选项

  • 未完待续…

1.5 MySQL信息源

1.6 如何报告错误或问题

  • 未完待续…

2. 安装和升级MySQL

  • 未完待续…

3. 教程

本章通过显示如何使用mysql客户端程序创建和使用简单数据库来提供对MySQL的教程介绍。mysql(有时称为“终端监视器”或 简称为“ monitor ”)是一个交互式程序,使您能够连接到MySQL服务器,运行查询并查看结果。 mysql也可以在批处理模式下使用:将查询事先放在文件中,然后告诉 mysql执行文件的内容。这里介绍了使用mysql的两种方法。


4. MySQL程序

本章简要概述了Oracle Corporation提供的MySQL命令行程序。它还讨论了在运行这些程序时用于指定选项的常规语法。大多数程序具有特定于其自身操作的选项,但是所有选项的语法都相似。最后,本章提供了各个程序的更详细说明,包括它们可以识别的选项。


5. MySQL服务器管理

MySQL服务器(mysqld)是完成MySQL安装中大部分工作的主程序。本章概述了MySQL Server,并涵盖了常规服务器管理。


7. 备份和恢复

备份数据库很重要,这样您就可以恢复数据并重新启动并运行,以防出现系统崩溃,硬件故障或用户误删除数据等问题。在升级MySQL安装之前,备份也是必不可少的保障措施,它们可用于将MySQL安装转移到另一个系统或设置副本服务器。

7.1 备份和恢复类型

  • 物理(原始)与逻辑备份
    物理备份由存储数据库内容的目录和文件的原始副本组成。这种类型的备份适用于大型的重要数据库,这些数据库在出现问题时需要快速恢复。
    逻辑备份保存表示为逻辑数据库结构(CREATE DATABASE, CREATE TABLE语句)和内容(INSERT语句或定界文本文件)的信息。这种类型的备份适用于少量数据,您可以在其中编辑数据值或表结构,或在其他计算机体系结构上重新创建数据。

  • 联机与脱机备份
    在线备份是在MySQL服务器运行时进行的,以便可以从服务器获取数据库信息。停止服务器时,将进行脱机备份。这种区别也可以描述为“热”与 “冷”备份。一个“温暖”的备份是一个在服务器保持运行,但锁定,以防止当你从外部访问数据库文件修改数据。

  • 本地与远程备份
    本地备份是在运行MySQL服务器的同一主机上执行的,而远程备份是从其他主机执行的。对于某些类型的备份,即使输出是本地写在服务器上,也可以从远程主机启动备份。


7.2 数据库备份方式

  • 使用MySQL Enterprise Backup进行热备份
  • 使用mysqldump进行备份
    • 该mysqldump的程序可以进行备份。它可以备份各种表。
    • 对于InnoDB表,可以使用mysqldump–single-transaction选项 执行不对表进行任何锁定的在线备份 。
  • 通过复制表文件进行备份
  • 进行分隔文本文件备份
  • 通过启用二进制日志进行增量备份
  • 使用副本进行备份
  • 恢复损坏的表
    如果必须还原MyISAM已损坏的表,请先尝试使用REPAIR TABLEor myisamchk -r恢复它们 。这应该在所有情况下的99.9%中起作用。
  • 使用文件系统快照进行备份

13. SQL语句

  • 未完待续…

14. MySQL数据字典

  • 未完待续…

15. InnoDB存储引擎

15.1 InnoDB简介

InnoDB是一种兼顾了高可靠性和高性能的通用存储引擎。在MySQL 8.0中,InnoDB是默认的MySQL存储引擎。除非您配置了其他默认存储引擎,否则发出CREATE TABLE不带ENGINE= 子句的语句将创建一个InnoDB表。

  • 未完待续…

19. MySQL Shell

MySQL Shell是MySQL Server的高级客户端和代码编辑器。除了提供的类似于MySQL的SQL功能外, MySQL Shell还提供JavaScript和Python脚本功能,并包括与MySQL配合使用的API。MySQL Shell是可以单独安装的组件。

  • 未完待续…

21. InnoDB集群

  • 未完待续…

总结

未完待续…


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值