创建与维护MySQL数据库


文章目录

  • 创建与维护MySQL数据库
  • 一、数据库系统的基本组成
  • 1.1、数据库(DB)
  • 1.2、数据库管理系统(DBMS)
  • 1.3、数据库应用程序(了解)
  • 1.4、用户(了解)
  • 二、创建MySQL数据库
  • 2.1、Navicat连接MySQL
  • 2.2、创建MySQL数据库的方式
  • (1)创建数据库的命令
  • (2)Navicat创建数据库
  • 2.3、备份MySQL的数据(了解)
  • (1)备份单个数据库中所有的数据表
  • (2)备份单个数据库中指定的数据表
  • (3)备份多个数据库
  • (4)备份所有的数据库
  • 2.4、还原MySQL数据库(了解)
  • 三、选择数据库
  • 四、修改数据库
  • 五、删除数据库
  • 六、MySQL存储引擎(了解)
  • 七、Navicat实现数据备份与还原
  • 7.1、数据备份
  • 7.2、数据还原


这里所记录的是数据库的基础知识点,也包括如何在Navicat中使用数据库。

一、数据库系统的基本组成

一个完整的数据库系统由数据库、数据库管理系统、数据库应用程序、用户和硬件组成。

1.1、数据库(DB)

数据库就是一个有结构的、集成的、可共享的、统一管理的数据集合。数据库是一个有结构的数据集合,也就是说,数据是按一定的数据模型来组成的,数据模型可用数据结构来描述。数据模型不同,数据的组织结构以及操纵数据的方法也就不同。现在的数据库大多数是以关系模型来组织数据的,可用简单地把关系模型的数据结构即关系理解为1张二维表。以关系模型组织起来的数据库称为关系数据库。在关系数据库中,不仅存放着各种用户数据,还存放着与各个表结构定义有关的数据,这些数据通常称为元数据

补充:(只做了解)

元数据(Mete Date):关于数据的数据或者叫做用来描述数据的数据或者叫做信息的信息。这样的定义是很抽象的,所以我们可用将元数据简单的理解为是最小的数据单位。元数据可用为数据说明其元素或属性(名称、大小、数据类型、等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。

通常情况下元数据可以分为以下三类:固有性元数据、管理性元数据和描述性元数据

  1. 固有性元数据:与事物构成有关的元数据;
  2. 管理性元数据:与事物处理有关的元数据;
  3. 描述性元数据:与事物本质有关的元数据。

数据库实际上在硬盘上以文件的形式存在。数据库是一个集成的数据集合,也就是说,数据库中集中存放着各种各样的数据。数据库是一个可共享的数据集合,也就是说,数据库中的数据可用被不同的用户使用,每个用户可用按自己的需求访问相同的数据库。数据库是一个统一管理的数据集合,也就是说,数据库由DBMC统一管理,任何数据访问都是通过DBMS来完成的。

1.2、数据库管理系统(DBMS)

数据库管理系统是一种用来管理数据库的商品化软件。所有访问数据库的请求都是通过DBMS来完成的。DBMS提供了对数据库操作的许多命令,这些命令所组成的语言中常用的就是SQL。

DBMS主要提供以下功能:

  1. 数据定义:DBMS提供了数据定义语言(Data Definition Language,DDL)。通过DDL可用方便地定义数据库中的各种对象。【create drop alter,DDL是对表结构的创建、删除、修改操作(这个可以删除表)】;
  2. 数据操纵:DBMS提供了数据操纵语言(Data Manipulation Language,DML)。通过DML可用实现数据库的基本操作。【insert delete update,DML是对表当中的数据进行增删改(DML操作只能针对数据表中的数据进行操作)】;
  3. 数据查询:DBMS提供了数据查询语言(Data Query Language,DQL)。主要对数据进行查询操作。常用关键字有Select、From、Where等。
  4. 安全控制和并发控制:DMBS提供了数据控制语言(Data Control Language,DCL)。通过DCL可用控制什么情况下谁可用执行什么样的数据操作。另外,由于数据库是共享的,多个用户可用同时访问数据库(并发操作),这可能会引起访问冲突,从而导致数据的不一致。DMBS还提供了并发控制的功能,以避免并发操作时可能带来的数据不一致;
  5. 数据库备份与恢复:DMBS提供了备份数据库和恢复数据库的功能。

1.3、数据库应用程序(了解)

数据库应用程序是利用某种程序语言,为实现某些特定功能而编写的程序。这些程序为最终用户提供方便使用的可视化界面,最终用户通过界面输入必要的数据,应用程序接收最终用户输入的数据,经过加工处理,并转换成DBMS能够识别的SQL语句,然后传给DBMS,由DBMS执行该语句,负责从数据库若干个数据表中找到符合查询条件的数据,再将查询结果返回给应用程序,应用程序将得到的结果显示出来。

1.4、用户(了解)

用户是使用数据库的人员,数据库系统中的用户一般有以下3类:

  1. 应用程序员:应用程序员负责编写数据库应用程序,他们使用某种程序设计语言(如C#、Java等)来编写应用程序。这些应用程序通过向DBMS发出SQL语句,请求访问数据库。这些应用程序既可以是批处理程序,也可以是联机应用程序,其作用是允许最终用户通过客户端、屏幕终端或浏览器访问数据库。
  2. 数据库管理员:数据库管理员(Database Administrator,DBA)是一类特殊的数据库用户,负责全面管理和控制数据库。注意:数据管理员是管理者而不一定是技术人员,而负责执行数据管理员决定的技术人员就是数据库管理员。数据库管理员的任务是创建实际的数据库以及执行数据管理员小于实施的各种安全控制措施,确保数据库的安全,并且提供各种技术支持服务。
  3. 最终用户:最终用户也称终端用户或一般用户,他们通过客户端、屏幕终端或浏览器与应用程序交互来访问数据库,或者通过数据库产品提供的接口程序访问数据库。

二、创建MySQL数据库

2.1、Navicat连接MySQL

打开图形管理根据Navicat,找到【连接】,点击它,选择MySQL,如下图:

mysql2没有时自动创建_nosql

当点击完MySQL后,就会跳出一个【MySQL - 新建连接】的对话框。在这之中,我们在“连接名”文本框中输入“better”(连接名没有任何要求),再输入主机名或IP地址、端口、用户名和密码后,我们可以先点击【连接测试】,当出现“连接成功”的提示信息对话框时,就表明连接创建成功,可以单机【确定】保存所创建的连接。

mysql2没有时自动创建_mysql2没有时自动创建_02


这个时候,就可以看到创建好的连接了。

mysql2没有时自动创建_nosql_03


此时我们双击【连接】,就可以打开连接,看到之中的数据库,再双击数据库,就可以看到数据库下的数据表。(注:正常情况下,Navicat基本上都会自动给你一个已经创建好的连接。所以,之后所使用的都是我最初的那个连接)

2.2、创建MySQL数据库的方式

(1)创建数据库的命令

创建MySQL数据库的命令的语法格式如下:

Create{Database | Schema}[if not exists]<数据库名称>	
-- 之中的if not exists可用有也可以没有,目的是为了防止当存在同名数据库名称时,发生报错。当加上这个时,就不会发生报错
[create_specification,...]

其中,create_specification的可选项如下:

[Default] Character Set<字符集名称>
|[Default] Collate<排序规则名称>

参数说明如下:

① 命令中括号[ ]中的内容为可选项,其余为必须书写的项;二者选其一的选项使用“|”分割;多个选项或参数列出前面1个选项或多个选项,使用“…”表示可有多个选项或参数。

记住,Create Database为创建数据库的必需项,不能省略!

③ 由于MySQL的数据存储区将以文件夹方式表示MySQL数据库,因此,命令中的数据库名称必须符合操作系统文件夹命名规则。MySQL中不区分字母大小写。

④ if not exists为可选项,用于在创建数据库之前,判断即将创建的数据库名是否存在,如果不存在,则创建该数据库。如果数据库中已经存在同名的数据库,则不创建任何数据库。但是,如果存在同名数据库,并且没有指定if not exists,那么将会出现错误(1007错误)提示。如下图所示:

mysql2没有时自动创建_nosql_04

⑤ create_specification用于指定数据库的特性。数据库特性存储在数据库文件夹中的db.opt文件中。Default指定默认值,Character Set子句用于指定默认的数据库字符集,Collate子句用于指定默认的数据库排序规则。

⑥ 在MySQL中,每一条SQL语句都以“;”作为结束标志。

具体操作如下图所示:

mysql2没有时自动创建_nosql_05

(2)Navicat创建数据库

在Navicat中同样也可以使用以上的命令来创建数据库,不过,Navicat好就好在,它可以使用另一种方式来创建数据库,并且不用写命令。操作如下:

右键单击【连接】,选择【创建数据库】:

mysql2没有时自动创建_数据库_06

在弹出的创建窗口输入如下参数即可完成:

mysql2没有时自动创建_nosql_07

2.3、备份MySQL的数据(了解)

“mysqldump”命令可用将数据库中的数据备份成一个文本文件,数据库的结构和数据中的数据将存储在生成的文本文件中。

(1)备份单个数据库中所有的数据表

使用“mysqldump”命令备份单个数据库中的所有数据表的基本语法格式如下:

mysqldump -u 用户名 -p 数据库名>备份文件名
//或者也可以写成以下的格式
mysqldump -u 用户名 -p ——databases 数据库名>备份文件名

说明:

如果没有指定数据库名,则表示备份整个数据库

② **备份文件名指定其扩展名为“sql”,也可指定其他的扩展名,如“txt”。如果备份文件前没有指定存储路径,则备份文件默认存放在MySQL的bin文件夹中,也可以在文件名前加一个绝对路径,指定备份文件的存放位置。**例如:将数据库“book”备份到文件夹“D:\MySQLData\myBackup”中的命令如下:

mysqldump -u root -p ——databases book>D:\MySQLData\myBackup\bookbackup.sql

(2)备份单个数据库中指定的数据表

使用“mysqldump”命令备份一个数据库或数据表的基本语法格式如下:

mysqldump -u 用户名 -p 数据库名 数据表名>备份文件名
(3)备份多个数据库

使用“mysqldump”命令备份多个数据库的基本语法格式如下:

mysqldump -u 用户名 -p 数据库名1 数据库名2 ...>备份文件名
(4)备份所有的数据库

使用“mysqldump”命令备份MySQL服务器中所有数据库的基本语法格式如下:

mysqldump -u 用户名 -p ——all-databases>备份文件名

2.4、还原MySQL数据库(了解)

当数据库遭到意外破坏时,可用通过备份文件将数据库还原到备份时的状态,通过使用“mysqldump”命令将数据库中的数据备份成一个文本文件。备份文件中通常包含“Create”语句和“Insert”语句。可用使用“mysql”命令来还原备份的数据,“mysql”命令可以执行备份文件中的“Create”语句和“Insert”语句。通过“Create”语句来创建数据库和数据表,通过“Insert”语句来插入备份的数据。

“mysql”命令的基本语法格式如下:

mysql -u root -p [数据库名]<备份文件名

三、选择数据库

之前我们知道在黑窗口中如何选择数据库,而对于Navicat也是同样语句。

选择MySQL数据库的命令的语法格式如下:

Use 数据库名称;

这个是基本的语法,一定要记住!它的作用是可以从一个数据库“切换”到另一个数据库上。

四、修改数据库

当要对已有数据库进行修改时,可以使用Alter Database语句。其语法格式如下:

Alter {Database | Schema}[数据库名称]
[alter_specification, ...]

其中,alter_specification的可选项如下:

[Default]Character Set 字符集名称
|[Default]Collate 排序规则名称

说明:Alter Database语句用于更改数据库的全局特性,这些特性存储在数据库文件夹中的dp.opt文件中。用户必须有对数据库进行修改的权限,才可以使用该语句。如果语句中数据库名称省略,则表示修改当前(默认)的数据库。

测试:我们对demos数据库进行修改

首先,选择demos为当前数据库,再输入以下的修改语句,按下回车键即可:

Alter Database demos Character set gb2312 Collate gb2312_chinese_ci;

最后,我们在Navicat中去查询demos数据库的属性(之前是utf8的)是否改变即可。

mysql2没有时自动创建_nosql_08

五、删除数据库

当不需要某个数据库时,可以使用“Drop Database”语句进行删除数据库,其语法格式如下:

Drop Database[if exists]<数据库名>;

mysql2没有时自动创建_nosql_09

然后通过查看Navict和show databases可以看到demos数据库已经被删除了!

mysql2没有时自动创建_MySQL_10

若使用“if exists”子句,则可避免删除不存在的数据库时出现错误提示信息;如果没有使用该子句,则当删除的数据库在MySQL中不存在时,系统就会出现错误提示信息。

六、MySQL存储引擎(了解)

数据库存储引擎是数据库软件底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多数据库管理系统支持多种不同的数据引擎。

MySQL核心就是存储引擎,MySQL提供了多种不同的存储引擎,包括处理事务安全的引擎处理非事务安全的引擎。在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个数据表使用不同的存储引擎。MySQL数据库中的表可以使用不同的方式存储,用户可以根据自己的需求,灵活选择不同的存储方式。使用合适的存储引擎,将会提供整个数据库的性能。

**mysql8.0支持的存储引擎有:**MEMORY、MRG_MYISAM、CSV、FEDERATED、PERFORMANCE_SCHEMA、MyISAM、InnoDB、BLACKHOLE、ARCHIVE。

(1)InnoDB是事务型数据库的首选引擎,InnoDB是默认存储引擎。InnoDB支持事务安全(ACID)

支持行锁定数据缓存外键,同时支持崩溃修复并发控制,但不支持全文索引哈希索引

(2)MyISAM是Web、数据仓储和其他应用环境下最常用的存储引擎之一。MySQL5.5.5之前的版本,MyISAM是默认存储引擎。MyISAM具有较高的插入、查询速度,支持全文索引,但不支持事务、数据缓存和外键

(3)Memory将数据表中的数据存储到内存中,为查询和引用其他数据表数据提供了快速访问。Memory默认使用哈希索引,其速度要比使用B型树索引快,但不支持事务、全文索引和外键,安全性不高

我们可以通过使用【show engines】语句来查看MySQL数据库支持的存储引擎类型。如下所示:

mysql2没有时自动创建_数据库_11

解释说明如下:

① 第一行中的“Engine”表示存储引擎名称,“Support”表示MySQL是否支持该类存储引擎,“Comment”表示对该存储引擎的简要说明,“Transactions”表示是否支持事务处理,“XA”表示是否支持分布式交易处理,“Savepoints”表示是否支持保存点,以便事务回滚到保存点。

② 第一列表示MySQL支持的存储引擎,共包括9种。

③ 第二列中YES表示能使用对应行的引擎,NO表示不能使用对应行的引擎,DEFAULT表示该引擎为当前默认存储引擎。

④ 第四列中YES表示支持事务处理,NO表示不支持事务处理。

⑤ 第五列中YES表示支持XA规范,NO表示不支持XA规范。

⑥ 第六列中YES表示支持保存点,NO表示不支持保存点。

不同的存储引擎有各自的特点,以适应不同的需求。对于使用哪一种引擎要根据需要灵活选择,一个数据库中多个数据表可以使用不同引擎以满足各种性能和实际要求。

  • 如果提供事务安全能力,并要求实现并发控制,则InnoDB是很好的选择。
  • 如果数据表主要用来插入和查询记录,则MRG_MyISAM引擎能提供较高的处理效率。
  • 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,则可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。
  • 如果只有Insert和Select操作,则可以选择Archive存储引擎,Archive引擎支持高并发的插入操作,但是本身并不是事务安全的。

七、Navicat实现数据备份与还原

7.1、数据备份

我们通过对MySQL的数据库shop进行备份。

(1)首先我们双击打开数据库“shop”,也可以右击数据库“shop”,在弹出的快捷菜单中选择【打开数据库】命令,打开该数据库。

(2)在Navicat的主窗口中,单击工具栏中的【备份】按钮,下方显示“备份”对应的操作按钮,如下图所示:

mysql2没有时自动创建_数据库_12

(3)我们选择数据库“shop”,然后单击【新建备份】按钮,打开【新建备份】对话框,然后在该对话框“常规”选项卡中的“注释”文本框中输入注释内容“备份shop数据库”,如下图所示:

mysql2没有时自动创建_mysql_13

(4)选择“高级”选项卡,在“使用指定文件名”文本框输入备份文件名“shop2022”,如下图所示:

mysql2没有时自动创建_mysql_14

(5)开始备份。在【新建备份】对话框中单击【开始】按钮,自动切换到“信息日志”选项卡中,开始备份过程,并显示相应的提示信息,如下图所示:

mysql2没有时自动创建_nosql_15

(6)保存备份操作。在【新建备份】对话框中单击【保存】按钮,打开【设置文件名】对话框,在该对话框的“输入设置文件名”文本框中输入文件名“shop_backup0201”,如下图所示,单击【确定】按钮保存备份操作,并返回【新建备份】对话框。

mysql2没有时自动创建_mysql_16

在【新建备份】对话框中单击【关闭】按钮,关闭该对话框。备份操作完成后,就可看到备份文件列表,如下所示:

mysql2没有时自动创建_nosql_17

(7)查看备份文件的保存位置。选中备份文件“shop2022”并右击,在弹出的快捷菜单中选择【打开包含的文件夹···】命令,如下图所示,打开备份文件所在的文件夹,我的备份文件所在的文件夹为“C:\Users\Remaining gentleman\Documents\Navicat\MySQL\servers\demo\shop”。

mysql2没有时自动创建_MySQL_18

7.2、数据还原

(1)在Navicat主窗口中选中备份数据库“shop2022”。

(2)单击工具栏中的【还原备份】按钮,打开【shop2022-还原备份】对话框,如下图所示:

mysql2没有时自动创建_mysql_19

(3)在【shop2022-还原备份】对话框中,单击【开始】按钮,打开如下图所示的提示信息对话框:

mysql2没有时自动创建_nosql_20

单击【确定】按钮,还原备份开始,完成时将打开如下图所示的【还原备份】对话框。

mysql2没有时自动创建_mysql_21