全國資料庫應用技能測驗MySQL 5模擬試題第一回

這是MySQL 5實力養成暨評量裡的全國資料庫應用技能測驗MySQL 5模擬試題第一回,ㄚ琪試著檢驗自己的MySQL 5的功力如何,這次的成績是82分還不錯,不過我們還是檢討一下我們錯的地方好了。

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)

這題我應該沒則,我們不曾好好讀過這個參數,所以今天就以這個主題來好好研究。

可參閱在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程式可以從組態檔案(有時也稱為配置或選項檔案)讀取啟動組態。組態檔案提供了一種很方便的方式來指定常用的組態,因此不需要每次運行程式時從命令行輸入。

下面的程式支援組態檔案:myisamchkmyisampackmysql.servermysqladminmysqlbinlogmysqlccmysqlcheckmysqld_safemysqldumpmysqldmysqlhotcopymysqlimportmysqlshow

註釋: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了,所以就猜錯了,觀眾請注意了。

Print Friendly, PDF & Email

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料