MySQL有一組實用程序。例如,mysqldump 導出表的上下文和結構定義,mysqlimport將數據文件加載到表中, mysqladmin 實現管理w操作,mysql可以使用戶與服務器交互來執行任意的查詢。每個標准的MySQL實用程序都傾向於小巧,重點放在程序可完成特定的、有限的功能。即使mysql也是如此,從感覺上說,mysql比其他實用程序更靈活,因此可以用它來執行任何數量的各種查詢,即它就是為允許向服務器直接發布SQL 查詢,並可查看查詢結果這一單一目的而設計的。
MySQL客戶機這種有限的特性並不是缺點,而是特意設計的。程序是具有通用目的的實用程序;它們並不試圖預料您所想做的所有可能的需要。MySQL的開發者們不贊成編寫大型的、臃腫的程序來試圖做可能想去做的每件事情(而且這樣做的結果將使程序中包括大量的您根本不關心的事情的代碼)。然而,有時有些應用確實有常規客戶機的能力所無法處理的需求。為了處理這些情況,MySQL提供一個客戶機編程庫。這允許您編寫自己的程序,滿足您的應用程序可能具有的任何特定需求。通過允許您對MySQL服務器的訪問,客戶機的開放程度只受您自己想象力的限制了。
編寫自己的程序可以獲取如何特殊的能力呢?讓我們比較一下mysql客戶機和其沒有附加代碼的接口對MySQL服務器的訪問:
可以定制輸入處理
用mysql可以輸入原始的SQL 語句。用自己的程序,可以為用戶提供使用起來更直觀、更容易的輸入方法。用程序可使用戶不必知道SQL—甚至不必知道在完成的任務中數據庫承擔的角色。
輸入信息的采集可能是像命令行風格的提示和值讀取這樣基本的方式,或者可能是使用屏幕管理程序包(如curses 或S - L a n g)、使用Tcl/Tk 的X 窗口或Web 浏覽器格式實現的基於屏幕輸入那樣復雜的方式。
對大多數人來說,通過填寫一定的格式來指定搜索參數的形式比通過發布SELECT語句更容易。例如,一位房地產經紀人,要尋找一定價格范圍、風格或位置的房屋,只要將查尋參數輸入到表格中,就可以最小的代價得到符合條件的內容。輸入新記錄或更新已有記錄也類似地考慮這種應用。在數據輸入部門的鍵盤操作員應該不需要知道像INSERT、REPLACE 或UPDATE 這樣的SQL 語法。
在最終用戶和MySQL服務器之間提出輸入采集層的另一個原因是可以校驗用戶提供的輸入。例如,可以檢查數據,確認它們是符合MySQL要求的格式,或可以要求填寫特定的區域。
可以定制輸出
mysql的輸出基本上是無格式的;可以選擇以制表符為分隔符或以表格形式輸出。如果想要使輸出結果看起來比較好,則必須自己對它進行格式化。這些需求可能像打印“Missing”而不是NULL 這樣簡單,也可能更復雜。考慮下面的報告:
這個報告包括幾個特定的元素:
1、定制標題。
2、在State 列中重復值的抑制以便只在更改時才將這些值打印出來。
3、小計和總計的計算。
4、數字格式,如9 4 3 8 4 . 2 4,打印為美元數量為$ 9 4 , 3 8 4 . 2 4。對於一些任務,甚至可能不需要任何輸出。您可能正在對計算向後插入到另一個數據庫表中的結果進行簡單地檢索信息。除了用戶運行這個查詢以外,甚至可能還想將這個結果輸出到其他地方。例如,如果正在提取姓名和電子郵件地址以自動地填入為批量電子郵件生成信件格式的過程中,則程序產生輸出。但是該輸出由郵件接受者的信息組成,而沒有運行程序人員的信息。可以在SQL自身施加的約束條件的環境下工作。SQL 不是一種帶有條件選擇、循環和子例程的流程控制結構的過程語言。SQL 腳本包括一組從開始到結束一次一個的可執行語句,具有最低限度的錯誤檢查。