你知道MySQL 10條鮮為人知的技巧嗎
2024-07-24 12:40:21
供稿:網友
本文為你介紹MySQL中十條鮮為人知的技巧。 MySQL易學易用,且附帶豐富的技術文檔,這二個因素使之被廣泛應用。然而,隨著MySQL發(fā)展之迅速,即使一個MySQL老手有時也會為該軟件出其不意的功能感嘆。本文將為你介紹這些不為人知的特性。 以XML格式查看查詢結果 通過使用傳統(tǒng)—xml 選項調用MySQL命令行客戶程序,你可以以XML格式(而不是傳統(tǒng)的列表形式)來查看MySQL查詢結果。如果你打算將查詢輸出與其它程序集成在一起,這一技巧非常有用,這里是一個例子: 表A shell>mysql--xml mysql> SELECT * FROM test.stories; <?xml version="1.0"?> <resultset statement="SELECT * FROM test.stories"> <row> <id>1</id> <headline>This is a test</headline> <tstamp>2005-07-28 00:14:57</tstamp> </row> <row> <id>2</id> <headline>This is the second test</headline> <tstamp>2005-07-28 00:15:11</tstamp> </row> </resultset> 2 rows in set (0.11 sec) 快速重建索引 通常情況下,如果你想改變服務器的全文搜索變量,你需要在表格中重新建立全文索引,以確保你的更新得到映射。這一操作將會花費大量的時間,特別是如果你需要處理很多數(shù)據的時候。一種快速的解決方法是使用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結構。以下是一個簡單的例子: 表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ù)據 MySQL輸出文件包含一個全部SQL命令列表。如果你想將輸出文件導入到MySQL,這一功能非常實用,但如果目標程序(比如Excel)不能與SQL 相互通訊,這一方法將行不通。在這種情況下,可以通過告訴MySQL以CSV格式建立輸出文件,這種CSV格式很方便地導入到絕大部分的程序。這里演示了 mysqldump的操作過程: shell> mysqldump -T . --fields-terminated-by=", " mydbmytable 這將在當前目錄中生成一個文本文件,包含來自mydb.mytable列表中以逗號為間隔符的記錄。 以激活strict模式減少“bad”數(shù)據的出現(xiàn) MySQL服務器能夠以多種不同的模式運行,而每一種都針對于特定的目的而優(yōu)化。在默認情況下,沒有設置模式。然而,通過在服務器命令行中添加以下選項可以很容易地改變模式的設置并將MySQL以“strict”模式運行: shell> mysqld --sql_mode="STRICT_ALL_TABLES" & 在“strict”模式下,通過MySQL的中止查詢執(zhí)行并返回一個錯誤,服務器的很多自動修正功能都被無效化。同樣,該模式下也將會執(zhí)行更為嚴格的時間檢查。 監(jiān)視服務器 你可以通過運行SHOW STATUS命令獲得一份服務器運行與統(tǒng)計的報告,包括打開連接的次數(shù),激活查詢次數(shù),服務器正常運行時間等等。例如: 表 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>提示符。然而,你可以使用特定的修改內容來改變這一提示符使之變得更為有效,這些內容包括:當前用戶名稱,主機名稱,以及當前選擇的數(shù)據庫。如下所示: 表 G mysql> prompt U:/d> PROMPT set to 'U:/d>' root@localhost:/db1> 從這里的文檔文件你可以獲得支持MySQL客戶程序更改的一個完整列表。