MySQL数据库技术(04)
■ 如何利用mysql 客户机程序与MySQL 通信。
■ SQL 语言的基本语句。(如果您曾经使用过其他R D B M S,从而熟悉S Q L,那么浏览一下这个教程,看看SQL 的MySQL 版与您熟悉的版本有何差别也是很好的。)正如上一节所述, MySQL 采用客户机/服务器体系结构,其中服务器运行在存放数据库的机器上,而客户机通过网络连接到服务器。这个教程主要基于mysql 客户机的应用。m y s q l读取您的SQL 查询,将它们发送给服务器,并显示结果。mysql 运行在MySQL 所支持的所有平台上,并提供与服务器交互的最直接的手段,因此,它首先是一个逻辑上的客户机。
在本书中,我们将用samp_db 作为样例数据库的名称。但是有可能在您完成本例子的过程中需要使用另一个数据库名。因为可能在您的系统上已经有某个人使用了samp_db 这个名称,或者管理员给您指定了另一个数据库名称。在后面的例子中,无论是哪种情况,都用数
据库的实际名称代替s a m p _ d b。表名可以像例子所显示的那样精确地使用,即使系统中的多个人都具有他们自己的样例数据库也是如此。顺便说一下,在MySQL 中,如果有人使用了相同的表名也没什么关系。一旦各个用户都具有自己的数据库, MySQL 将一直保留这些数据库名,防止各用户互相干扰。
1.4.1 基本要求
为了试验这个教程中的例子,必须安装M y S Q L。特别是必须具有对MySQL 客户机和某个MySQL 服务器的访问权。相应的客户机程序必须位于您的机器上。至少需要有m y s q l程序,最好还有m y s q l i m p o r t程序。服务器也可以位于您的机器上,尽管这不是必须的。实际上,只要允许连接到服务器,那么服务器位于何位置都没有关系。若服务器正巧运行在您的机器上,适当的客户机程序又已经安装,那么就可以开始试验了。如果您尚需设法搞到M y S Q L,可参阅附录A“获得和安装软件”的说明。如果您正自己安装M y S Q L,可参阅这一章,或把它给管理员看。如果网络访问是通过一个因特网服务商(I S P)进行的,那么可查看该服务商是否拥有M y S Q L。如果该ISP 不提供MySQL 服务,可查看附录J“因特网服务商”以得到某些选择更适合的服务商的建议。
除M y S Q L软件外,还需要得到创建样例数据库及其表的权限。如果您没有这种权限,可以向MySQL 管理员咨询。管理员可通过运行mysql 并发布如下的命令提供这种权限:
MySQL 与mysql 的区别
为了避免混淆,应该说明,“M y S Q L”指的是整个MySQL RDBMS,而“m y s q l”代表的是一个特定的客户机程序名。它们的发音都是相同的,但可通过不同的大小写字符和字体来区分。关于发音,MySQL 的发音为“m y - e s s - q u e u e - e l l”。我们知道这是因为MySQL 参考指南中是这样发音的。而SQL 的发音为“s e q u e l”或“e s s - q u e u e - e l l”。我不认为哪个发音更好一些。愿意读哪个音都可以,不过在您对别人读的时候,他可能会用他认为是“正确”的发音对您进行纠正。
前一个命令在paul 从l o c a l h o s t(服务器运行在正运行的同一主机)连接时,允许它完全访问samp_db 数据库及它的所有表。它还给出了一个口令s e c r e t。第二个命令与第一个类似,但允许paul 从任何主机上连接(“%”为通配符)。也可以用特定的主机名取代“%”,使p a u l只能从该主机上进行连接。(如果您的服务器允许从localhost 匿名访问,由于服务器搜索授权表查找输入连接匹配的方式的原因,这样一个GRANT 语句可能是必须的。)关于G R A N T语句以及设置MySQL 用户账号的更详细信息,可在第11 章“常规的MySQL 管理”找到。
1.4.2 取得样例数据库的分发包
这个教程在某些地方要涉及来自“样例数据库分发包”中的文件。有的文件含有帮助来设置样例数据库的查询或数据。为了得到这个分发包,可参阅附录A。在打开这个分发包时,将创建一个名为samp_db 的目录,此目录中含有所需的文件。无论您在哪个地方试验与样例数据库有关的例子,建议都移入该目录。
1.4.3 建立和中止与服务器的连接
为了连接到服务器,从外壳程序(即从UNIX 提示符,或从Windows 下的DOS 控制台)激活mysql 程序。命令如下:
其中的“%”在本书中代表外壳程序提示符。这是UNIX 标准提示符之一;另一个为“$”。在Windows 下,提示符类似“c : \ >”。
mysql 命令行的options 部分可能是空的,但更可能的是发布一条类似如下的命令:
在激活mysql 时,有可能不必提供所有这些选项;确切使用的命令请咨询MySQL 管理员。此外,可能还需要至少指定一个名称和一个口令。
在刚开始学习MySQL 时,大概会为其安全系统而烦恼,因为它使您难于做自己想做的事。(您必须取得创建和访问数据库的权限,任何时候连接到数据库都必须给出自己的名字和口令。)但是,在您通过数据库录入和使用自己的记录后,看法就会马上改变了。这时您会很欣赏MySQL 阻止了其他人窥视(或者更恶劣一些,破坏!)您的资料。
下面介绍选项的含义:
■ - h h o s t _ n a m e(可选择形式:- - h o s t =h o s t _ n a m e)
希望连接的服务器主机。如果此服务器运行在与mysql 相同的机器上,这个选项一般可
省略。
■ -u u s e r _ n a m e(可选择的形式:- - u s e r =u s e r _ n a m e)您的MySQL 用户名。如果使用UNIX 且您的MySQL 用户名与注册名相同,则可以省去这个选项;mysql 将使用您的注册名作为您的MySQL 名。在Windows 下,缺省的用户名为O D B C。这可能不一定非常有用。可在命令行上指定一个名字,也可以通过设置USER 变量在环境变量中设置一个缺省名。如用下列set 命令指定paul 的一个用户名:
■ - p(可选择的形式:- - p a s s w o r d)
这个选项告诉mysql 提示键入您的MySQL 口令。注意:可用-pyour_password 的形式(可选择的形式: - - p a s s w o r d = y o u r _ p a s s w o r d)在命令行上键入您的口令。但是,出于安全的考虑,最好不要这样做。选择-p 不跟口令告诉mysql 在启动时提示您键入口令。例如:
在看到Enter password: 时,键入口令即可。(口令不会显到屏幕,以免给别人看到。)请注意,MySQL 口令不一定必须与UNIX 或Windows 口令相同。如果完全省略了-p 选项,mysql 就认为您不需要口令,不作提示。请注意: -h 和-u 选项与跟在它们后面的词有关,无论选项和后跟的词之间是否有空格。而-p 却不是这样,如果在命令行上给出口令, -p 和口令之间一定不加空格。例如,假定我的MySQL 用户名和口令分别为paul 和s e c r e t,希望连接到在我注册的同一机器上运行的服务器上。下面的mysql 命令能完成这项工作:
在我键入命令后, mysql 显示Enter password: 提示键入口令。然后我键入口令( * * * * * *表明我键入了s e c r e t)。如果一切顺利的话, mysql 显示一串消息和一个“ m y s q l >”提示,表示它正等待我发布查询。完整的启动序列如下所示:
为了连接到在其他某个机器上运行的服务器,需要用-h 指定主机名。如果该主机为pit -v i p e r. s n a k e . n e t,则相应的命令如下所示:
在后面的说明mysql 命令行的多数例子中,为简单起见,我们打算省去- h、-u 和-p 选项。并且假定您将会提供任何所需的选项。
有很多设置账号的方法,从而不必在每次运行mysql 时都在连接参数中进行键入。这个问题在1 . 5节“与mysql 交互的技巧”中介绍。您可能会希望现在就跳到该节,以便找到一些更易于连接到服务器的办法。
在建立了服务器的一个连接后,可在任何时候键入下列命令来结束会话:
还可以键入Control-D 来退出,至少在UNIX 上可以这样。