一、实验介绍
本节实验后续至第17节实验为本课程的进阶篇,都基于 MySQL 官方参考手册制作,并根据实验楼环境进行测试调整改编。在此感谢 MySQL 的开发者,官方文档和中文文档的维护者。
参考内容列表:
- MySQL 官方文档,目前实验楼的实验适配 MySQL 5.5 版本。
- MySQL 参考手册中文版,译者说明:这是MySQL参考手册,原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。它涉及MySQL 5.1至5.1.2-alpha版本。
感谢 MySQL 的开发者,官方文档的维护者以及中文版本的翻译者。部分内容来自这些参考资料并由实验楼进行改编。
1.1 实验内容
本节实验主要对 MySQL 的服务的安装,启动及运行命令进行说明和实践操作。
1.2 实验知识点
- MySQL 服务
1.3 实验环境
课程使用的实验环境为 Ubuntu Linux 14.04 64 位版本。实验中会用到程序:
- Mysql 5.5.50
- Xfce终端
二、实验步骤
2.1 MySQL介绍
- MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
- MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
2.2 安装MySQL
实验楼环境已经为大家安装好了 MySQL,无需大家再次安装,以下安装仅用于大家学习使用
2.2.1 Windows下安装
可以从官网下载MySQL安装软件包。在Windows中安装MySQL时,新用户可以使用MySQL安装帮助和MySQL Configuration Wizard
(配置向导)。
在Windows中安装MySQL时,有3种MySQL 5.1安装软件包可供选择:
-
基本安装:该安装软件包的文件名类似于
mysql-essential-5.1.2-alpha-win32.msi
,包含在Windows中安装MySQL所需要的最少的文件,包括配置向导。该安装软件包不包括可选组件,例如嵌入式服务器和基准套件。 -
完全安装:该安装软件包的文件名类似于
mysql-5.1.2-alpha-win32.zip
,包含在Windows中安装MySQL所需要的全部文件,包括配置向导。该安装软件包包括可选组件,例如嵌入式服务器和基准套件。 -
非自动安装文件:该安装软件包的文件名类似于
mysql-noinstall-5.1.2-alpha-win32.zip
,包含完整安装包中的全部文件,只是不包括配置向导。该安装软件包不包括自动安装器,必须手动安装和配置。
对于大多数用户,建议选择基本安装。
如果你下载的安装软件包在Zip
文件中,你需要先解压文件。如果有setup.exe
文件,双击启动安装过程。如果有.msi
文件,双击启动安装过程。
2.2.2 Linux下安装
建议在Linux中使用RPM
(RedHat
系列)或者DEB
(Debian/Ubuntu
系列)包来安装MySQL,在大多数情况,你只需要通过命令行的方式apt-get
安装MySQL-server
和MySQL-client
软件包来安装MySQL。在标准安装中不需要其它的包。如果你想要运行含更多功能的MySQL-Max
服务器,还应当安装MySQL-Max RPM
。必须先安装M MySQL-server RPM
再安装该模块。
2.3 启动mysql服务器
实验楼配置的环境中,默认mysql是没有启动的,我们首先在命令行启动mysql服务器:
$ sudo service mysql start
2.4 连接与断开服务器
为了连接服务器,当调用mysql时,通常需要提供一个MySQL用户名并且很可能需要一个密码。在这里我们使用root
用户连接服务器(密码环境设置为空,无需我们输入密码),输入以下命令连接服务器:
$ mysql -u root
如果有效,你应该看见一些介绍信息:
mysql>
提示符告诉你mysql准备为你输入命令。
成功地连接后,可以在mysql>
提示下输入QUIT
(或q
)随时退出:
2.5 输入查询
这是一个简单的命令,要求服务器告诉MySQL的版本号和当前日期。在mysql>
提示输入如下命令并按回车键:
mysql> SELECT VERSION(), CURRENT_DATE;
能够以大小写输入关键词(建议关键词大写,以后你会感谢我的~)。下列查询是等价的:
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;
这是另外一个查询,它说明你能将mysql用作一个简单的计算器:
mysql> SELECT SIN(PI()/4), (4+1)*5;
至此显示的命令是相当短的单行语句。你可以在一行上输入多条语句,只需要以一个分号间隔开各语句:
mysql> SELECT VERSION(); SELECT NOW();
不必全在一个行内给出一个命令,较长命令可以输入到多个行中。mysql通过寻找终止分号而不是输入行的结束来决定语句在哪儿结束。(换句话说,mysql接受自由格式的输入:它收集输入行但直到看见分号才执行。)
这里是一个简单的多行语句的例子:
mysql> SELECT -> USER() -> , -> CURRENT_DATE;
在这个例子中,在输入多行查询的第一行后,要注意提示符如何从mysql>
变为->
,这正是mysql如何指出它没见到完整的语句并且正在等待剩余的部分。提示符是你的朋友,因为它提供有价值的反馈,如果使用该反馈,将总是知道mysql正在等待什么。
如果你决定不想执行正在输入过程中的一个命令,输入c
取消它:
mysql> SELECT -> USER() -> c mysql>
这里也要注意提示符,在你输入c
以后,它切换回到mysql>
,提供反馈以表明mysql准备接受一个新命令。
下表显示出可以看见的各个提示符并简述它们所表示的mysql的状态:
当你打算在一个单行上发出一个命令时,通常会“偶然”出现多行语句,但是没有终止分号。在这种情况中,mysql等待进一步输入:
mysql> SELECT USER() ->
如果出现这种情况(你认为输完了语句,但是只有一个->
提示符响应),很可能mysql正在等待分号。如果你没有注意到提示符的提示,在意识到你需要做什么之前,你可能会呆坐一会儿。输入一个分号完成语句,mysql将执行:
mysql> SELECT USER() -> ;
在字符串收集期间将出现 '>
和">
提示符(提示MySQL正等待字符串的结束)。在MySQL中,可以写由'
或"
字符括起来的字符串 (例如,'hello'
或"goodbye"
),并且mysql允许输入跨越多行的字符串。当看到一个 '>
或 ">
提示符时,这意味着已经输入了包含以'
或"
括号字符开始的字符串的一行,但是还没有输入终止字符串的匹配引号。这显示你粗心地省掉了一个引号字符。例如:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '>
如果你输入SELECT
语句,然后按Enter(回车)键并等待结果,什么都没有出现。不要惊讶,“为什么该查询这么长呢?”,注意">
提示符提供的线索。它告诉你mysql期望见到一个未终止字符串的余下部分。(你看见语句中的错误吗?字符串Smith
丢掉了第二个引号。)
走到这一步,你该做什么?最简单的是取消命令。然而,在这种情况下,你不能只是输入c
,因为mysql作为它正在收集的字符串的一部分来解释它!相反,应输入关闭的引号字符(这样mysql知道你完成了字符串),然后输入c
:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'> 'c
mysql>
提示符回到mysql>
,显示mysql准备好接受一个新命令了。
知道'>
和">
提示符的含义很重要,因为如果你错误地输入一个未终止的字符串,任何后面输入的行将要被mysql忽略——包括包含QUIT
的行!这可能令人相当困惑,特别是如果取消当前命令前还不知道你需要提供终止引号。