一、实验简介
参考内容列表:
MySQL 官方文档,目前实验楼的实验适配 MySQL 5.5 版本。
MySQL 参考手册中文版,译者说明:这是 MySQL 参考手册,原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。它涉及 MySQL 5.1 至 5.1.2-alpha 版本。
1.1 实验内容
本节实验主要对 MySQL 的服务的安装,启动及运行命令进行说明和实践操作。
1.2 实验知识点
- MySQL 服务
2.1 MySQL 介绍
- MySQL 是一个关系型数据库管理系统,由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
- MySQL 是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
2.2 安装 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 。必须先安装 MySQL-server RPM 再安装该模块。
如果你在百度中搜索安装教程,可能会遇到使用源码进行安装的说明,通过源码安装的优点是可以获取最新的版本,因为软件库中的始终会比官方慢一拍,如果你对 C++ 编译不太熟悉,建议你直接通过相应系统的软件管理工具(ubuntu apt-get;centos yum...),可以避免很多麻烦。
额外提醒:
如果你尝试在 CentOS 7 上面通过 yum 安装 mysql 可能会遇到一些麻烦,这是因为 CentOS 7 不再建议使用官方的 mysql 并且将 mysql 从程序列表中移除了。 由于被甲骨文公司收购的 Mysql 面临闭源的风险,为了规避这个风险,社区基于 mysql 创建了一个分支,名为 mariaDB。它和 mysql 是完全兼容的。因此,在 CentOS 7 上搭建数据库时要选择 MariaDB,安装指令为:
yum install mariadb-server mariadb
实验楼的系统是基于 Ubuntu 的,因此在实验环境中操作时不需要大家额外担心。
2.3 启动 mysql 服务器
实验楼配置的环境中,默认 MySQL 是没有启动的,我们首先在命令行启动 MySQL 服务器:
sudo service mysql start
2.4 连接与断开服务器
为了连接服务器,当调用 mysql 时,通常需要提供一个 MySQL 用户名并且很可能需要一个密码。在这里我们使用 root 用户连接服务器(密码环境设置为空,无需我们输入密码),输入以下命令连接服务器:
mysql -u root
mysql> 提示符告诉你 mysql 准备为你输入命令。
成功地连接后,可以在 mysql> 提示下输入 QUIT 或 EXIT 随时退出:
登录指令中的 '-u' 和 'root' 中间可以不加空格,在一些场景中,添加空格可能会带来意想不到的麻烦,比如通过 mysqladmin 工具修改数据库密码的时候:
- 原密码为:123456
- 新密码为:abcdef
mysqladmin -uroot -p 123456 password abcdef
由于上面的语句在 '-p' 和 '123456' 之间添加了空格,执行结果可能会和你最自然的想法不一样。回车过后程序会让你继续输入密码,再次输入密码然后报错。这是常常令人疑惑,因此要多留意这些小细节。
这是一个简单的命令,要求服务器告诉 MySQL 的版本号和当前日期。在 mysql> 提示输入如下命令并按回车
能够以大小写输入关键词(建议关键词大写,以后你会感谢我的~)。下列查询是等价的:
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 等待进一步输入:
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 的行!这可能令人相当困惑,特别是如果取消当前命令前还不知道你需要提供终止引号。