本文將為你介紹這些不為人知的特性。
以XML格式查看查詢結果
通過使用傳統—xml 選項調用MySQL命令列客戶程式,你可以以XML格式(而不是傳統的列表形式)來查看MySQL查詢結果。如果你打算將查詢輸出與其它程式整合在一起,這一技巧非常有用,這裡是一個例子:
表A
shell> mysql --xml
mysql> SELECT * FROM test.stories;
1
This is a test
2005-07-28 00:14:57
2
This is the second test
2005-07-28 00:15:11
2 rows in set (0.11 sec)
快速重建索引
通常情況下,如果你想改變伺服器的全文檢索搜尋變數,你需要在表格中重建立立全文索引,以確保你的更新得到映射。這一操作將會花費大量的時間,特別是如果你需要處理很多資料的時候。一種快速的解決方案是使用REPAIR TABLE命令,以下為示範過程:
表B
mysql> REPAIR TABLE content QUICK;
+-----------+--------+----------+----------+
| Table| Op| Msg_type | Msg_text |
+-----------+--------+----------+----------+
| content| repair | status| OK|
+-----------+--------+----------+----------+
1 row in set (0.05 sec)
壓縮一定的表格類型
如果你處理的是唯讀MyISAM表格,MySQL允許你將其壓縮以節省磁碟空間。對此可以使用包括myisampack,如下所示:
表C
shell> myisampackmovies.MYI
Compressing movies.MYD: (146 records)
- Calculating statistics
- Compressing file
41.05%
使用傳統SQL
MySQL支援SQL查詢中的傳統用法,支援IF與CASE結構。以下是一個簡單的例子:
表D
mysql> SELECT IF (priv=1, 'admin', 'guest') As usertype FROM privs WHERE username = 'joe';
+----------+
| usertype |
+----------+
| admin|
+----------+
1 row in set (0.00 sec)
以CSV格式輸出表格式資料
MySQL輸出檔案包含一個全部SQL命令列表。如果你想將輸出檔案匯入到MySQL,這一功能非常實用,但如果目標程式(比如Excel)不能與SQL相互連訊,這一方法將行不通。在這種情況下,可以通過告訴MySQL以CSV格式建立輸出檔案,這種CSV格式很方便地匯入到絕大部分的程式。這裡示範了mysqldump的操作過程:
shell> mysqldump -T . --fields-terminated-by=", " mydbmytable
這將在目前的目錄中產生一個文字檔,包含來自mydb.mytable列表中以逗號為間隔符的記錄。
以啟用strict模式減少“bad”資料的出現
MySQL伺服器能夠以多種不同的模式運行,而每一種都針對於特定的目的而最佳化。在預設情況下,沒有設定模式。然而,通過在伺服器命令列中添加以下選項可以很容易地改變模式的設定並將MySQL以“strict”模式運行:
shell> mysqld --sql_mode="STRICT_ALL_TABLES" &
在“strict”模式下,通過MySQL的中止查詢執行並返回一個錯誤,伺服器的很多自動修正功能都被無效化。同樣,該模式下也將會執行更為嚴格的時間檢查。
監視伺服器
你可以通過運行SHOW STATUS命令獲得一份伺服器運行與統計的報告,包括開啟串連的次數,啟用查詢次數,伺服器正常已耗用時間等等。例如:
表 E
mysql> SHOW STATUS;
+------------------+-------+
| Variable_name| Value |
+------------------+-------+
| Aborted_clients| 0|
| Aborted_connects | 0|
...
| Uptime| 851|
+------------------+-------+
156 rows in set (0.16 sec)
自動返回CREATE TABLE代碼
MySQL允許你自動獲得SQL命令重建立立一個特定的表格。只簡單地運行SHOW CREATE TABLE命令,並查看錶格建立代碼,如下所示:
表 F
mysql> SHOW CREATE TABLE products;
-----------------------------------------------------
| Table| Create Table
+----------+-----------------------------------------
| products | CREATE TABLE `products` (
`id` int(8) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`price` int(10) default NULL,
PRIMARY KEY(`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+----------+-----------------------------------------
1 row in set (0.27 sec)
建立一個更為有用的命令提示:
在預設情況下,MySQL命令列客戶程式顯示一個簡單的mysql>提示符。然而,你可以使用特定的修改內容來改變這一提示符使之變得更為有效,這些內容包括:目前使用者名稱,主機名稱,以及當前選擇的資料庫。如下所示:
表 G
mysql> prompt \U:/\d>
PROMPT set to '\U:/\d>'
root@localhost:/db1>
從這裡的文檔檔案你可以獲得支援MySQL客戶程式更改的一個完整列表。