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 指令碼包括一組從開始到結束一次乙個的可執行語句,具有最低限度的錯誤檢查。
如果在批處理模式中使用mysql執行sql 查詢的乙個檔案,則mysql在出現第乙個錯誤後退出,或者,如果指定--force 選項,則不管出現多少錯誤,都不加選擇地執行所有查詢。程式可以圍繞語句提供流程控制,以便可以有選擇地適應查詢的成功或失敗。可以根據另乙個查詢的成功或失敗來執行乙個查詢,或根據前乙個查詢的結果來決定下一步要做的事情。sql 具有非常有限的語句間的連續性,這點也被帶到mysql中。使用乙個查詢的結果,並將它們應用於另乙個查詢中,或將多個查詢結果聯絡在一起是困難的。l a s t _ insert _id() 可用於獲取由前乙個語句最新生成的auto_increment 值,僅僅是關於它的。更一般的情況是,要想檢索一組記錄,然後使用每一條記錄作為一系列複雜的進一步操作的基礎是困難的。例如,檢索乙個消費者列表然後查詢每個消費者的詳細信用歷史,對每個客戶來說可能要包括若干個查詢。在某些情況下,可能想開發票,在發票頭寫上需要聯絡的客戶資訊,然後按次序列出每項條目。mysql不適合這些型別的任務,因為可能需要依賴於前幾個查詢結果的若干查詢,並且這些任務超出了mysql的布局設計的能力。一般來說,除了mysql外,還需要工具來執行包括主-細目關係和具有複雜輸出格式需求的任務。程式提供將查詢連線在一起的「膠」,並可用乙個查詢的輸出作為另乙個查詢的輸入。
5、可以將mysql整合到任何應用程式中。許多程式都利用資料庫的能力提供資訊。通過發布乙個快速查詢,應用程式可以校驗消費者號或檢查一項條目是否在產品清單中。假設乙個客戶要尋找某些作者的所有書,則web 應用程式可以在資料庫中查詢它們,然後將結果顯示在該客戶的瀏覽器上。
通過使用呼叫帶有包含sql 語句的輸入檔案的mysql的外殼指令碼( shell script),可以實現一種初步的「整合」,然後,再使用其他unix實用程式加工這些輸出。但是這可能變得很難看,特別是當任務變得更複雜時。當應用程式不斷增長成為雜亂的修補工作時,它也可能產生一種「在工作,但覺得有錯誤」的感覺。此外,執行其他命令的外殼指令碼的建立過程的開銷可能超過您的預想。但它可能更有效率地與mysql伺服器直接互動,當在應用程式執行的每個階段需要它的時候,都可以精確地提取想要的資訊。針對我們在第1章「mysql和sql 介紹」中安裝的樣例資料庫samp_db,我們已經列舉了若干需要自己編寫與mysql伺服器互動的程式的目標。這些目標中的一些顯示在下面的列表中:
■ 為列印而格式化historical league 目錄。
■ 考慮外觀和聯機目錄的尋找。
■ 通過電子郵件向成員傳送補充通知。
■ 使用web 瀏覽器很容易地將分數輸入到學分冊中。
在一些細節方面,我們將考慮的乙個方面是將mysql的能力與web 環境結合起來。mysql不直接提供對web 應用程式的支援,但通過組合帶有適當的工具的mysql,通過we b可以很容易地訪問資料庫。使用web 伺服器可以指定查詢,向客戶的瀏覽器報告結果。將mysql和web 結合可能有兩個想法:
■ 主要的興趣在於資料庫,只是想使用web 作為工具來獲取對資料更容易的訪問。在這樣的想法下,資料庫的位置是清楚且明顯的,因為它是興趣的焦點。例如,可以編寫web 頁來允許檢視資料庫所包含的表、表的結構,及表的內容。您打算使用web 伺服器來提高對mysql的訪問能力。這可能也是mysql管理者的觀點。
■ 主要的興趣可能是web 站點,為了使站點的內容對訪問者更有價值,您可能想使用mysql作為乙個工具。例如,如果為站點的訪問者執行資訊板或討論清單,則可以使用mysql保留資訊的軌跡。在這種情況下,資料庫的角色更微妙,訪問者甚至可以不關心您必須提供給他在伺服器中執行的部分。您打算使用mysql提高web 伺服器的能力。這可能也是web 站點開發者的乙個觀點。
這些想法並不矛盾。例如,在historical league 情況下,我們想通過允許聯機輸入來作為成員獲取訪問成員目錄內容的一種方法而使用we b。提供對資料庫的訪問是web 的乙個用法。同時,league 的web 站點在某些方面有些不完全,所以向站點增加目錄內容,以便為成員提高站點的價值。增強站點所提供的服務是資料庫的一種用法。
無論您如何看待mysql與web 的結合,實現方法都是類似的,即將前台的web 站點與後台的mysql連線,使用web 伺服器作為媒介。web 伺服器將查詢從使用者傳送到mysql伺服器,檢索查詢結果,然後將它們傳送給客戶,在瀏覽器上顯示。
當然,不一定要聯機處理資料,但這樣做往往有好處,特別是與經過標準的mysql客戶機程式訪問資料做比較時:
■ 通過web 訪問資料,人們可以使用他們喜歡的瀏覽器,在他們喜歡的平台上執行。他們不限制mysql客戶機程式所執行的系統。web 瀏覽器更是這樣,無論mysql客戶機分布如何廣泛。
■ web 介面的使用比獨立命令列的mysql客戶機程式的使用更簡單。
■ web 介面可以根據特殊應用程式的要求來定製。而mysql客戶機程式是用固定介面來完成基本功能的工具。
■ 動態web 頁面擴充了mysql的能力,它可以做到用mysql客戶機很難做到或根本不可能做到的事情。例如,僅用mysql客戶機程式不可能真正地使一體化購買車輛的應用程式組合成整體。
全國計算機等級考試四級考試模擬試題
一 選擇題 共70 題,每題1 分,滿分70 分。其中1 55 題為中文題,56 70 題為英文題 下列各題a b c d 四個選項中,只有乙個是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。1 若乙個子程式起始位址為3k,呼叫指令call 的記憶體位址為k 1,則執行call 指令...
全國計算機等級考試四級考試經驗之談
堅定的信心自學計算機是需要一定的條件的,現在回想起來,我當時的條件不算好 第一,沒有基礎。大專學的是中文,而且完全沒有接觸過電腦,對計算機沒有一點感性認識,甚至不知道學電腦要學些什麼 第二,環境很閉塞。畢業後在乙個偏僻的小鎮教書,身邊沒有人懂電腦,有了疑問沒有人能幫自己解決 第三,缺少硬體條件。開始...
如何合理分配全國計算機四級考試答題時間
計算機四級考試如何安排答題時間 乙個人的考試分數主要取決於他對所學知識的掌握程度,但考試經驗無疑也能對考試成績產生很大影響。考生在走進考場後,應盡快調適好應考心態,接著要做的事情,就是如何充分利用時間,這是臨場發揮的一項重要內容。許多考生常因時間掌握不好造成失誤。他或是毫無時間概念,慢條斯理 或著眼...