如果您是一位剛接觸資料庫的程式設計師,或者是剛開始用MySQL/MariaDB的新手,本書是您最好的指引。這本實戰指南以簡單易懂的方式說明如何安裝、使用和維護這個資料庫系統。作者Russell Dyer是MariaDB的課程經理,之前是MySQL知識庫的編輯,將透過真實的範例,帶領您學習資料庫設計與資料庫系統管理及操作的知識,並提供練習讓您驗證所學。
.建立與修改資料庫表格、欄位、資料
.了解如何插入、選取、更新與查詢資料
.透過內建的字串函數來查詢、提取、格式化與轉換資料表中的文字
.學習使用內建的數學、統計、日期與時間處理函數
.管理使用者帳戶、備份資料庫與匯入大量資料
.使用PHP或其他程式透過API連接與存取MySQL或MariaDB
Russell J.T. Dyer是一位自由撰稿人,目前任職於MariaDB Ab,之前是MySQL知識庫的編輯。著有《MySQL in a Nutshell》,在《Linux Journal》、ONLamp.com、《The Perl Journal》《Red Hat》雜誌、TechRepublic、Unix Review以及XML.com發表多篇文章。
"MySQL與MariaDB是市占率極高的資料庫系統,本書可以帶您快速入門,透過範例的練習,成為專家。"—Colin Charles, MariaDB首席傳教士
作者簡介:
Russel J.T. Dyer
現職作家和編輯,現居義大利米蘭,在MariaDB Ab擔任課程經理,先前曾於MySQL擔任知識庫編輯,著有《MySQL in a Nutshell》。
章節試閱
MySQL的緣起
當我的事業夥伴David Axmark與我共創MySQL時,那年頭還沒有什麼知名的自由、開放原始碼的資料庫系統。當時市面上的確已有了mSQL,雖然它不是採用開放原始碼,但卻激勵了我們,要為客戶弄一套嶄新的資料庫系統,這就是後來MySQL的濫觴。
當時一心只想滿足客戶的需求,並沒想到要把尚在襁褓中的MySQL發展成如今的模樣。我們從現實的考量和需求著手,不斷地學習、摸索和創造,跟你現在以讀者身分作為MySQL和MariaDB新手的狀況無甚差別。雖然,最後我們真的建構出一套直覺化資料庫的任務,客戶需求也都達成了,但是沒多久我們就體認到,很多機構也都在尋求一套跟我們已經做出來的成品相去不遠的方案。也因此我們決定把軟體公開發行,它就是MySQL。
我們之所以這麼做的動機,一部分是因為覺得透過這種方式,可以把一個真正有用的東西回饋給開放原始碼社群。那時大多數的開放原始碼專案都還談不上能派上什麼實際用場。我們只想讓這世界變得好一點,但當下就連我們也沒料到MySQL會造成這麼大的影響。我們只是希望藉由公開軟體,可以在財務上補貼一下我們對於MySQL的繼續開發,而且越久越好。我們也曾妄想藉由MSQL致富。
當時我們對它信心十足,一心只希望能全天候投注在這個專案上。結果是我們對這世界貢獻的更多,多到遠超過我們的預期。事實上,當今全球超過八成的網站都在執行MySQL,誰都可以說我們助長了網際網路的成長,甚至一切由網際網路發展而來的事物也是。MySQL的影響難以估量。許多後來大放異彩、至今已成為同業巨擘的網站和商業,它們在草創時若不是因為MySQL的開放性和可靠特質,根本沒有開展的機會。在那年頭,這些創辦人和新興公司都缺乏足夠的財源來設置網站。對於還在起步階段、然而卻是創意十足的網路業者來說,商業版資料庫軟體的高昂價格幾於高不可攀,這些業者的名單中不乏谷歌、維基百科和臉書這些如今耳熟能詳的名字。此外,商業版資料庫系統一開始就帶來了問題。首先,它們慢得離譜 ─ 因為它們都未曾針對網頁功能特性進行調校,而這一點對於上述業者來說偏偏是最關鍵的需求。商用版在使用和管理上也都過於困難,何況還需要高薪的開發人員。
基於以上因素,我們才有機會為這些初生之犢的公司提供他們所亟需的工具,以便在日後發展成網際網路上不可或缺的一角,甚至是當今全球人們生活中的一部分。MySQL成了網際網路開發時必備的一部分,至今猶然。沒有任何跡象顯示這個事實會有所變化。MySQL仍在蓬勃發展之中,MariaDB更有甚者。它並沒有像某些人所預期的那樣,一有新式的資料庫系統或是像NoSQL那樣嶄新的方法概念問世,便開始有衰退的趨勢。
MySQL早已成為主流資料庫系統。任何東西只要變成主流,要取代它就有一定的難度。即使有更好的東西出現,人們還是會喜愛已經習以為常、熟悉和常用的事物。若要能取代MySQL成為主流開放原始碼資料庫,它不只要更強大,還要能讓人們不費吹灰之力便可以進行轉移,這也就是何以MariaDB有辦法取代MySQL:基本上它是一樣的東西,只不過功能多了些、未來發展潛力更豐富而已。
MySQL與MariaDB的現況
MySQL與MariaDB並非完美無缺。然而,對多數人而言,MySQL與MariaDB已經足敷所需,而且在很多方面都極為出色。我們所追求的平衡,是發展出一套可以輕鬆在網頁中運作的資料庫系統,同時又擁有最快速的連結方式(connectors)。這要歸功於我們採用了多重線緒(threads)技術,因而能夠比大多數其他資料庫系統處理更高的負載量。我們在一開始研製MySQL時便引進若干時下最先進的技術,而且也不斷與新硬體相容,並針對所有常見的系統和開發手法調校軟體。也因為我們不斷地改進軟體,因而每個月都會對社群版本釋出小改版,而且每年都會有一次大改版。這正顯示出我們不但保持發展的腳步,而且也經常在改良當中。
只要有人願意學習並採用MySQL和MariaDB,你大可以放心,我們一定會針對環境變化持續做改善和調整。在未來還是可以信賴我們。我衷心認為:就是因為我們值得信賴、而人們就愛這一套。雖然學習新事物很有趣,但是如果每隔幾年就要舊事重演一次,久而久之也會變成苦差。在MySQL和MariaDB上,你不用面對這種問題。
我先前曾提到要取代一套主流軟體並非易事。但是以MariaDB為例子,對於已經用慣了MySQL的人來說,實際上沒什麼變動。也就因為如此,大部分的人可以沒什麼困難地轉移到MariaDB,但是他們可以享受到MariaDB既有的、以及日後預計要加入的新功能。由於我們持續改進功能,而且我們很在乎要提供開發人員所需的一切,好讓他們能夠從資料庫中大展身手,MariaDB絕對是始終如一的選擇。
除了伺服器以外
除了運用在網頁以外,MySQL和MariaDB也可以做為獨立應用,嵌入在其他軟體之中。嵌入式MySQL和MariaDB的成長已經遠勝以往。許多應用都正往雲端環境轉移,但是許多商業組織以往所使用的資料庫系統,在轉移為雲端環境時所需的成本通常都貴得嚇人。因此,他們亟需導入一套划算的資料庫系統,要能夠輕鬆配置在雲端環境上。這時就該MySQL和MariaDB登場了。
近年來行動裝置的使用、還有在行動裝置上瀏覽網頁和應用,兩者都有戲劇化的成長;某些網站在行動裝置上的使用量甚至超越了桌上型電腦。不論是行動裝置上的網站和應用、還是使用位於雲端或自家機房內的資料庫,我們都是眾多開放原始碼與商業版本資料庫系統中的不二首選。當你的網站或應用面臨突然增加的流量、或是業務大幅成長時,只有我們擁有最適合的擴展技術。從MariaDB 10.1版起加入的加密功能,更讓你得以在起步之時便能夠確保資料庫安全。要知道許多資料庫系統在初次安裝時是沒有啟用任何安全功能的。
MariaDB:差異與期待
談到我本人對於MariaDB資料庫系統的期待,我目前正在經營一個基金會,確保讓更多公司可以主動參與MariaDB的開發。這是在MySQL的發展史上從未做到的。我們想開發出大家都滿意的東西 ─ 不只是現在,未來也是。
要做到這一點,我們必須邀集更多組織參與。我們樂見像Google這般的成員參與MariaDB基金會。我希望能再有五到十家像Google這樣有影響力的公司入夥。而FOSS就是用這種方式在運作的(FOSS就是Free and Open Source Software Foundation,自由開放軟體基金會的簡寫)。他們引進數家公司協助開發。而這正是FOSS的長處。他們的短處則是沒有一家公司來協調所有的開發工作。我的希望是MariaDB基金會能擔負起協調的責任,而由眾多參與的公司從旁襄助。這樣大家都能從中獲益。我沒法從甲骨文身上看到MySQL採行這種合作模式。這正是MariaDB的差異和優勢。與Oracle合作時,MySQL在開放原始碼的未來方向上充滿變數。然而MariaDB從一開始就設計成要永久保持開放原始碼模式,一切都是開放的。基金會的動機就是要真心追隨開源的標準宗旨。
我之所以要設立MariaDB基金會,是希望它成為一個精神堡壘。萬一MariaDB公司出了什麼毛病,基金會仍然可以確保MariaDB永遠保持開放。這是它主要的角色。其他身份還包括確保想要參與開發MariaDB軟體的公司會跟其他成員一般按照同樣的規則行動,因為有基金會坐鎮。因此若有人製作了MariaDB的軟體修補程式(patch),他們可以提出來並要求放到新的MariaDB小改版裏。在其它的開放原始碼專案當中,要加入修補程式並不容易,你得費盡力氣學著適應原有團隊的程式撰寫風格。要讓所有人接受修補程式更是難上加難。以MySQL在甲骨文的例子來說,他們根本一開始就閉門不納。但是在MariaDB我們決不這樣搞。
就拿Percona來作例子吧。這是一家MariaDB公司的競爭對手,他們想要為MariaDB軟體加入一個修補程式,以便讓他們家的背景程式XtraBackup可以執行得更順暢,但是MariaDB公司的管理階層一點也不想幫競爭對手一把,不過到頭來根本無所謂。MariaDB公司對於哪一個patch可以獲得採用根本無庸置喙。只要基金會認可這支修補程式,它就可以加入軟體當中。基金會只會從技術觀點來審核修補程式,而非基於商業觀點。
能夠存活下來的開放原始碼計畫,必然是基於現實理由而建立。MySQL一開始並不是最好的資料庫解決方案。當時人們對它缺乏的諸多功能頗有微詞。然而它總會面對現實。它會把問題解決掉,並滿足開發者和其他人的需求。而且做得比其它原本應該是理想選擇的產品還更好。我們主動聆聽人們的心聲,並且願意進行改變以解決問題。MariaDB的目標就是要回歸這個原點,並且與客戶和使用者更密切互動。透過這種方式,我們就可以創造出一個雖然未必完美、但也會差到哪裡去的玩意兒。
MYSQL和MariaDB的未來
日後如果你希望MariaDB成為你的專業生涯的一部分,我向你保證,我們會竭盡一切努力來支援並開發這套軟體。我們這裡集合了很多聰明的傢伙,可以保證MariaDB會長命百歲。
展望未來,很多公司都對於採用商業版本資料庫軟體感到憂心,因為他們沒法確信已編譯好的程式碼當中是否暗藏可供盜取資料的後門,或者軟體是否用了什麼特殊的加密方式,可以讓駭客取得資料庫操作權。另一方面,像俄羅斯或是中國這樣的國家也會質疑開放原始碼的資料庫是否安全。我們唯一能讓他們放心的方式,就是大方地秀出原始程式碼,到頭來他們也知道開放原始碼軟體是不得不為的選擇。我衷心期盼未來可以看到MySQL和MariaDB能在國情類似的國家或是組織機構中迅速佔有一席之地,因為我們可以解決他們心目中的疑惑,而商業版本做不到。諷刺的是,一套以透明為宗旨的軟體系統,竟然受到運作並不那麼透明的政府所喜愛。不過我們的軟體並不只吸引了不透明的機構,對於想要讓資料庫更為安全的人來說也是不二選擇。對於希望讓資料內容保持隱密、不想讓駭客、競爭對手或是政府機構取得資料的機構來說,觀念一樣適用。
你在學習MYSQL和MariaDB時的展望
MySQL和MariaDB在資料庫語法上都遵循SQL的慣例,而SQL已經誕生超過卅年。SQL的好處是,卅年間它的變化並不大。只要學會一套多半就能融會貫通。所以如果你已經很熟悉某一套SQL系統,要轉移到另一套也不是什麼難事。學習像是MySQL或是MariaDB這樣的SQL系統時所獲得的基本觀念,到日後身為資料庫開發者或管理者的生涯裡都會依然會派得上用場。
沒有跡象顯示MySQL或是MariaDB會在日後50年中消失。所以過去廿年的MySQL概念,到今天依然適用,接下來數十年或許也一樣。只不過加入了一些新功能或工具來做其它的工作而已。但是對你來說真正不可或缺的,還是基本概念,而它們都在這本書裡。基本功才真正讓你受用無窮。
學習MYSQL和MariaDB時的建議
不要只是用閱覽的方式讀這本書。自己動手安裝一套MySQL或是MariaDB,試著執行書中的範例,並動手做每一章後面的習題。你也應該試著運用這個軟體和每一章所介紹的SQL語句或功能來試著做些有用的事。用用看書中介紹的工具。如果無法從做中學並得到實際經驗,本書甚至其它同類書籍都對你沒有用。如果你也不確定該做些什麼事來汲取經驗,不妨試著用MySQL或是MariaDB架個網站。試著用一套資料庫系統來解決一些語資料相關的問題。生產是生活的一部分。而你正在學的東西也許很快就會在某處派上用場。長此以往你會對學習這件事感到更為有趣。在一開始便使用書中的軟體,你會更容易上手並掌握基本知識。
另一種可以學得更多,同時也是讓你在社群中建立名聲並拓展人脈、在職涯上更進一步的方式,就是主動參與MySQL和MariaDB的論壇、郵件電子報、以及IRC即時討論區。透過所學來協助他人,不但會讓你更受歡迎,你也會在向他人解說從本書中習得基本概念的同時,得到進一步的領悟。
MySQL的緣起
當我的事業夥伴David Axmark與我共創MySQL時,那年頭還沒有什麼知名的自由、開放原始碼的資料庫系統。當時市面上的確已有了mSQL,雖然它不是採用開放原始碼,但卻激勵了我們,要為客戶弄一套嶄新的資料庫系統,這就是後來MySQL的濫觴。
當時一心只想滿足客戶的需求,並沒想到要把尚在襁褓中的MySQL發展成如今的模樣。我們從現實的考量和需求著手,不斷地學習、摸索和創造,跟你現在以讀者身分作為MySQL和MariaDB新手的狀況無甚差別。雖然,最後我們真的建構出一套直覺化資料庫的任務,客戶需求也都達成了,但是沒多久我們...
作者序
MySQL是目前最受歡迎的開放原始碼資料庫系統。對於需要快速、穩定資料庫的公開網站來說,它是不二首選。就算你對它不熟悉,可能也在不知不覺中用過很多次了。當你連上Google、亞馬遜、臉書、維基百科或是其他知名網站時,其實就已經在操作MySQL了。不論是擁有上千頁資料的巨型網站、還是只有寥寥數頁的迷你網站,MySQL都可以在背後擔綱資料運行的角色。即使是與網站無關的應用裡也有它的身影。
MySQL於1995年時由Michael ‘Monty’ Widenius和David Axmark推出,採用GNU通用公開授權(General Public License)。當時他們先成立了MySQL Ab,數年後演變為MySQL(合併為美國公司)。2008年,該公司為昇陽所收購,當時軟體的未來似乎已有某種程度的保證。不料2009年4月甲骨文(MySQL的主要競爭對手,自身便擁有封閉原始碼的資料庫系統產品)併購了昇陽。此舉令許多人憂心忡忡,擔心併購一事會令MySQL的自由開放原始碼特性消失無蹤,連帶影響到眾多曾叱吒全球的網站。幸運的是,併購五年以來並沒有發生這樣的悲劇。MySQL仍在增加新功能,而甲骨文以外的MySQL開發人員數量也還在持續增長當中。但是,由於對甲骨文獨自主導MySQL發展一事感到不悅,Monty便另行創設了一間新公司:Monty Program Ab,並開發了MySQL的分支,亦即MariaDB。在此同時,MySQL, Inc.的前任資深副總Ulf Sandberg和其他MySQL的前員工離開了昇陽與甲骨文,另創SkySQL Ab公司,專門提供MySQL和MariaDB軟體的支援、顧問、教育訓練和其他相關服務。
2013年10月,Monty Program併入SkySQL,並於2014年10月重新改名為MariaDB Ab。但是其軟體授權則歸於MariaDB基金會掌握,因此不會再為甲骨文或任何其他公司所收購。至於與軟體相關的社群,部分已經移轉到MariaDB,因為他們也不喜歡軟體被某一間大型專有權軟體公司把持的感覺。許多作業系統發行廠商、硬體製造商、以及軟體封裝發行業者,現在出貨時都採用同時搭配MySQL或獨自發行MariaDB的方式。很多原本採用MySQL的網站也都換成了MariaDB。這一點並不困難,而且對於大多數使用MySQL的網站應用程式來說,根本不用修改,真的是一行都不用改就可以改換到MariaDB。如果你想利用MariaDB的先進新功能,只需在原本操作MySQL的應用程式中改寫或直接插入新的程式碼就行了,其餘部份都不需改動。儘管所有權、公司名稱、甚至軟體的名字都已變更,但是始於近卅年前的夢想和精神,至今在社群中仍更形強大、活躍,而MariaDB則完全承繼了這一切。
如果你想學會MySQL和MariaDB,儘管放手去做。它一點都不難學、也很好用。本書完全是為MySQL和MariaDB的新手所撰寫的入門書,目的是要讓你可以盡快上手並進入狀況。對於已經略具MySQL經驗、但是仍然對於某些常用關鍵領域感到陌生的入門者來說,本書同樣有用。對新手來說,MySQL和MariaDB沒甚麼不同。因此你,學會一種,就等於學會另一種。也因此本書中MySQL和MariaDB二詞有時會交互使用。
MySQL是目前最受歡迎的開放原始碼資料庫系統。對於需要快速、穩定資料庫的公開網站來說,它是不二首選。就算你對它不熟悉,可能也在不知不覺中用過很多次了。當你連上Google、亞馬遜、臉書、維基百科或是其他知名網站時,其實就已經在操作MySQL了。不論是擁有上千頁資料的巨型網站、還是只有寥寥數頁的迷你網站,MySQL都可以在背後擔綱資料運行的角色。即使是與網站無關的應用裡也有它的身影。
MySQL於1995年時由Michael ‘Monty’ Widenius和David Axmark推出,採用GNU通用公開授權(General Public License)。當時他們先成立了MySQL ...
目錄
PART 1 軟體
第1章 簡介
第2章 安裝 MySQL 和 MariaDB
第3章 基本觀念和 mysql 用戶端
PART 2 資料庫架構
第4章 建立資料庫和資料表
第5章 變更資料表
PART 3 基本資料處理
第6章 插入資料
第7章 查詢資料
第8章 更新與刪除資料
第9章 資料的結合與子查詢
PART 4 內建函式
第10章 字串函式
第11章 日期與時間函式
第12章 彙整與數值函式
PART 5 管理作業及其他
第13章 使用者帳號和權限
第14章 資料庫備份與還原
第15章 大量匯入資料
第16章 應用程式介面
PART 1 軟體
第1章 簡介
第2章 安裝 MySQL 和 MariaDB
第3章 基本觀念和 mysql 用戶端
PART 2 資料庫架構
第4章 建立資料庫和資料表
第5章 變更資料表
PART 3 基本資料處理
第6章 插入資料
第7章 查詢資料
第8章 更新與刪除資料
第9章 資料的結合與子查詢
PART 4 內建函式
第10章 字串函式
第11章 日期與時間函式
第12章 彙整與數值函式
PART 5 管理作業及其他
第13章 使用者帳號和權限
第14章 資料庫備份與還原
第15章 大量匯入資料
第16章 應用程式介面
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。