文章目录
- 数据库、数据库管理系统以及SQL之间的关系
- 关系型数据库与非关系型数据库
- MySQL程序
- 系统变量
- 系统状态变量
- SQL模式
- MySQL数据目录
- 手册语法约定
数据库、数据库管理系统以及SQL之间的关系
名称 | 说明 |
---|---|
数据库(Database) | 即存储数据的仓库,其本质是一个文件系统。它保存了一系列有组织的数据。 |
数据库管理系统(Database Management System) | 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。 |
结构化查询语言(Structured Query Language) | 专门用来与数据库通信的语言。 |
数据库管理系统可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。数据库管理系统、数据库和表的关系如图所示:
关系型数据库与非关系型数据库
关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格式),它以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了一个库。表与表之间的数据记录存在关系。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。因此关系型数据库,就是建立在关系模型基础上的数据库。SQL 就是关系型数据库的查询语言。非关系型数据库,可看成关系型数据库的阉割版本,它基于键值对存储数据,不需要经过SQL层的解析。NoSQL 一词泛指非关系型数据库,常用的非关系型数据库如下:
类型 | 说明 | 代表 |
---|---|---|
键值型数据库 | 键值型数据库通过 Key-Value 键值的方式来存储数据,优点是查找速度快,缺点是无法像关系型数据库一样使用条件过滤。键值型数据库典型的使用场景是作为 内存缓存 | Redis |
文档型数据库 | 文档型数据库可存放并获取文档,在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。 | MongoDB |
搜索引擎数据库 | 虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。 | Elasticsearch |
图形数据库 | 图形数据库是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。 | Neo4J |
MySQL程序
MySQL包括许多不同的程序。本节提供了它们的简要概述。大多数MySQL发行版包括所有这些程序,除了那些特定于平台的程序。
- 每个MySQL程序都有许多不同的选项。大多数程序都提供
--help
选项,您可以使用它来获取程序不同选项的描述。 - 可以通过在命令行或选项文件中指定选项来覆盖MySQL程序的默认选项值。
守护进程mysqld(即MySQL服务器)是完成MySQL大部分工作的主要程序。以下几个相关的脚本,帮助您启动和停止服务器:
- mysqld_safe:服务器启动脚本。mysqld_safe尝试启动mysqld。
- mysqld_multi:一个服务器启动脚本,可以启动或停止系统上安装的多个服务器。
连接MySQL服务器的MySQL客户端程序:
- mysql:用于交互式输入SQL语句或以批处理模式从文件执行SQL语句的命令行工具。
- mysqldump:将MySQL数据库转储为SQL、文本或XML文件的客户端。
- mysqlimport:使用
LOAD DATA
将文本文件导入各自表的客户端。 - mysqlpump:将MySQL数据库转储为SQL文件的客户端。
MySQL管理和实用程序:
- mysqlbinlog:从二进制日志中读取语句的实用程序。二进制日志文件中包含的已执行语句的日志可用于帮助从崩溃中恢复。
- mysqldumpslow:读取和总结慢速查询日志内容的实用程序。
…
系统变量
MySQL服务器维护着很多影响其运行的系统变量。大多数系统变量可以在服务器启动时通过命令行或选项文件设置。它们中的大多数都可以在运行时使用SET
语句动态更改,这使得您可以在不停止和重新启动服务器的情况下修改服务器的操作。有些变量是只读的,它们的值由系统环境、MySQL在系统上的安装方式或编译MySQL时使用的选项决定。大多数系统变量都有默认值。
系统变量存在两种作用域。全局变量影响服务器的整体操作。会话变量影响其对各个客户端连接的操作。给定的系统变量可以同时具有全局值和会话值。全局系统变量和会话系统变量的关系如下:
- 当服务器启动时,它将每个全局变量初始化为默认值。这些默认值可以通过在命令行或选项文件中指定的选项来更改。
- 服务器还为连接的每个客户机维护一组会话变量。客户端的会话变量在连接时使用相应的全局变量的当前值初始化。例如,客户端的SQL模式由会话
sql_mode
值控制,该值在客户端连接到全局sql_mode
值时初始化。
系统状态变量
MySQL服务器维护许多状态变量,这些变量提供有关其运行的信息。你可以使用SHOW [GLOBAL | SESSION] STATUS
语句查看这些变量和它们的值。可选的GLOBAL
关键字聚合所有连接的值,SESSION
显示当前连接的值。
SQL模式
MySQL服务器可以在不同的SQL模式下运行,并且可以根据sql_mode
系统变量的值为不同的客户端应用不同的SQL模式。DBA可以设置全局SQL模式以匹配站点服务器操作需求,每个应用程序可以将其会话SQL模式设置为自己的需求。
模式影响MySQL支持的SQL语法和它执行的数据验证检查。这使得在不同的环境中使用MySQL以及与其他数据库服务器一起使用MySQL变得更加容易。
MySQL数据目录
MySQL服务器管理的信息存储在一个名为data目录的目录下。以下列表简要描述了通常在data目录中找到的项目:
- data目录子目录。data目录的每个子目录是一个数据库目录,对应于服务器管理的数据库。所有MySQL安装都有一定的标准数据库:
- mysql目录对应于mysql系统表,其中包含mysql服务器运行时所需的信息。该数据库包含数据字典表和系统表。
- performance_schema目录对应于Performance Schema,它提供用于在运行时检查服务器内部执行的信息
- sys目录对应于sys表,它提供了一组对象来帮助更容易地解释性能模式信息。
- ndbinfo目录对应于ndbinfo数据库,该数据库存储特定于NDB Cluster的信息
其他子目录对应于用户或应用程序创建的数据库。
手册语法约定
方括号[]
表示可选词或语句,例如,在下面的语句中,IF EXISTS
是可选的:
DROP DTABLE [IF EXISTS] tab1_name
当一个语法元素由多个备选项组成时,这些备选项由竖条|
分隔。当可以从一组选项中选择一个成员时,备选项列在方括号内:
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
当必须从一组选项中选择一个成员时,备选项在大括号{}
中列出:
{DESCRIBE | DESC} tbl_name [col_name | wild]
省略号…
表示省略语句的某一部分,通常是为了提供更复杂语法的更短版本。例如,SELECT…INTO OUTFILE
是SELECT
语句形式的简写。省略号还可以表示语句的前一个语法元素可以重复。在下面的示例中,可以给出多个reset_option
值,每个值在第一个值之后以逗号开头:
RESET reset_option [,reset_option] ...