确保你连接上了服务器如在先前的章节讨论的这样做本身将不选择任何数据库来工作但是那很好从这点讲知道关于如何出询问的一点知识比马上跳至创建表给他们装载数据并且从他们检索数据要来的重要写本节描述输入命令的基本原则使用几个查询你能尝试让自己mysql是如何工作的
这是一个简单的命令要求服务器告诉你它的版本号和当前日期在mysql>提示打入如下命令并按回车键
mysql> SELECT VERSION() CURRENT_DATE;
+++
| version()| CURRENT_DATE |
+++
| alog | |
+++
row in set ( sec)
mysql>
这询问说明关于mysql几件事:
一个命令通常由SQL语句组成随后有一个分号(有一些例外不需要一个分号早先提到的QUIT是他们之一我们将以后看到其它)
当你发出一个命令时mysql发送它给服务器并显示结果然后打出另外一个mysql>显示它准备好接受另外的命令
mysql以一张表格(行和列)显示查询输出第一行包含列的标签随后的行是询问结果通常 列标签是你取自数据库表的列的名字如果你正在检索一个表达式而非表列的值(如刚才的例子)mysql用表达式本身标记列
mysql显示多少行被返回和查询花了多长执行它给你提供服务器性能的一个大致概念因为他们表示时钟时间(不是 CPU 或机器时间)并且因为他们受到诸如服务器负载和网络延时的影响因此这些值是不精确的(为了简洁在本章剩下的例子中不再显示集合中的行)
关键词可以以任何大小写字符被输入下列询问是等价的
mysql> SELECT VERSION() CURRENT_DATE;
mysql> select version() current_date;
mysql> SeLeCt vErSiOn() current_DATE;
这里有另外一个查询它说明你能将mysql用作一个简单的计算器
mysql> SELECT SIN(PI()/) (+)*;
+++
| SIN(PI()/) | (+)* |
+++
| | |
+++
至今显示的命令是相当短的单行语句你甚至能在单行上输入多条语句只是以一个分号结束每一条
mysql> SELECT VERSION(); SELECT NOW();
++
| version()|
++
| alog |
++
++
| NOW() |
++
| :: |
++
一个命令不必全在一个单独行给出所以需要多行的较长命令不是一个问题mysql通过寻找终止的分号而不是寻找输入行的结束来决定你的语句在哪儿结束(换句话说mysql接受自由格式输入它收集输入行但执行他们直到它看见分号)
这里是一个简单的多行语句的例子
mysql> SELECT
> USER()
>
> CURRENT_DATE;
+++
| USER() | CURRENT_DATE |
+++
| joesmith@localhost | |
+++
在这个例子中在你输入一个多行查询的第一行后要注意提示符如何从mysql>变为>这正是mysql如何指出它没见到完整的语句并且正在等待剩余的部分提示符是你的朋友因为它提供有价值的反馈如果你使用该反馈你将总是知道mysql正在等待什么
如果你决定你不想要执行你在输入过程中输入的一个命令打入\c取消它
mysql> SELECT
> USER()
> \c
mysql>
这里也要注意提示符在你打入\c以后它切换回到mysql>提供反馈以表明mysql准备接受一个新命令
下表显示出你可以看见的各个提示符并总结他们意味着mysql在什么状态下
提示符 意思
mysql>准备好接受新命令
>等待多行命令的下一行
>等待下一行收集以单引号()开始的字符串
>等待下一行收集以双引号()开始的字符串
当你打算在一个单行上发出一个命令时多行语句通常偶然出现但是忘记终止的分号在这种情况中mysql等待进一步输入
mysql> SELECT USER()
>
如果这发生在你身上(你认为你输完了语句但是唯一的反应是一个>提示符)很可能mysql正在等待分号如果你没有注意到提示符正在告诉你什么在认识到你需要做什么之前你可能花一会儿时间呆坐在那儿进入一个分号完成语句并且mysql将执行它
mysql> SELECT USER()
> ;
++
| USER() |
++
| joesmith@localhost |
++
>和>提示符出现在在字符串收集期间在MySQL中你可以写由或字符括起来的字符串 (例如hello或goodbye)并且mysql让你进入跨越多行的字符串当你看到一个>或>提示符时这意味着你已经输入了包含以或括号字符开始的字符串的一行但是还没有输入终止字符串的匹配引号如果你确实正在输入一个多行字符串很好但是果真如此吗?不尽然更常见的>和>提示符显示你粗心地省掉了一个引号字符例如
mysql> SELECT * FROM my_table WHERE name = Smith AND age < ;
>
如果你输入该SELECT语句然后按回车键并等待结果什么都没有出现不要惊讶为什么该查询这么长呢?注意>提示符提供的线索它告诉你mysql期望见到一个未终止字符串的余下部分(你在语句中看见错误吗?字符串Smith正好丢失第二个引号)
走到这一步你该做什么?最简单的是取消命令然而在这种情况下你不能只是打入\c因为mysql作为它正在收集的字符串的一部分来解释它!相反输入关闭的引号字符(这样mysql知道你完成了字符串)然后打入\c
mysql> SELECT * FROM my_table WHERE name = Smith AND age < ;
> \c
mysql>
提示符回到mysql>显示mysql准备好接受一个新命令了
知道>和>提示符意味着什么是很重要的因为如果你错误地输入一个未终止的字符串任何比你下一步输入的行好象将要被mysql忽略包括包含QUIT的行!这可能相当含糊特别是在你能取消当前命令前如果你不知道你需要提出终止引号