
任务一 数据库服务器的连接与数据库的创建
本任务通过客户端连接MySQL数据库服务器,在MySQL数据库服务器上创建学生竞赛项目管理系统数据库competition。
一、任务描述
MySQL数据库服务器安装完成后,用户可以通过MySQL客户端连接MySQL数据库服务器,也可以通过一些其他工具软件或者图形化的数据库客户端管理软件连接到MySQL数据库,然后创建数据库,再对数据库进行管理。
二、任务分析
MySQL数据库客户端管理工具有很多种,可以使用图形化的管理工具,也可以使用基于命令界面的工具来连接数据库。本任务通过客户端管理工具连接数据库,然后对数据库中的对象进行各种操作。基于图形化的MySQL数据库客户端管理工具主要有phpMyAdmin、MySQLDumper、 Navicat、MySQL GUI Tools等。
phpMyAdmin是最常用的MySQL管理工具,是一个用PHP开发的基于Web方式架构在网站主机上的MySQL管理工具,支持中文,管理数据库非常方便。
MySQLDumper是使用PHP开发的MySQL数据库备份恢复程序,解决了使用PHP进行数据库备份和恢复的问题,方便数据库的备份和恢复工作。
Navicat是一个桌面版MySQL数据库管理和开发工具,类似微软SQL Server数据库的管理器,它使用图形化的用户界面,使用和管理更为轻松,易学易用。
MySQL GUI Tools是MySQL官方提供的图形化管理工具,功能很强大,是一个具有可视化界面的MySQL数据库管理控制平台,提供了MySQL Migration Toolkit数据库迁移、MySQL Administrator数据库管理器、MySQL Query Browser数据查询,以及MySQL Workbench数据库设计等非常实用的图形化应用程序,方便数据库的管理和数据查询。
使用图形化管理工具可以提高数据库管理、备份、迁移、查询的效率。
MySQL数据库客户端可以是MySQL数据库自带的MySQL命令窗口,即基于cmd命令提示符的窗口。通过命令窗口模式可以让读者在学习数据库技术时更好地理解关系型数据,对今后数据库的应用有极大的帮助作用。为了便于读者快速学习MySQL知识,本任务中均使用cmd命令提示符窗口对数据库进行操作,其他图形化的工具软件读者可自行下载安装,并连接MySQL数据库使用,本书不做任何介绍。启动MySQL数据库的cmd命令模式需要调用mysql.exe可执行文件,然后对数据库进行管理操作。
三、任务完成
MySQL中的SQL语句是不区分大小写的,例如,SELECT和select的作用是相同的。但是,许多开发人员习惯将SQL语句关键字使用大写,而数据字段名和表名使用小写,读者也应该养成一个良好的编程习惯,这样,写出来的代码更容易阅读和维护。
编者注:本书正文中的SQL语句关键字统一采用大写形式,而在实际操作中,大小写的形式均正确,不影响程序运行和结果。
1.数据库的连接
首先,进入cmd命令模式,单击“开始”→“运行”命令,在运行输入框中输入cmd命令,如图3-1所示。

图3-1 cmd命令模式
然后将目录切换到MySQL安装目录,在cmd命令模式下输入cd“MySQL安装目录”,每名用户的MySQL数据库的具体安装目录有所不同,要视各用户安装MySQL的具体位置而定,如图3-2所示。

图3-2 进入MySQL安装目录
进入该目录,可用dir命令查看文件,通过mysql.exe可执行文件可以连接到MySQL数据库服务器,如图3-3所示。

图3-3 mysql.exe可执行文件
在cmd命令提示符窗口中输入mysql .exe -–help命令可以提供帮助信息,通过帮助信息可以掌握MySQL数据库的有关知识,如图3-4所示。

图3-4 帮助信息
MySQL数据库的连接:当MySQL客户端与MySQL服务器是同一台主机时,连接服务器时,在命令提示符窗口输入:

或者

然后按Enter键(注意,-p后面紧跟该用户访问数据库服务器的密码),即可实现本地MySQL客户端与本地MySQL服务器之间的连接,如图3-5、图3-6所示。

图3-5 连接MySQL数据库(一)

图3-6 连接MySQL数据库(二)
mysql.exe中各参数的含义如下:
① -h,--host=name指定服务器IP或域名;
② -u,--user=name指定连接的用户名;
③ -p,--password=password指定连接密码;
④ -P,--port=3308指定连接端口。
-h连接指定的主机名或指定的主机IP地址,但连接指定主机名时,一定需要客户端能够解析到所连接服务器的主机,可以通过ping主机名进行测试,如有响应信息,则表示客户端能够解析到数据库服务器主机。-P后面是连接服务器时所使用的端口号码,默认为3306,-u后面是连接服务器时所使用的用户名,-p后面是连接服务器时用户名所对应的密码,为了数据库的安全,可以省略密码,直接在登录窗口输入访问数据库密码。
此外,可以使用Windows操作系统提供的比较方便的启动连接操作,依次单击“开始”→“程序”→MySQL→MySQL Server→MySQL Command Line Client命令,直接打开MySQL命令行窗口,连接到MySQL服务器。登录成功后,客户端的命令提示符变成了“mysql>”,表示连接成功,在此状态下可以输入status命令查看当前MySQL会话的简单状态信息,如图3-7所示。

图3-7 查看MySQL状态信息
连接MySQL数据库服务器后,可以输入“\h”查看MySQL的命令列表,如图3-8所示。输入“\q”或者使用exit命令,都可以退出MySQL客户端,返回到cmd命令模式,如图3-9所示。

图3-8 MySQL命令列表

图3-9 退出MySQL客户端
2.数据表中的中文汉字出现乱码的情况
连接MySQL服务器时,如果数据库中数据表的中文汉字信息出现乱码,则主要是因为连接时字符集默认使用latin1(西欧ISO_8859_1字符集的别名),其字符是单字节编码,而汉字是双字节编码,因此可能导致MySQL数据库不支持中文字符串的查询,其查询结果会出现乱码,如图3-10所示。像这种出现中文乱码的情况,需要在连接数据库服务器时指定字符集,其语法格式如下:

图3-10 显示中文汉字时出现乱码

该命令是表示在连接数据库服务器时就确定字符体的编码格式。具体字符集的编码格式默认只能显示英文,如果要显示中文汉字,则需要进行设置。
MySQL字符集的设置有很多种。在发生乱码时究竟是哪一种情况,需要在MySQL命令行下输入:

该命令用来查看MySQL数据库有关字符集的变量取值情况,查询结果如图3-11所示,可以看到,一些变量的取值是gbk,binary,utf8等,可以通过设置相关字符集变量来改变字符集的格式。

图3-11 MySQL字符形式
在当前会话状态下设置字符集的类型,代码如下:

解决乱码的方法是在执行SQL语句之前,将MySQL以下3个系统参数设置为与服务器字符集character-set-server相同的字符集。
① character_set_client:客户端的字符集。
② character_set_results:结果字符集。
③ character_set_connection:连接字符集。
将这3个字符集设置成utf8的编码方式,设置字符集类型后,再来查询数据表,则能以正确的中文汉字显示数据表中的数据。正常显示的汉字如图3-12所示。

图3-12 中文汉字正常显示
3.修改数据库用户名、密码
可在cmd命令模式下使用mysqladmin命令修改数据库的用户名、密码,其语法格式如下:

-u后面连接的是用户名,new_password是设置的新密码。如图3-13所示是将root用户的密码修改为ABCabc123。

图3-13 修改服务器用户名、密码
修改用户名、密码后,连接数据库时需要使用新的密码,如图3-14所示,是对用户新密码进行验证。

图3-14 验证MySQL新密码
4.创建数据库
创建数据库使用CREATE DATABASE databasename语句实现。一般情况下,如果数据库中的数据涉及中文汉字时,可以在创建数据库时指定数据库的字符集,创建数据库的语法格式如下:

① CREATE DATABASE databasename:创建数据库databasename。
② DEFAULT CHARACTER SET utf8:数据库字符集。设置数据库的默认编码方式为utf8,这里utf8中间没有“-”。
③ COLLATE utf8_general_ci:数据库的校验规则,utf8_general_ci是case insensitive的缩写,意思是大小写不敏感;相对的是utf8_general_cs,即case sensitive,是指大小写敏感;还有一种是utf8_bin,是将字符串中的每个字符用二进制数据存储,区分大小写。
【例3-1】创建学生竞赛项目管理系统数据库competition。

查看创建结果,如图3-15所示。

图3-15 创建数据库
5.查看数据库
在MySQL数据库管理系统中,一台服务器可以创建多个数据库,使用SHOW DATABASES命令可查看数据库系统中有哪些数据库。
① SHOW DATABASES:查看数据库服务器中有哪些数据库。
② USE databasename:进入databasename数据库中。
③ SHOW TABLES:查看数据库内所有的数据表,前提是先要进入数据库中。
④ DESCRIBE tablename:查看表结构。
⑤ SELECT VERSION():查看数据库版本。
⑥ SELECT CURRENT_TIME:查看服务器的当前时间。
以上操作的结果如图3-16所示。

图3-16 查看数据库
6.删除数据库
MySQL数据库管理系统中的数据库,不需要时可以将其删除,以节省系统存储空间。需要注意的是,使用普通用户登录MySQL服务器,需要用户有相应的删除权限才可以删除指定的数据库,否则需要使用root用户登录,MySQL数据库中的root用户拥有最高权限。在删除数据库的过程中,应该十分谨慎,因为执行删除命令后,数据库中的所有数据将会丢失。删除数据库的语法格式如下:

删除数据库competition的操作结果如图3-17所示。

图3-17 删除数据库(一)
也可以使用mysqladmin命令在终端执行删除命令,是在cmd命令模式下进行的删除操作,其格式如下:

按Enter键后,输入密码,即可删除指定的databasename数据库,如图3-18所示。

图3-18 删除数据库(二)
四、任务总结
MySQL数据库提供了较为丰富的命令供用户使用,需要合理地设置各项参数。本任务通过mysql.exe可执行文件连接MySQL数据库服务器。需要注意,在数据表中含有中文汉字的情况下,需要设置连接数据库的字符集,只有设置支持中文汉字显示的字符集才可以显示中文汉字。使用MySQL数据库命令创建数据库时,应注意数据库存储引擎的设置。
【知识延伸】
MySQL数据库提供了插件式(Pluggable)的存储引擎,该存储引擎是基于表的,同一个数据库,不同的表,存储引擎可以不同。甚至同一张数据表,在不同的场合可以应用不同的存储引擎。使用MySQL命令SHOW ENGINES即可查看MySQL服务实例支持的存储引擎。
① InnoDB存储引擎:InnoDB支持外键、支持事务(Transaction)。如果某张表主要提供OLTP支持,需要执行大量的增、删、改操作(INSERT、DELETE、UPDATE语句),出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。
② MyISAM存储引擎:MyISAM具有检查和修复表的大多数工具。MyISAM表可以被压缩,最早支持全文索引,但不支持事务。MyISAM表不支持外键,如果需要执行大量的SELECT语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。
MySQL5.7默认的存储引擎是InnoDB。使用MySQL命令:

可以临时地将MySQL当前会话的存储引擎设置为MyISAM。