9.3 创建和维护数据库
本节将介绍如何创建、删除、备份和恢复MySQL数据库。
9.3.1 创建数据库
可以在phpMyAdmin中通过图形界面创建数据库,也可以使用mysql、mysqladmin等命令行工具创建数据库。
1.在phpMyAdmin中创建数据库
在phpMyAdmin的主页中单击“数据库”栏目,打开“数据库管理”页面,如图9-14所示。
在“新建数据库”文本框中输入新数据库的名称,如MySQLDB。在“整理”组合框中选择数据库使用的字符集,这里选择gb2312_chinese_ci。
如果没有选择字符集或者选择了错误的字符集,则可能无法正确地向表中插入汉字。
单击“创建”按钮,开始创建数据库。创建完成后,可以在页面左侧看到新建的数据库链接。单击一个数据库链接,可以查看其内容,并对其进行管理。
图9-14 在phpMyAdmin中创建数据库
2.使用CREATE DATABASE语句创建数据库
在mysql命令行工具中可以直接输入和执行SQL语句。可以使用CREATE DATABASE语句创建数据库,它的基本语法结构如下:
CREATE DATABASE [IF NOT EXISTS] 数据库名
如果使用IF NOT EXISTS关键字,则当指定的数据库名存在时,不创建数据库。如果不使用IF NOT EXISTS关键字,当创建的数据库名存在时,将产生错误。
【例9-6】 要创建数据库MySQLDB,可以使用下面的语句:
CREATE DATABASE IF NOT EXISTS MySQLDB;
3.使用mysqladmin工具创建数据库
可以在mysqladmin中使用create子句创建数据库。
【例9-7】 要创建数据库MySQLDB,可以使用下面的命令:
mysqladmin -h localhost -u root --password=pass create MySQLDB
其中,pass表示MySQL数据库root用户的密码。
9.3.2 删除数据库
可以在phpMyAdmin中通过图形界面删除数据库,也可以使用mysql、mysqladmin等命令行工具删除数据库。
1.在phpMyAdmin中删除数据库
在phpMyAdmin的数据库管理页面中,选中要删除的数据库,如图9-15所示。
图9-15 删除数据库
单击“删除”图标,打开确认删除数据库页面,如图9-16所示。
图9-16 确认删除数据库页面
单击“是”按钮,可以删除数据库。
注意,不允许删除information_schema、mysql等系统数据库。
2.使用DROP DATABASE删除数据库
DROP DATABASE语句的语法如下:
DROP DATABASE 数据库名
【例9-8】 可以在MySQL命令行工具中使用下面的语句删除数据库MySQLDB:
DROP DATABASE MySQLDB;
3.使用mysqladmin工具删除数据库
可以在mysqladmin命令中使用drop子句删除数据库。
【例9-9】 可以在命令窗口中使用下面的命令删除数据库MySQLDB:
mysqladmin -h localhost -u root --password=pass drop MySQLDB
执行此命令后,将显示如下信息,提示用户是否确定要删除数据库。
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'mydatabase' database [y/N]
输入字母y,然后按下回车键,即可删除数据库。
9.3.3 备份数据库
在数据库的使用过程中,难免会由于病毒、人为失误、机器故障等原因造成数据的丢失或损坏。数据对于数据库用户来说是非常重要的,一旦出现问题,造成的损失是巨大的。为了保证数据库的安全性,防止数据库中数据的意外丢失,应经常对数据库中的数据进行备份,以便在数据库出故障时进行及时有效的恢复。
1.在phpMyAdmin中备份数据库
phpMyAdmin可以通过导出数据的方法实现备份数据库的功能。在phpMyAdmin的主页中单击“导出”栏目,打开“导出数据库”页面,如图9-17所示。
图9-17 在phpMyAdmin中导出数据库
在指定数据库的管理页面中,单击“导出”超链接,可以导出指定数据库。
用户可以选择导出方式和导出格式,然后单击“执行”按钮开始导出并保存导出文件。
2.使用mysqldump工具备份数据库
mysqldump是MySQL提供的命令行工具,用于导出MySQL数据库。备份指定数据库时, mysqldump的用法如下:
mysqldump [OPTIONS] database [tables]
database指定要导出的数据库名,tables指定要导出的表名,如果不指定表名,则导出整个数据库。
OPTIONS是导出数据库的选项,常用的选项如下。
• --add-drop-table:在每个create语句之前增加一个drop table关键字。
• c,--complete-insert:使用完整的insert语句(用列名字)。
• -C,--compress:如果客户和服务器均支持压缩,压缩两者间所有的信息。
• --delayed:用INSERT DELAYED命令插入行。
• -d,--no-data:不写入表的任何行信息。如果只想得到一个表的结构的导出,可以使用此选项。
• h,--host=..:从命名的主机上的MySQL服务器导出数据。默认主机是localhost。
• -pyour_pass,--password[=your_pass]:与服务器连接时使用的口令。如果不指定“=your_pass”部分,mysqldump需要来自终端的口令。
• -u user_name,--user=user_name:与服务器连接时,MySQL使用的用户名。默认值是UNIX登录名。
【例9-10】 可以在命令窗口中使用下面的命令备份数据库MySQLDB:
mysqldump -h localhost -u root --password=pass MySQLDB > c:\MySQLDB.sql
c:\MySQLDB.sql为导出文件。
9.3.4 恢复数据库
数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复(还原)数据库,让数据库回到备份时的状态。通常在以下情况下需要恢复数据库。
• 媒体故障。
• 用户操作错误。
• 服务器永久丢失。
• 将数据库从一台服务器复制到另一台服务器。
恢复数据库之前,需要限制其他用户访问数据库。
1.在phpMyAdmin中恢复数据库
phpMyAdmin可以通过导入数据的方法实现恢复数据库的功能。在phpMyAdmin的主页中单击“导入”栏目,打开“导入数据库”页面,如图9-18所示。
图9-18 在phpMyAdmin中导入数据库
单击“浏览”按钮,选择要导入的文件,然后单击“执行”按钮开始导入。
2.使用mysql工具恢复数据库
如果导入文件是.sql文件,那么导入实际上就是执行其中的SQL语句。可以使用mysql命令执行.sql文件,方法如下:
mysql-h 数据库服务器-u 用户名--password=密码目标数据库< sql文件名
【例9-11】 可以在命令窗口中使用下面的命令从D:\MySQLDB.sql中恢复数据库MySQLDB:
mysql -h localhost -u root --password=pass MySQLDB < D:\MySQLDB.sql
c:\MySQLDB.sql为导出文件。
本节所介绍的恢复数据库实际上就是导入数据库。因此,在执行操作之前,应确保数据库已经存在。如果不存在,可以参照9.3.1小节创建数据库。