本章介紹MySQL 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(R D B M S)及其所采用的結(jié)構(gòu)化查詢語言(S Q L)。文中給出了應(yīng)該掌握的基本術(shù)語和概念,并介紹了本書中使用的樣例數(shù)據(jù)庫(kù),提供了怎樣利 用MySQL 創(chuàng)建數(shù)據(jù)庫(kù)并對(duì)其進(jìn)行存取訪問的指導(dǎo)。 在此,如果您對(duì)數(shù)據(jù)庫(kù)不熟悉,可能還不能肯定是否需要一個(gè)數(shù)據(jù)庫(kù)或是否能夠使用一 個(gè)數(shù)據(jù)庫(kù)。或者,如果您對(duì)MySQL 或SQL 一無所知,需要一種入門性的指導(dǎo),那么應(yīng)該仔 細(xì)閱讀本章。對(duì)MySQL 或?qū)?shù)據(jù)庫(kù)系統(tǒng)具有一定經(jīng)驗(yàn)的讀者可能希望跳過這一章。但是, 不管是否是初學(xué)者都應(yīng)該閱讀1 . 2節(jié)“一個(gè)樣例數(shù)據(jù)庫(kù)”,因?yàn)檫@一節(jié)中給出的數(shù)據(jù)庫(kù)是熟悉 數(shù)據(jù)庫(kù)的用途和內(nèi)容的一個(gè)最好的樣例,本書將要反復(fù)地用到它。
1.1 MySQL 的用途
本節(jié)介紹MySQL 的應(yīng)用場(chǎng)合。提供MySQL 能夠做什么,以何種方式做的一個(gè)大致的概 念。如果您不需要了解數(shù)據(jù)庫(kù)的用途,或許您已經(jīng)在頭腦中有了要解決什么問題的想法,只 是希望知道怎樣用MySQL 來幫助解決它,那么可以跳到1.2 節(jié)“一個(gè)樣例數(shù)據(jù)庫(kù)”。 數(shù)據(jù)庫(kù)系統(tǒng)本質(zhì)上是一種用來管理信息列表的手段。這些信息可來自不同的地方。例如, 它可以代表研究數(shù)據(jù)、業(yè)務(wù)記錄、顧客請(qǐng)求、運(yùn)動(dòng)數(shù)據(jù)統(tǒng)計(jì)、銷售報(bào)告、個(gè)人愛好信息、人 事記錄、問題報(bào)告或?qū)W生成績(jī)等。雖然數(shù)據(jù)庫(kù)系統(tǒng)能夠處理廣泛的信息,但您不會(huì)僅僅只是 為用它而用它。如果一項(xiàng)工作很容易,那么就沒有理由非得僅為了使用數(shù)據(jù)庫(kù)而將數(shù)據(jù)庫(kù)引 入這項(xiàng)工作。雜貨單就是一個(gè)很好的例子:開列一個(gè)購(gòu)物清單,購(gòu)買后在上面畫叉,然后將 它扔了,極不可能為此事使用一個(gè)數(shù)據(jù)庫(kù)。即使您有一臺(tái)便攜式電腦,也只會(huì)為雜貨單使用 記事本,而不會(huì)啟用數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)系統(tǒng)的力量只在組織和管理的信息很龐大或很復(fù)雜,用手工處理極為繁重時(shí)才能 顯示出來。當(dāng)然,每天處理數(shù)百萬個(gè)業(yè)務(wù)的大公司可以使用數(shù)據(jù)庫(kù)。但是,即使只涉及個(gè)人 愛好的單一人員維護(hù)信息的小公司也可能會(huì)需要數(shù)據(jù)庫(kù)。不難想像由于在信息變得難于管理 之前,使用了數(shù)據(jù)庫(kù)而帶來的好處。考慮下列情形:
■ 您的木工店有幾個(gè)員工。需要保存員工和工資記錄,以便知道給誰付過工資,什么時(shí) 候付的,并且必須對(duì)這些記錄進(jìn)行匯總以便能向稅務(wù)部門報(bào)收益表。還需要明了您的 公司雇人所做的工作以及對(duì)每項(xiàng)工作所做的安排。
■ 您有一個(gè)汽車零部件的庫(kù)房網(wǎng),需要知道哪些庫(kù)房中有給定的零件,以便能填寫顧客 訂單。
■ 作為玩具銷售商,要特別關(guān)注所進(jìn)貨物是否流行。需要知道某項(xiàng)物品的當(dāng)前銷售曲線, 以便能夠估計(jì)是否需要增加庫(kù)存量(對(duì)越來越流行的物品),或減少其庫(kù)存量(從而用 不著存放一大堆銷售不好的東西)。
■ 多年課題研究收集的大量研究數(shù)據(jù)需要進(jìn)行分析以便發(fā)表。希望對(duì)大量的原始數(shù)據(jù)進(jìn) 行加工,得出結(jié)論性的信息,并為更詳細(xì)的統(tǒng)計(jì)分析篩選出觀察樣本子集。
■ 您是位受歡迎的演講者,到全國(guó)各地的各種集會(huì)上進(jìn)行演講,如在畢業(yè)典禮、商務(wù)會(huì) 議、城市集會(huì)和行政大會(huì)上進(jìn)行講演。作了這么多講演,自己很難記住在什么地方講 了些什么,因此一定很愿意保存過去講演的記錄,以幫助準(zhǔn)備以后的演說。如果您回 到了一個(gè)以前曾作過演說的地方,肯定不愿意作一個(gè)與上一次類似的演講,到過的地 方都有一個(gè)記錄能幫助您避免重復(fù)。您必定也愿意注意講演受歡迎的程度。(您在“大 都會(huì)狗窩”俱樂部所做的演講“我為什么喜歡貓”不太成功,那么下次去那兒時(shí)一定 不希望再犯同樣的錯(cuò)誤。)
■ 您是個(gè)教師,需要知道學(xué)分和出勤情況。每當(dāng)您進(jìn)行測(cè)驗(yàn)或考試時(shí),都要記錄學(xué)生們 的學(xué)分。將考試成績(jī)寫在學(xué)分簿上很容易,但以后利用這個(gè)學(xué)分簿卻很費(fèi)事。因此, 在學(xué)期未確定最終成績(jī)時(shí),您寧可不進(jìn)行學(xué)分排序,而且寧可不匯總每個(gè)學(xué)生的學(xué)分。 要統(tǒng)計(jì)出每個(gè)學(xué)生的缺曠課情況也不是一件簡(jiǎn)單的事。
■ 您是某機(jī)構(gòu)的秘書,這個(gè)機(jī)構(gòu)有一個(gè)龐大的會(huì)員姓名地址簿。(所謂機(jī)構(gòu)可以是任何組 織,如一個(gè)專業(yè)團(tuán)體、俱樂部、交響樂團(tuán)或球迷俱樂部等。)您每年都要根據(jù)會(huì)員信息 變化,用字處理器進(jìn)行編輯,然后為每個(gè)會(huì)員們打印一個(gè)地址名錄。 您厭倦了以這種方式維護(hù)這個(gè)地址簿,因?yàn)樗拗沽四盟勺龅氖隆S盟y于以不 同的方式對(duì)各條目排序,不能方便地選擇每個(gè)條目的特定部分(如給出僅由姓名和電話號(hào)碼 組成的清單)。也不能查出某組會(huì)員,如那些不久就需要更新其會(huì)員資格的人員,如果可能的 話,應(yīng)該取消為了找到哪些需要發(fā)送補(bǔ)充說明的會(huì)員而每個(gè)月都要查找所有條目的工作。 而且,您一定不愿意自己做地址簿的編輯工作,但是團(tuán)體沒有那么多的預(yù)算,請(qǐng)人會(huì)產(chǎn) 生問題。您聽說過“無紙化辦公”,這是一種導(dǎo)致電子化保存記錄的方法,但您沒有看到任何 好處。現(xiàn)在會(huì)員記錄是電子化的,但具有諷刺意義的是,除了地址簿的打印外,沒省多少事。 上述情形中有的涉及信息量較大,有的涉及信息量較小。它們的共同特征都是所涉及的 任務(wù)可由手工完成,但是用數(shù)據(jù)庫(kù)系統(tǒng)來做會(huì)有效得多。 使用如像MySQL 這樣的數(shù)據(jù)庫(kù)系統(tǒng)希望看到什么樣的效果呢?這有賴于您的特定需求, 正如上面的例中所看到的那樣,其效果的差異是相當(dāng)大的。我們來考慮一種常見的情形,從 而也是一種相當(dāng)有代表性的數(shù)據(jù)庫(kù)應(yīng)用。 通常利用數(shù)據(jù)庫(kù)管理系統(tǒng)來處理諸如人們用文件柜來完成的那樣一類的任務(wù)。確實(shí)在某 種意義上說,數(shù)據(jù)庫(kù)就像一個(gè)大文件柜,只不過是一個(gè)內(nèi)建的文件編排系統(tǒng)而已。電子化處 理記錄相對(duì)手工處理記錄有很多優(yōu)點(diǎn)。例如,如果您在某種保存有客戶記錄的辦公設(shè)施內(nèi)工 作,那么MySQL 可在某些方面向您提供幫助:
■ 減少記錄編檔時(shí)間。不必為尋找增加新記錄的位置而查看櫥柜的所有抽屜。只要將記 錄放入文件編排系統(tǒng),并令文件編排系統(tǒng)為您將該記錄放入正確的位置即可。
■ 減少記錄檢索時(shí)間。在查找記錄時(shí),不需要自己去尋看每個(gè)記錄以找到含有所需信息 的那個(gè)記錄。假如您在一個(gè)牙科診所中工作。如果想給所有近來未到診斷做過檢查的 病人發(fā)催詢單,只需要求文件編排系統(tǒng)查找合適的記錄即可。當(dāng)然,這樣做會(huì)有別于 吩咐別人去做。吩咐別人去做,您只需說,“請(qǐng)確定哪些病人最近6 個(gè)月內(nèi)沒來過。”
而使用數(shù)據(jù)庫(kù),則需要發(fā)出一串奇怪的“咒語”:
如果您從來沒有看到過類似的東西,可能會(huì)感到相當(dāng)嚇人,但是在一兩秒內(nèi)就能得到結(jié)果遠(yuǎn)勝于用一個(gè)小時(shí)來查找,這應(yīng)該是很有吸引力的。(不管怎樣,不用太發(fā)愁。這些“咒語” 用不了多久就會(huì)不奇怪了。事實(shí)上,只要您讀完本章就能完全理解其含義。)
■ 靈活的查找序列。不需要按記錄存放的固定序列去查看它們(例如,按姓查找)。可以要求文件編排系統(tǒng)以任意的序列查出記錄;如按姓、保險(xiǎn)公司名、最后光臨日期等提出記錄。
■ 靈活的輸出格式。在查找到感興趣的記錄后,不需要手工拷貝其信息。可以讓文件編排系統(tǒng)為您生成一份清單。有時(shí),您可能只需要打印這些信息。有時(shí),您又可能希望在其他程序中使用這些信息。(如,在生成誤了看牙預(yù)約的病人清單后,可將這些信息送入一個(gè)字處理器,打出送給這些病人的通知單。)或者您只對(duì)匯總信息感興趣,如對(duì)所選出記錄數(shù)感興趣。不必自己數(shù)它們;文件編排系統(tǒng)可自動(dòng)生成匯總。
■ 多個(gè)用戶同時(shí)訪問記錄。對(duì)紙上的記錄,如果兩個(gè)人想同時(shí)查找一個(gè)記錄,那么其中一個(gè)人必須等另一個(gè)人找完才能查找。MySQL 提供多個(gè)用戶同時(shí)查找的能力,從而兩個(gè)人可同時(shí)訪問記錄。
■ 記錄的遠(yuǎn)程訪問與電子傳輸。紙面記錄需要有該記錄在手邊才能使用,或者需要有人做拷貝再發(fā)送給您。而電子記錄可以遠(yuǎn)程訪問或進(jìn)行電子化傳輸。如果您的牙醫(yī)專家在多個(gè)診所工作,那么他們可從自己的所在地訪問您的記錄,不需要給他們發(fā)快信。如果需要記錄的某個(gè)人沒有與您的數(shù)據(jù)庫(kù)軟件相同的軟件,但有電子郵件,那么您可以選擇所需的記錄,用電子文檔發(fā)送。
如果您以前使用過數(shù)據(jù)庫(kù)管理系統(tǒng),已經(jīng)了解數(shù)據(jù)庫(kù)的上述諸般好處,可能會(huì)想,怎樣才能超越“取代文件柜”的用途。現(xiàn)在,數(shù)據(jù)庫(kù)系統(tǒng)已經(jīng)可以用來提供過去不能,直到最近才能夠提供的服務(wù)。例如,許多機(jī)構(gòu)以一種與Web 結(jié)合的方式使用數(shù)據(jù)庫(kù),這種方式過去是做不到的。
假如您的公司有一個(gè)庫(kù)存數(shù)據(jù)庫(kù),在顧客詢問庫(kù)房中是否有某項(xiàng)物品,它的價(jià)格是多少時(shí),服務(wù)臺(tái)人員使用這個(gè)數(shù)據(jù)庫(kù),這是數(shù)據(jù)庫(kù)的一種較為傳統(tǒng)的應(yīng)用。但是,如果您的公司向顧客提供一個(gè)可供訪問的Web 站點(diǎn),那么可以提供另一項(xiàng)服務(wù),即:提供一個(gè)允許顧客確定物品價(jià)格和可得性的搜索頁。這給顧客提供了他們所需的信息,提供的方法是讓顧客自動(dòng)地搜索存放在庫(kù)存中的物品信息。顧客可以立即得到信息,不用聽預(yù)先錄好的音,或受服務(wù)臺(tái)是否正在工作的限制。對(duì)于每個(gè)使用您的Web 站點(diǎn)的顧客,所花的費(fèi)用比服務(wù)臺(tái)工作人員轉(zhuǎn)接電話的費(fèi)用還少。(或許,該Web 站點(diǎn)已為這個(gè)付了費(fèi)。)
還有比上述更好的利用數(shù)據(jù)庫(kù)的方法。基于Web的庫(kù)存查詢請(qǐng)求可以不僅僅為顧客提供信息,而且還可以為您自己提供信息。該查詢請(qǐng)求告訴您顧客在找什么,而查詢的結(jié)果又可以讓您知道能否滿足他們的請(qǐng)求。您可能會(huì)在不能滿足顧客需求的方面喪失商機(jī)。因此,記錄有關(guān)庫(kù)存搜索的信息是很有意義的,如記錄:顧客在找什么、庫(kù)存有沒有。然后,可以利用這些信息調(diào)整您的庫(kù)存,更好地為顧客提供服務(wù)。
數(shù)據(jù)庫(kù)的另一新用途是在Web 頁上做標(biāo)題廣告。我也和您一樣不喜歡它們,但事實(shí)是這是一種很流行的MySQL應(yīng)用,可用MySQL 來存儲(chǔ)廣告,然后檢索它們?yōu)閃eb服務(wù)器的顯示而用。此外,MySQL 還可以用來進(jìn)行跟蹤,這種跟蹤涉及哪些廣告起了作用、它們被顯示了多少次、哪個(gè)站點(diǎn)訪問了它們等等信息。
因此,知道如何利用MySQL最好的辦法是自己試試,為此目的您應(yīng)該有一個(gè)試驗(yàn)性的數(shù)據(jù)庫(kù)。
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注