MySQL十條特殊技巧

字號:


    MySQL易學(xué)易用,附帶豐富的技術(shù)文檔,這兩個因素使之被廣泛應(yīng)用。然而,隨著MySQL發(fā)展加快,即使一個MySQL老手有時也會為該軟件出其不意的功能感嘆。本文將為你介紹這些不為人知的特性。
    以XML格式查看查詢結(jié)果
    通過使用傳統(tǒng)—xml 選項調(diào)用MySQL命令行客戶程序,你可以以XML格式(而不是傳統(tǒng)的列表形式)來查看。
    MySQL查詢結(jié)果
    如果你打算將查詢輸出與其它程序集成在一起,這一技巧非常有用,這里是一個例子:
    表A
    shell> mysql --xml
    mysql> SELECT * FROM test.stories;
    1
    This is a test
    2
    This is the second test
    2rows in set (0.11 sec)
    快速重建索引
    通常情況下,如果你想改變服務(wù)器的全文搜索變量,你需要在表格中重新建立全文索引,以確保你的更新得到映射。這一操作將會花費(fèi)大量的時間,特別是如果你需要處理很多數(shù)據(jù)的時候。一種快速的解決。
    方法是使用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允許你將其壓縮以節(jié)省磁盤空間。對此可以使用包括myisampack,如下所示:
    表C
    shell> myisampackmovies.MYI
    Compressing movies.MYD: (146 records)
    - Calculating statistics
    - Compressing file
    41.05%
    使用傳統(tǒng)SQL
    MySQL支持SQL查詢中的傳統(tǒng)用法,支持IF與CASE結(jié)構(gòu)。以下是一個簡單的例子:
    表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格式輸出表格數(shù)據(jù)
    MySQL 輸出文件包含一個全部SQL命令列表。如果你想將輸出文件導(dǎo)入到MySQL,這一功能非常實(shí)用,但如果目標(biāo)程序(比如Excel)不能與SQL相互通訊,這一方法將行不通。在這種情況下,可以通過告訴MySQL ,以CSV格式建立輸出文件,這種CSV格式很方便地導(dǎo)入到絕大部分的程序。這里演示了 mysqldump的操作過程:
    shell> mysqldump -T .
    --fields-terminated-by=", " mydbmytable
    這將在當(dāng)前目錄中生成一個文本文件,包含來自mydb.mytable列表中以逗號為間隔符的記錄。