博学而笃志,切问而近思
文章目录
- 数据库简介
- 服务器、数据库以及表的关系
- 连接数据库
- 数据库操作命令
- 创建数据库
- 查看数据库创建语句
- 查看数据库
- 使用数据库
- 修改数据库
- 删除数据库
- 数据库字符集和校验规则
- 查看系统默认字符集
- 查看系统默认校验规则
- 查看数据库支持的字符集
- 查看数据库支持的字符集校验规则
- 数据库的备份与恢复
- 备份
- 恢复
- 总结
数据库简介
数据库是用于存储、管理和检索数据的系统。它可以是一个简单的表格或一个复杂的系统,允许用户以结构化方式组织、访问和管理数据。数据库可以采用不同的模型和类型,其中常见的包括关系型数据库(如MySQL、PostgreSQL、SQL Server)、NoSQL数据库(如MongoDB、Cassandra)以及内存数据库(如Redis)。
关系型数据库使用表格的形式来存储数据,这些表格之间可以建立关系,便于数据的查询和管理。NoSQL数据库则更加灵活,可以处理非结构化或半结构化的数据,适用于大规模数据和分布式环境。
数据库的优势包括数据的持久性、数据的结构化存储、数据的高效检索和处理、数据的安全性以及多用户之间的数据共享。它们被广泛应用于各种领域,包括企业管理、电子商务、医疗保健、科学研究等。
数据库管理系统(DBMS)是用于管理数据库的软件,它负责数据的存储、检索、更新和管理,同时提供了一些安全性和数据完整性的机制,确保数据的一致性和可靠性。
数据库是计算机科学和信息技术领域中的关键概念,对于数据的有效管理和利用至关重要。不同类型的数据库和DBMS可根据具体需求选择,以满足不同规模和类型的数据管理要求。并且数据库的水平也是衡量一个程序员水平的重要指标之一。
服务器、数据库以及表的关系
在数据库管理中,通常有一个层次结构,其中包括服务器(Server)、数据库(Database)和表(Table)之间的关系,这个层次结构用来组织和管理数据。
服务器通常是一个物理或虚拟的计算机,它托管了一个或多个数据库实例,数据库服务器负责处理客户端请求,执行数据库操作,并确保数据的安全性和可用性。服务器可以运行数据库管理系统,如MySQL、Oracle、SQL Server等,以提供数据库服务。
数据库是服务器上的一个独立存储单元,它包含相关的数据表、视图、存储过程、触发器等数据库对象。数据库用来组织数据,通常按照应用程序或数据类型进行划分,以便管理和维护数据的结构和关系。不同数据库之间是相互隔离的,每个数据库有自己的用户权限和访问控制。
表是数据库中的主要数据存储结构,它是一个由行和列组成的二维数据结构。表用来存储实际数据记录,每一行代表一个数据记录,每一列代表一种数据类型。表具有定义的结构,包括列名、数据类型和约束,以确保数据的一致性和完整性。表通常用于存储和组织特定类型的数据,如用户信息、订单、产品信息等。
关系数据库的核心概念是表,表内的数据可以根据键值(通常是主键)之间的关系进行查询和连接。多个表之间的关系可以通过外键建立,以支持复杂的数据查询和数据关联。而服务器托管一个或多个数据库,每个数据库包含一个或多个表,表中存储了实际数据。这种层次结构有助于组织和管理数据,使其易于访问和维护。不同的数据库管理系统可能有不同的术语和概念,但这种层次结构的基本原则通常是相似的。
连接数据库
当安装好了MySQL数据库并启动后,我们可以使用命令mysql -h 127.0.0.1 -P 3306 -u root -p
去连接上数据库。该命令解析如下:
命令 | 含义 |
---|---|
-h 127.0.0.1 | 指定要连接的 MySQL 服务器的主机名或 IP 地址。在这里,127.0.0.1 表示本地主机,也就是连接到运行在本地计算机上的 MySQL 服务器。 |
-P 3306 | 指定 MySQL 服务器的端口号。MySQL 默认的端口号是 3306,所以这里的 -P 参数是可选的,如果使用默认端口,可以省略这个参数。 |
-u root | 指定要用来连接到 MySQL 服务器的用户名。在这里,root 是 MySQL 中一个具有高级权限的管理员用户。你也可以用其他有效的用户名。 |
-p | 这个参数告诉 MySQL 客户端在连接时提示你输入密码。在运行命令后,你需要输入与指定用户(这里是 root)相关联的密码,然后按 Enter 键。 |
当你运行这个命令后,会连接到本地 MySQL 服务器,然后需要输入密码来完成连接。如果密码正确,你将进入 MySQL 命令行客户端,可以执行数据库操作。
其中参数
-h
和-P
是可以省略的,省略时采取默认值,即端口号为3306,地址为本地连接127.0.0.1
数据库操作命令
创建数据库
想要创建数据库可以在命令行界面上执行命令
create database baseName;
例如创建一个名为Test
的数据库。
create database Test;
查看数据库创建语句
SHOW CREATE DATABASE
是一个用于显示创建数据库的SQL语句。通过这个命令,你可以查看创建特定数据库的完整SQL语句,包括数据库的各种属性和选项。基本语法如下:
SHOW CREATE DATABASE your_database;
这里your_database
是你想要查看创建语句的数据库名称。例如,如果你想查看名为 your_database
的数据库的创建语句,可以执行:
SHOW CREATE DATABASE your_database;
执行上述命令后,MySQL将返回一个结果集,其中包含了创建指定数据库的SQL语句。
在这个例子中,CREATE DATABASE ...
后面的部分包含了创建数据库的SQL语句,包括字符集等选项。这个命令通常用于查看数据库的创建细节,以便在需要时可以复制和重新创建数据库。
查看数据库
SHOW DATABASES;
是一个查看MySQL数据库的命令,用于显示当前MySQL服务器上的所有数据库列表。基本语法如下:
SHOW DATABASES;
执行这个命令后,MySQL将返回一个结果集,其中包含当前服务器上所有的数据库名。
这里的 information_schema
、mysql
和 performance_schema
是MySQL系统数据库,而 wzh
、Test
等是用户创建的数据库。
如果你执行
SHOW DATABASES;
时遇到问题,可能是由于权限不足或其他问题导致。确保你具有执行该命令的权限,并且MySQL服务器正在运行。
使用数据库
当我们要使用某个数据库,在数据库中创建表时,需要先use
这个数据库,使用命令
use baseName;
例如使用数据库Test
。
use Test;
修改数据库
在MySQL中,一般来说对数据库的修改主要指的是修改数据库的字符集,校验规则。而要修改数据库的一些属性,可以使用 ALTER DATABASE
语句来更改默认字符集或校对规则。如下一个例子:
ALTER DATABASE your_databaseCHARACTER SET utf8mb4COLLATE utf8mb4_unicode_ci;
这个例子演示了如何将数据库 wzh
的字符集更改为 gbk
。
注意,一些属性的修改可能需要数据库不处于活跃状态,因此你可能需要在修改之前停止数据库服务。
总体而言,ALTER DATABASE
语句的使用范围相对较小,大多数数据库结构的修改通过其他 ALTER
语句完成。
删除数据库
DROP DATABASE
是一个用于删除一个已经存在的数据库以及该数据库中的所有表和数据的MySQL命令。在执行这个命令之前应该确保要删除这个数据库,因为这个操作是不可逆的。基本的 DROP DATABASE
语法如下:
DROP DATABASE [IF EXISTS] your_database;
这里,your_database
是你想要删除的数据库的名称。IF EXISTS
是一个可选的子句,如果指定了,它表示如果数据库存在才执行删除操作,否则不会报错。在执行这个命令之后,数据库及其所有相关的表和数据将被永久删除。
注意,确保在执行这类敏感的数据库操作之前进行谨慎考虑,以避免数据丢失。
- 慎重使用: 删除数据库是一个危险的操作,因为它会删除数据库中的所有数据,包括所有表和其他对象。确保真的想要执行这个操作。
- 权限: 确保有足够的权限执行这个操作。通常,只有具有足够权限的用户才能删除数据库。
- 备份: 在执行
DROP DATABASE
之前,最好做好数据库备份,以防不慎删除了重要数据。
数据库字符集和校验规则
在MySQL中,字符集(Character Set)和校对规则(Collation)是与文本数据存储和比较有关的两个重要概念。
- 字符集
字符集定义了数据库中可以存储的字符的集合,每个字符集都有一个唯一的名称,它指定了数据库可以使用的字符和它们的编码方式。常见的字符集包括:
-
UTF-8: 一种可变长度的Unicode编码,支持全球范围的字符。
-
UTF-16: 一种Unicode编码,使用16位编码单元,通常用于存储较大的字符集。
-
latin1: 一种较旧的字符集,支持西欧语言。
在创建数据库时,可以指定要使用的字符集。例如:
CREATE DATABASE your_database CHARACTER SET utf8mb4;
- 校验规则
校对规则定义了如何对字符进行比较和排序。它与字符集紧密相关,因为它定义了字符在排序中的顺序。例如,校对规则可以定义大小写敏感或不敏感,以及对特定语言或地区的排序规则。
常见的校对规则包括:
-
utf8mb4_general_ci: 一般不区分大小写的UTF-8校对规则。
-
utf8mb4_unicode_ci: 基于Unicode的UTF-8校对规则,支持更广泛的字符集和排序规则。
在创建表时,你可以为每个列指定校对规则,也可以在创建数据库时为整个数据库指定默认的校对规则。例如:
CREATE TABLE your_table (column1 VARCHAR(255) COLLATE utf8mb4_unicode_ci,column2 INT
);
或者在创建数据库时:
CREATE DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
总体而言,选择适当的字符集和校对规则取决于你的应用需求,包括支持的语言、排序行为等。通常,使用Unicode字符集和相应的校对规则(如utf8mb4_unicode_ci)能够更好地支持多语言和国际化。
查看系统默认字符集
命令 show variables like 'character_set_database';
可以用于查看 MySQL 数据库默认字符集。
这个输出表明数据库默认字符集是 utf8
,即数据库创建时指定的默认字符集。字符集决定了数据库中可以存储的字符类型以及字符编码。MySQL 默认的字符集可能因版本和配置不同而有所变化。
查看系统默认校验规则
SHOW VARIABLES LIKE 'collation_database';
命令用于检索当前数据库所使用的字符集排序规则。字符集排序规则定义了数据库中字符串比较的规则。
在这个例子中,collation_database
变量的值是 utf8_general_ci
,表示当前数据库的默认字符集排序规则是 UTF-8,并使用一般的大小写不敏感比较。实际的结果可能会根据你的 MySQL 服务器配置以及数据库的特定字符集排序规则设置而有所不同。
查看数据库支持的字符集
SHOW CHARSET;
命令用于显示当前数据库服务器支持的字符集和对应的默认排序规则。这个命令会列出数据库中所有可用的字符集。执行SHOW CHARSET;
会得到以下的结果:
在这个结果中,你会看到不同的字符集,它们的描述,默认的排序规则,以及最大长度等信息。这样的信息可以帮助你了解数据库支持的字符集和排序规则,从而更好地管理和配置数据库的字符处理方式。
查看数据库支持的字符集校验规则
SHOW COLLATION
用于显示当前数据库服务器支持的所有排序规则及其相关信息。执行这个命令将列出可用的排序规则以及与每个规则相关的字符集。
结果中:
Collation
是排序规则的名称。Charset
是与排序规则相关联的字符集。Id
是排序规则的唯一标识符。Default
指示该排序规则是否是与其相关的字符集的默认规则。Compiled
指示该排序规则是否是编译的。
数据库的备份与恢复
数据库的备份和恢复是确保数据安全的重要操作。在MySQL中,你可以使用不同的工具和方法来执行备份和恢复操作。mysqldump
和 source
就是 MySQL 数据库备份和恢复的两个关键工具。mysqldump
用于创建数据库备份,而 source
用于执行 SQL 文件以进行数据库恢复。
备份
使用 mysqldump
进行数据库备份的基本格式如下:
mysqldump -P3306 -u root -p密码 -B 数据库名 > 数据库备份存储的文件路径
解释一下各个部分:
-P3306
:指定 MySQL 服务器的端口号(如果不是默认的3306端口)。-u root
:指定 MySQL 用户名为 root。需要根据实际情况替换为正确的用户名。-p密码
:指定密码。在实际应用中,最好避免在命令行中直接显示密码,可以使用其他安全方式提供密码。-B 数据库名
:指定要备份的数据库名。你需要将数据库名
替换为实际的数据库名,-B
后面需要有一个空格。> 数据库备份存储的文件路径
:将输出重定向到指定路径的文件中。
恢复
使用 source
进行数据库恢复的基本格式为:
source sql文件路径
这将使用 source
命令执行文件中的 SQL 语句,从而还原数据库。
注意事项:
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据
库,再使用source来还原。
mysqldump是在bash界面上运行,source是在MySQL里运行。
- 备份一张表
如果只想备份 MySQL 数据库中的一张表而不是整个数据库,你可以使用 mysqldump
命令,并指定要备份的表名。以下是基本的命令格式:
mysqldump -u username -p password -h host database table > table_backup.sql
其中:
-u username
: 指定 MySQL 用户名。-p
: 提示输入密码。-h host
: 指定 MySQL 主机名。database
: 数据库名称。table
: 表名称。> table_backup.sql
: 将备份输出到table_backup.sql
文件。
- 同时备份多个数据库
如果想同时备份多个 MySQL 数据库,可以在 mysqldump
命令中指定多个数据库名称,如下所示:
mysqldump -u username -p password -h host --databases db1 db2 db3 > backup.sql
其中:
-u username
: 指定 MySQL 用户名。-p
: 提示输入密码。-h host
: 指定 MySQL 主机名。--databases db1 db2 db3
: 指定要备份的多个数据库名称,用空格分隔。> backup.sql
: 将备份输出到backup.sql
文件。
这将备份指定的多个数据库的结构和数据到一个 SQL 文件中。
总结
文章围绕数据库,对数据库进行一些介绍,然后再对数据库的连接以及对数据库的一些操作进行演示,还对数据库的的字符集以及校验集进行分析,最后对数据库的备份和恢复进行介绍。
希望文章对你有所帮助!