这是MySQL 5实力养成暨评量里的全国资料库应用技能测验MySQL 5模拟试题第一回,ㄚ琪试着检验自己的MySQL 5的功力如何,这次的成绩是82分还不错,不过我们还是检讨一下我们错的地方好了。
[adsense][/adsense]
02.下列何项不是资料库系统的功能?
答案是(C)无法供人同时使用,ㄚ琪填的是(D) 提供并行控制确保资料正确性,这题仔细看题意之后,还真囧,应该是不会错的。
05.在两层式应用系统架构下,用户端包含下列哪些应用功能?
答案:(A)使用者介面(User Interface) (B)应用逻辑(Application Logic) (C)营运规则(Business Rules)
ㄚ琪少填了(B),不过这还真有点诡异,在三层式应用系统架构讨论的其实没有很详尽,但是观察力够的应该还是可以解决。
07.采用两层式应用架构有下列哪些缺点需要克服?
答案:(B)每一用户端应用都必须与伺服器连线,当同时上线的使用者很多,会占用伺服器较多的资源 (C)营运规则会随企业的运作而改变,修改营运规则后,会造成新版本软体派发的困难
ㄚ琪多填了(A)看来这不是原因,呵呵。
22.在操作MySQL时,有些字元是有特殊含意的字元(例如:单引号’、双引号”),如果想在字串中使用该字元需使用跳脱符号,请问在MySQL中的跳脱符号是?
答案:(C) \
看错了斜线方向, 😳
30.在运算式中,INTERVAL函式可用来检验括号内第一个值,位在括号内其他数值的区间,试问执行附图中的SQL语法后结果为何?
SELECT INTERVAL(5,1,10,100);
答案:(B) 1
咦?明明想选1的竟然答到2,看来眼睛有点不好,观众可以参阅MySQL ISNULL有讨论过。
38.若要指定MySQL的组态设定档位置及档名,可于执行MySQL时,加入下列何项参数来指定?
答案:(C) -defaults-file
这题我应该没则,我们不曾好好读过这个参数,所以今天就以这个主题来好好研究。
可参阅在MySQL 5.5 Reference Manual :: 4 MySQL Programs :: 4.2 Using MySQL Programs :: 4.2.3 Specifying Program Options :: 4.2.3.4 Command-Line Options that Affect Option-File Handling
或
MySQL 5.1参考手册 :: 4. MySQL程序概述::4.3. 指定程序选项::4.3.2. 使用选项文件里的叙述。
转译成繁体中文如下:
MySQL程式可以从组态档案(有时也称为配置或选项档案)读取启动组态。组态档案提供了一种很方便的方式来指定常用的组态,因此不需要每次运行程式时从命令行输入。
下面的程式支援组态档案:myisamchk、myisampack、mysql、mysql.server、mysqladmin、mysqlbinlog、mysqlcc、mysqlcheck、mysqld_safe、mysqldump、mysqld、mysqlhotcopy、mysqlimport和mysqlshow。
注释:MySQL丛集程式使用的组态档案参见17.4节,“MySQL丛集的配置”。
在Windows中,MySQL程式从以下档案读取启动组态:
| 档案名 | 目的 |
| WINDIR\my.ini | 全域组态 |
| C:\my.cnf | 全域组态 |
| INSTALLDIR\my.ini | 全域组态 |
| defaults-extra-file | 用–defaults-extra-file=path指定的档案,如果有 |
WINDIR资料表示Windows目录的位置。通常为C:\WINDOWS或C:\WINNT。您可以使用下面的命令通过环境变数WINDIR的值确定其确切位置:
C:\> echo %WINDIR%
INSTALLDIR资料表示MySQL的安装目录。一般为C:\PROGRAMDIR\MySQL\MySQL 5.1 Server,其中PROGRAMDIR资料表示程式目录(通常为Windows英文版的Program Files),MySQL 5.1的安装是根据安装和配置向导完成的。参见2.3.5.14节,“my.ini档案的位置”。
在Unix中,MySQL程式从下面的档案读取启动组态:
| 档案名 | 目的 |
| /etc/my.cnf | 全域组态 |
| $MYSQL_HOME/my.cnf | 伺服器相关组态 |
| defaults-extra-file | 用–defaults-extra-file=path指定的档案,如果有 |
| ~/.my.cnf | 用户相关组态 |
MYSQL_HOME是一个环境变数,包含伺服器相关的my.cnf档案驻留的目录路径。
如果未设置MYSQL_HOME,并且DATADIR中有一个my.cnf档案,BASEDIR中没有my.cnf档案,mysqld_safe将MYSQL_HOME设置为DATADIR。否则,如果未设置MYSQL_HOME并且在DATADIR中没有my.cnf,则mysqld_safe将MYSQL_HOME设置为BASEDIR。
典型情况二进制安装的目录为/usr/local/mysql/data或源代码安装的目录为/usr/local/var。请注意这是配置时指定的数据目录的位置,而不是mysqld启动时用–datadir指定的。运行时使用–datadir对寻找组态档案的伺服器没有效果,因为伺服器在处理命令行参量之前寻找这些组态。
MySQL按照上述顺序寻找组态档案,并读存在的组态档案。如果您想要使用的某个组态档案不存在,则用明文文本编辑器建立。如果存在多个组态档案,档案中指定的后读取的组态要优先档案中指定的先读取的组态。
注释:在Unix平台上,MySQL忽略人人可写的配置档案。这是故意的,是一个安全措施。
任何可以在运行MySQL程式时在命令行给出的长组态也可以在组态档案中给出。要想列出程式的适用组态,用–help组态运行程式。
在组态档案中指定组态的语法类似于命令行语法,例外的是要忽略掉两个破折号。例如,命令行中的–quick或–host=localhost在组态档案中应指定为quick或host=localhost。要想在组态档案中指定–loose-opt_name形式的组态,应写为loose-opt_name。
组态档案中的空行被忽略掉。非空行可以采用下面任何形式:
· #注释,;注释
注释行以‘#’或‘;’开头。‘#’注释也可以从行的中部开始。
· [group]
group是您想要设置组态的程式名或组名。在组行后面,任何opt_name或set-variable行适用于组名,直到组态档案结尾或给出其它组行。
· opt_name
等价于命令行中的–opt_name。
· opt_name=value
等价于命令行中的–opt_name=value。在组态档案中,‘=’字元附近可以有空格,而在命令行中是不允许的。您可以用单引号或双引号来引用值。如果值包含一个‘#’注释字元或空格时很有用。
组态名和值前后的空白将自动删除掉。您可以在组态值中使用转义序列‘\b’、‘\t’、‘\n’、‘\r’、‘\\’以及‘\s’来资料表示退格、tab、换行符、回车以及空格字元。
在Windows中,如果某个组态值资料表示一个路径名,应使用‘/’而不是‘\’作为路径名间隔符来指定值。如果使用‘\’,必须用双斜线‘\\’,因为‘\’在MySQL中为转义字元。
如果组态组名与程式名相同,则组内的组态专用于该程式。
所有客户程式(但不能被mysqld)读取[client]组态组。这样允许您指定适用于所有客户端的组态。例如,[client]是用于指定连接伺服器的 密码的理想的组。(但应确保该选项档案只能由您自己读写,以便其他人不能发现您的密码)。一定不要随意在[client]组内放置组态,除非它可以被您使用的所有客户程式识别。如果您试图运行程式,如果程式不理解组态则会显示一条错误消息后退出。
从5.0系列的MySQL 5.0.4开始,可以在组态档案中使用!include指令来包括具体档案和!includedir来搜索组态档案的具体目录。例如,要包括档案/home/mydir/myopt.cnf,可以使用:
!include /home/me/myopt.cnf
要搜索所有以.cnf结尾的档案的目录/home/mydir并作为组态档案读取,应使用:
!includedir /home/mydir
请注意这些组态与节有关。例如,假定您想要使用my.cnf中的某些内容,如下所示:
[mysqld]
!include /home/mydir/myopt.cnf
在这种情况下,只为该伺服器处理档案myopt.cnf,并且!include指令将被客户应用程式忽略。然而,如果您使用下面的部分:
[mysqldump]
!includedir /home/mydir/my-dump-option
则只有mysqldump为以.cnf结尾的档案检查目录/home/mydir/my-dump-option,伺服器或其它客户应用程式均不检查。
注释:目前,在Unix作业系统中,所发现的使用!includedir指令包括的档案的档案名必须以.cnf为延伸名。在Windows中,该指令也为有.ini延伸名(包括.cnf)的档案做检查。
如果您想要建立只由一个具体mysqld伺服器发布系列读取的组态组,组态组可以用[mysqld-5.0]、[mysqld-5.1]等名称。下面的组资料表示–new组态只能用于5.1.x 版本的MySQL伺服器:
[mysqld-5.1]
new
下面是一个典型的全域组态档案:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
在上述的组态档案中,设置key_buffer_size和max_allowed_packet变数的行使用了var_name=value语法。
下面是一个典型的用户组态档案:
[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
[mysql]
no-auto-rehash
connect_timeout=2
[mysqlhotcopy]
interactive-timeout
如果您有一个源代码分发,可以从support-file目录中找到名为my-xxxx.cnf的示范组态档案。如果您有一个二进制分发,在MySQL安装目录的support-file目录中搜寻。在Windows中,示范组态档案也可以位于MySQL的安装目录(如果您不知道在哪里,查阅本节前面或第2章:安装MySQL)。目前有小、中等、大以及非常大的系统的示范组态档案。要想练习这些档案,在Windows中复制到C:\my.cnf或在Unix中复制到根目录的.my.cnf。
注释:在Windows中,可以不显示.cnf组态档案的延伸名。
所有支援组态档案的MySQL程式可以处理下面的命令行组态:
· –no-defaults
不读取任何组态档案。
· –print-defaults
打印从组态档案中获得的程式名和所有组态。
· –defaults-file=path_name
只使用给出的组态档案。path_name是档案的全路径名。
· –defaults-extra-file=path_name
在全域组态档案后但在用户组态档案前读该组态档案。path_name是档案的全路径名。
为了正确工作,每个组态必须紧随命令行中的命令名后,例外情况是–print-defaults可以紧随–defaults-file或–defaults-extra-file。
在shell指令中,可以使用my_print_defaults程式来分析组态档案。下面的例子显示了当要求显示[client]和[mysql]组内发现的组态时my_print_defaults产生的输出:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
开发人员请注意:在C客户程式库中,只是通过处理命令行参量前面的所有匹配组态(即相应组内的组态)来处理组态档案。对于使用多次指定的最后的组态实例的程式,可以很好地工作。如果您有一个C或C++程式按这种方式处理多次指定的组态,但不读取组态档案,只需要新增两行来实现该功能。检查标准MySQL客户程式的源代码来看看如何做。
其它几个MySQL语言接口基于C客户库,它们中的一部分提供了访问组态档案的一种方式。包括Perl和Python。关于接口的详细讯息参见相关文档。
@@ㄚ琪翻完这一篇之后,总算知道了问题出在哪儿,原来组态的英文是option,在MySQL中常见的my.ini或my.cnf会被翻成组态档,而这是考试里的用语,一般我们习惯的翻译会译做选项,这就是差异所在,如果我知道是option的话应该就会选对了,可惜它被翻成组态,我想成config了,所以就猜错了,观众请注意了。