本書主要包括MySQL的安裝與配置、數據庫的創建、數據表的創建、數據類型和運算符、MySQL函數、查詢數據、數據表的操作(插入、更新與刪除數據)、索引、存儲過程和函數、視圖、觸發器、用戶管理、數據備份與恢復、日志以及性能優化等。最后通過兩個綜合案例的數據庫設計,進一步講述MySQL在實際工作中的應用。重點介紹MySQL安裝與配置、數據類型和運算符以及數據表的操作。本書注重實戰操作,幫助讀者循序漸進地掌握MySQL中的各項技術。
本書共有480個實例和14個綜合案例,還有大量的經典習題。下載文件中贈送了近20小時培訓班形式的視頻教學錄像,詳細講解了書中每一個知識點和每一個數據庫操作的方法和技巧。同時下載文件中還提供了本書所有例子的源代碼,讀者可以直接查看和調用。
本書適合MySQL數據庫初學者、MySQL數據庫開發人員和MySQL數據庫管理員,同時也能作為高等院校相關專業師生的教學用書。
內容全面:涵蓋了所有MySQL的基礎知識點,由淺入深地掌握MySQL數據庫開發技術。
圖文并茂:在介紹案例的過程中,每一個操作均有對應步驟和過程說明。這種圖文結合的方式使讀者在學習過程中能夠直觀、清晰地看到操作的過程以及效果,便于讀者更快地理解和掌握。
易學易用:顛覆傳統“看”書的觀念,變成一本能“操作”的圖書。
案例豐富:把知識點融匯于系統的案例實訓當中,并且結合綜合案例進行講解和拓展。進而達到“知其然,并知其所以然”的效果。
提示說明:本書對讀者在學習過程中可能會遇到的疑難問題以“提示”的形式進行了說明,以免讀者在學習的過程中走彎路。
前 言
本書是面向MySQL數據庫管理系統初學者的一本高質量的書籍。目前國內MySQL需求旺盛,各大知名企業高薪招聘技術能力強的MySQL開發人員和管理人員。本書根據這樣的需求,針對初學者量身定做,內容注重實戰,通過實例的操作與分析,引領讀者快速學習和掌握MySQL開發和管理技術。
本書內容
第1章主要介紹數據庫的技術構成和什么是MySQL,包括數據庫基本概念和MySQL工具。
第2章介紹MySQL的安裝和配置,主要包括Windows平臺下的安裝和配置、Linux平臺下的安裝和配置、如何啟動MySQL服務、如何更改MySQL的配置等。
第3章介紹MySQL數據庫的基本操作,包括創建數據庫、刪除數據庫和MySQL數據庫存儲引擎。
第4章介紹MySQL數據表的基本操作,主要包括創建數據表、查看數據表結構、修改數據表和刪除數據表。
第5章介紹MySQL中的數據類型和運算符,主要包括MySQL數據類型介紹、如何選擇數據類型和常見運算符介紹。
第6章介紹MySQL函數,包括數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數和其他函數。
第7章介紹如何查詢數據表中的數據,主要包括基本查詢語句、單表查詢、使用聚合函數查詢、連接查詢、子查詢、合并查詢結果、為表和字段取別名以及使用正則表達式查詢。
第8章介紹如何插入、更新與刪除數據,包括插入數據、更新數據、刪除數據。
第9章介紹MySQL中的索引,包括索引簡介、如何創建各種類型的索引和如何刪除索引。
第10章介紹MySQL中的存儲過程和函數,包括存儲過程和函數的創建、調用、查看、修改和刪除。
第11章介紹MySQL視圖,主要介紹視圖的概念、創建視圖、查看視圖、修改視圖、更新視圖和刪除視圖。
第12章介紹MySQL觸發器,包括創建觸發器、查看觸發器、觸發器的使用和刪除觸發器。
第13章介紹MySQL用戶管理,主要包括MySQL中的各種權限表、賬戶管理、權限管理和MySQL的訪問控制機制。
第14章介紹MySQL數據庫的備份和恢復,主要包括數據備份、數據恢復、數據庫的遷移和數據表的導出和導入。
第15章介紹MySQL日志,主要包括日志簡介、二進制日志、錯誤日志、通用查詢日志和慢查詢日志。
第16章介紹如何對MySQL進行性能優化,包括優化簡介、優化查詢、優化數據庫結構和優化MySQL服務器。
第17章介紹MySQL Replication復制數據的操作方法和技巧。
第18章介紹MySQL Workbench設計MySQL數據庫的方法和技巧。
第19章介紹MySQL Cluster技術在分布式系統中為MySQL提供的作用。
第20章介紹MySQL Utilities 管理MySQL數據庫的方法和技巧。
第21章介紹MySQL Proxy操作MySQL數據庫的方法和技巧。
第22章介紹PHP操作MySQL數據庫的方法和技巧。
第23章介紹新聞發布系統數據庫的設計方法和實現過程。
第24章介紹論壇系統數據庫的設計方法和實現過程。
本書特色
內容全面:涵蓋了所有MySQL的基礎知識點,由淺入深地掌握MySQL數據庫開發技術。
圖文并茂:在介紹案例的過程中,每一個操作均有對應步驟和過程說明。這種圖文結合的方式使讀者在學習過程中能夠直觀、清晰地看到操作的過程以及效果,便于讀者更快地理解和掌握。
易學易用:顛覆傳統“看”書的觀念,變成一本能“操作”的圖書。
案例豐富:把知識點融匯于系統的案例實訓當中,并且結合綜合案例進行講解和拓展。進而達到“知其然,并知其所以然”的效果。
提示說明:本書對讀者在學習過程中可能會遇到的疑難問題以“提示”的形式進行了說明,以免讀者在學習的過程中走彎路。
超值下載包:本書共有480個詳細實例和14個綜合案例源代碼,能讓讀者在實戰應用中掌握MySQL的每一項技能。下載包中贈送近20小時培訓班形式的視頻教學錄像,使本書真正體現“自學無憂”,令其物超所值。
讀者對象
本書是一本完整介紹MySQL數據庫技術的教程,內容豐富、條理清晰、實用性強,適合以下讀者學習使用:
? MySQL數據庫初學者。
? 對數據庫開發有興趣,希望快速、全面掌握MySQL的人員。
? 對其他數據庫有一定的了解,想轉到MySQL平臺上的開發者。
? 高等院校相關專業的師生。
鳴謝
參與本書編寫人員除了劉增杰外,還有劉玉萍、胡同夫、王英英、肖品、孫若淞、王攀登、王維維、梁云亮、劉海松、陳偉光、包惠利等人參與編寫工作。雖然傾注了編者的努力,但由于水平有限、時間倉促,書中難免有錯漏之處,請讀者諒解。如果遇到問題或有意見和意見,敬請與我們聯系,我們將全力提供幫助,技術支持QQ:2606372761。
課件、源碼、教學視頻下載
本書課件、源碼、教學視頻下載地址(注意數字及字母大小寫)為:
http://pan.baidu.com/s/1bFF1c6
如果下載有問題,請電子郵件聯系booksaga@163.com,郵件主題為“MySQL5.7課件”。
編 者
2016年8月
劉增杰,IT資深專家,從事行業十余年,出版多部作品。
第1章 初識MySQL 1
1.1 數據庫基礎 1
1.1.1 什么是數據庫 1
1.1.2 表 2
1.1.3 數據類型 2
1.1.4 主鍵 2
1.2 數據庫技術構成 3
1.2.1 數據庫系統 3
1.2.2 SQL語言 4
1.2.3 數據庫訪問接口 5
1.3 什么是MySQL 6
1.3.1 客戶機-服務器軟件 6
1.3.2 MySQL版本 6
1.3.3 MySQL的優勢 7
1.3.4 MySQL 5.7的新功能 8
1.4 MySQL工具 8
1.4.1 MySQL命令行實用程序 9
1.4.2 MySQL Workbench 10
1.5 如何學習MySQL 10
第2章 MySQL的安裝與配置 12
2.1 Windows平臺下安裝與配置MySQL 5.7 12
2.1.1 安裝MySQL 5.7 12
2.1.2 配置MySQL 5.7 18
2.2 啟動服務并登錄MySQL數據庫 22
2.2.1 啟動MySQL服務 22
2.2.2 登錄MySQL數據庫 24
2.2.3 配置Path變量 27
2.3 MySQL常用圖形管理工具 28
2.4 Linux平臺下安裝與配置MySQL 5.7 29
2.4.1 Linux操作系統下的MySQL版本介紹 29
2.4.2 安裝和配置MySQL的RPM包 31
2.4.3 安裝和配置MySQL的源碼包 35
2.5 專家解惑 36
2.6 經典習題 36
第3章 數據庫的基本操作 37
3.1 創建數據庫 37
3.2 刪除數據庫 39
3.3 數據庫存儲引擎 39
3.3.1 MySQL存儲引擎簡介 39
3.3.2 InnoDB存儲引擎 41
3.3.3 MyISAM存儲引擎 42
3.3.4 MEMORY存儲引擎 43
3.3.5 存儲引擎的選擇 43
3.4 綜合案例——數據庫的創建和刪除 44
3.5 專家解惑 46
3.6 經典習題 46
第4章 數據表的基本操作 47
4.1 創建數據表 47
4.1.1 創建表的語法形式 47
4.1.2 使用主鍵約束 49
4.1.3 使用外鍵約束 50
4.1.4 使用非空約束 51
4.1.5 使用唯一性約束 52
4.1.6 使用默認約束 53
4.1.7 設置表的屬性值自動增加 53
4.2 查看數據表結構 54
4.2.1 查看表基本結構語句DESCRIBE 54
4.2.2 查看表詳細結構語句SHOW CREATE TABLE 55
4.3 修改數據表 56
4.3.1 修改表名 57
4.3.2 修改字段的數據類型 57
4.3.3 修改字段名 58
4.3.4 添加字段 59
4.3.5 刪除字段 62
4.3.6 修改字段的排列位置 63
4.3.7 更改表的存儲引擎 64
4.3.8 刪除表的外鍵約束 65
4.4 刪除數據表 67
4.4.1 刪除沒有被關聯的表 67
4.4.2 刪除被其他表關聯的主表 67
4.5 綜合案例——數據表的基本操作 69
4.6 專家解惑 77
4.7 經典習題 78
第5章 數據類型和運算符 80
5.1 MySQL數據類型介紹 80
5.1.1 整數類型 80
5.1.2 浮點數類型和定點數類型 82
5.1.3 日期與時間類型 84
5.1.4 文本字符串類型 96
5.1.5 二進制字符串類型 101
5.2 如何選擇數據類型 104
5.3 常見運算符介紹 105
5.3.1 運算符概述 105
5.3.2 算術運算符 106
5.3.3 比較運算符 107
5.3.4 邏輯運算符 116
5.3.5 位運算符 119
5.3.6 運算符的優先級 122
5.4 綜合案例——運算符的使用 123
5.5 專家解惑 125
5.6 經典習題 126
第6章 MySQL函數 127
6.1 MySQL函數簡介 127
6.2 數學函數 128
6.2.1 絕對值函數ABS(x)和返回圓周率的函數PI() 128
6.2.2 平方根函數SQRT(x)和求余函數MOD(x,y) 128
6.2.3 獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x) 129
6.2.4 獲取隨機數的函數RAND()和RAND(x) 130
6.2.5 函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 130
6.2.6 符號函數SIGN(x) 131
6.2.7 冪運算函數POW(x,y)、POWER(x,y)和EXP(x) 132
6.2.8 對數運算函數LOG(x)和LOG10(x) 132
6.2.9 角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x) 133
6.2.10 正弦函數SIN(x)和反正弦函數ASIN(x) 133
6.2.11 余弦函數COS(x)和反余弦函數ACOS(x) 134
6.2.12 正切函數、反正切函數和余切函數 134
6.3 字符串函數 135
6.3.1 計算字符串字符數的函數和字符串長度的函數 135
6.3.2 合并字符串函數CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 136
6.3.3 替換字符串的函數INSERT(s1,x,len,s2) 137
6.3.4 字母大小寫轉換函數 137
6.3.5 獲取指定長度的字符串的函數LEFT(s,n)和RIGHT(s,n) 138
6.3.6 填充字符串的函數LPAD(s1,len,s2)和RPAD(s1,len,s2) 139
6.3.7 刪除空格的函數LTRIM(s)、RTRIM(s)和TRIM(s) 139
6.3.8 刪除指定字符串的函數TRIM(s1 FROM s) 140
6.3.9 重復生成字符串的函數REPEAT(s,n) 141
6.3.10 空格函數SPACE(n)和替換函數REPLACE(s,s1,s2) 141
6.3.11 比較字符串大小的函數STRCMP(s1,s2) 142
6.3.12 獲取子串的函數SUBSTRING(s,n,len)和MID(s,n,len) 142
6.3.13 匹配子串開始位置的函數 143
6.3.14 字符串逆序的函數REVERSE(s) 143
6.3.15 返回指定位置的字符串的函數 144
6.3.16 返回指定字符串位置的函數FIELD(s,s1,s2,…) 144
6.3.17 返回子串位置的函數FIND_IN_SET(s1,s2) 145
6.3.18 選取字符串的函數MAKE_SET(x,s1,s2,…) 145
6.4 日期和時間函數 146
6.4.1 獲取當前日期的函數和獲取當前時間的函數 146
6.4.2 獲取當前日期和時間的函數 146
6.4.3 UNIX時間戳函數 147
6.4.4 返回UTC日期的函數和返回UTC時間的函數 148
6.4.5 獲取月份的函數MONTH(date)和MONTHNAME(date) 148
6.4.6 獲取星期的函數DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 149
6.4.7 獲取星期數的函數WEEK(d)和WEEKOFYEAR(d) 150
6.4.8 獲取天數的函數DAYOFYEAR(d)和DAYOFMONTH(d) 151
6.4.9 獲取年份、季度、小時、分鐘和秒鐘的函數 151
6.4.10 獲取日期的指定值的函數EXTRACT(type FROM date) 152
6.4.11 時間和秒鐘轉換的函數 153
6.4.12 計算日期和時間的函數 153
6.4.13 將日期和時間格式化的函數 156
6.5 條件判斷函數 159
6.5.1 IF(expr,v1,v2)函數 159
6.5.2 IFNULL(v1,v2)函數 160
6.5.3 CASE函數 160
6.6 系統信息函數 161
6.6.1 獲取MySQL版本號、連接數和數據庫名的函數 161
6.6.2 獲取用戶名的函數 163
6.6.3 獲取字符串的字符集和排序方式的函數 163
6.6.4 獲取最后一個自動生成的ID值的函數 164
6.7 加/解密函數 166
6.7.1 加密函數PASSWORD(str) 166
6.7.2 加密函數MD5(str) 167
6.7.3 加密函數ENCODE(str,pswd_str) 167
6.7.4 解密函數DECODE(crypt_str,pswd_str) 167
6.8 其他函數 168
6.8.1 格式化函數FORMAT(x,n) 168
6.8.2 不同進制的數字進行轉換的函數 168
6.8.3 IP地址與數字相互轉換的函數 169
6.8.4 加鎖函數和解鎖函數 170
6.8.5 重復執行指定操作的函數 170
6.8.6 改變字符集的函數 171
6.8.7 改變數據類型的函數 172
6.9 綜合案例——MySQL函數的使用 172
6.10 專家解惑 176
6.11 經典習題 176
第7章 查詢數據 178
......
第22章 PHP操作MySQL數據庫 573
22.1 PHP訪問MySQL數據庫的一般步驟 573
22.2 連接數據庫前的準備工作 574
22.3 PHP操作MySQL數據庫的函數 575
22.3.1 通過MySQLi類庫訪問MySQL數據庫 575
22.3.2 使用MySQLi_connect()函數連接MySQL服務器 577
22.3.3 使用MySQLi_select_db()函數選擇數據庫文件 577
22.3.4 使用MySQLi_query()函數執行SQL語句 578
22.3.5 使用MySQLi_fetch_assoc ()函數從數組結果集中獲取信息 578
22.3.6 使用MySQLi_fetch_object()函數從結果中獲取一行作為對象 578
22.3.7 使用MySQLi_num_rows()函數獲取查詢結果集中的記錄數 579
22.3.8 使用MySQLi_free_result()函數釋放資源 579
22.3.9 使用MySQLi_close()函數關閉連接 579
22.4 綜合實例1——使用insert語句動態添加用戶信息 580
22.5 綜合實例2——使用select語句查詢數據信息 583
22.6 專家解惑 585
22.7 經典習題 585
第23章 新聞發布系統數據庫設計 586
23.1 系統概述 586
23.2 系統功能 587
23.3 數據庫設計和實現 588
23.3.1 設計表 588
23.3.2 設計索引 592
23.3.3 設計視圖 593
23.3.4 設計觸發器 594
23.4 案例總結 595
第24章 論壇管理系統數據庫設計 596
24.1 系統概述 596
24.2 系統功能 597
24.3 數據庫設計和實現 598
24.3.1 設計方案圖表 598
24.3.2 設計表 600
24.3.3 設計索引 603
24.3.4 設計視圖 604
24.3.5 設計觸發器 605
24.4 案例總結 606
第 1 章
初識MySQL
MySQL是一個開放源代碼的數據庫管理系統(DBMS),它是由MySQL AB公司開發、發布并支持的。MySQL是一個跨平臺的開源關系型數據庫管理系統,廣泛地應用在Internet上的中小型網站開發中。本章主要介紹數據庫的基礎知識,通過本章的學習,讀者可以了解數據庫的基本概念、數據庫的構成和MySQL的基本知識。
了解什么是數據庫
掌握什么是表、數據類型和主鍵
熟悉數據庫的技術構成
熟悉什么是MySQL
掌握常見的MySQL工具
了解如何學習MySQL
1.1 數據庫基礎
數據庫由一批數據構成有序的集合,這些數據被存放在結構化的數據表里。數據表之間相互關聯,反映了客觀事物間的本質聯系。數據庫系統提供對數據的安全控制和完整性控制。本節將介紹數據庫中的一些基本概念,包括:數據庫的定義、數據表的定義和數據類型等。
1.1.1 什么是數據庫
數據庫的概念誕生于60年前,隨著信息技術和市場的快速發展,數據庫技術層出不窮,隨著應用的拓展和深入,數據庫的數量和規模越來越大,其誕生和發展給計算機信息管理帶來了一場巨大的革命。
數據庫的發展大致劃分為如下幾個階段:人工管理階段、文件系統階段、數據庫系統階段、高級數據庫階段。其種類大概有3種:層次式數據庫、網絡式數據庫和關系式數據庫。不同種類的數據庫按不同的數據結構來聯系和組織。
對于數據庫的概念,沒有一個完全固定的定義,隨著數據庫歷史的發展,定義的內容也有很大的差異,其中一種比較普遍的觀點認為,數據庫(DataBase,DB)是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。它是一個按數據結構來存儲和管理數據的計算機軟件系統,即數據庫包含兩層含義:保管數據的“倉庫”,以及數據管理的方法和技術。
數據庫的特點包括:實現數據共享,減少數據冗余;采用特定的數據類型;具有較高的數據獨立性;具有統一的數據控制功能。
1.1.2 表
在關系數據庫中,數據庫表是一系列二維數組的集合,用來存儲數據和操作數據的邏輯結構。它由縱向的列和橫向的行組成,行被稱為記錄,是組織數據的單位;列被稱為字段,每一列表示記錄的一個屬性,都有相應的描述信息,如數據類型、數據寬度等。
例如一個有關作者信息的名為authors的表中,每個列包含所有作者的某個特定類型的信息,比如“姓名”,而每行則包含了某個特定作者的所有信息:編號、姓名、性別、專業,如圖1.1所示。
編號 姓名 性別 專業
100
張三 f 計算機
101
李芬 m 會計
102 岳陽 f 園林
圖1.1 authors表的結構與記錄
1.1.3 數據類型
數據類型決定了數據在計算機中的存儲格式,代表不同的信息類型。常用的數據類型有:整數數據類型、浮點數數據類型、精確小數類型、二進制數據類型、日期/時間數據類型、字符串數據類型。
表中的每一個字段就是某種指定數據類型,比如圖1.1中“編號”字段為整數數據,“性別”字段為字符型數據。
1.1.4 主鍵
主鍵(Primary Key)又稱主碼,用于唯一地標識表中的每一條記錄。可以定義表中的一列或多列為主鍵,主鍵列上不能有兩行相同的值,也不能為空值。假如,定義authors表,該表給每一個作者分配一個“作者編號”,該編號作為數據表的主鍵,如果出現相同的值,將提示錯誤,系統不能確定查詢的究竟是哪一條記錄;如果把作者的“姓名”作為主鍵,則不能出現重復的名字,這與現實中的情況不相符合,因此“姓名”字段不適合做為主鍵。
1.2 數據庫技術構成
數據庫系統由硬件部分和軟件部分共同構成,硬件主要用于存儲數據庫中的數據,包括計算機、存儲設備等。軟件部分則主要包括DBMS、支持DBMS運行的操作系統,以及支持多種語言進行應用開發的訪問技術等。本節將介紹數據庫的技術構成。
1.2.1 數據庫系統
數據庫系統有3個主要的組成部分。
數據庫:用于存儲數據的地方。
數據庫管理系統:用于管理數據庫的軟件。
數據庫應用程序:為了提高數據庫系統的處理能力所使用的管理數據庫的軟件補充。
數據庫提供了一個存儲空間用以存儲各種數據,可以將數據庫視為一個存儲數據的容器。一個數據庫可能包含許多文件,一個數據庫系統中通常包含許多數據庫。
數據庫管理系統(DataBase Management System,DBMS)是用戶創建、管理和維護數據庫時所使用的軟件,位于用戶與操作系統之間,對數據庫進行統一管理。DBMS能定義數據存儲結構,提供數據的操作機制,維護數據庫的安全性、完整性和可靠性。
雖然已經有了DBMS,但是在很多情況下,DBMS無法滿足對數據管理的要求。數據庫應用程序(DataBase Application)的使用可以滿足對數據管理的更高要求,還可以使數據管理過程更加直觀和友好。數據庫應用程序負責與DBMS進行通信、訪問和管理DBMS中存儲的數據,允許用戶插入、修改、刪除DB中的數據。
數據庫系統如圖1.2所示:
圖1.2 數據庫系統
1.2.2 SQL語言
對數據庫進行查詢和修改操作的語言叫做SQL。SQL的含義是結構化查詢語言(Structured Query Language)。SQL有許多不同的類型,有3個主要的標準:ANSI(美國國家標準機構)SQL,對ANSI SQL修改后在1992年采納的標準,稱為SQL-92或SQL2。最近的SQL-99標準,從SQL2擴充而來并增加了對象關系特征和許多其他新功能。其次,各大數據庫廠商提供不同版本的SQL,這些版本的SQL不但能包括原始的ANSI標準,而且在很大程度上支持SQL-92標準。
SQL包含以下4個部分。
(1)數據定義語言(DDL):DROP、CREATE、ALTER等語句。
(2)數據操作語言(DML):INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。
(3)數據查詢語言(DQL):SELECT語句。
(4)數據控制語言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等語句。
下面是一條SQL語句的例子,該語句聲明創建一個名叫students的表:
CREATE TABLE students
(
student_id INT UNSIGNED,
name VARCHAR(30),
sex CHAR(1),
birth DATE,
PRIMARY KEY (student_id)
);
該表包含4個字段,分別為student_id、name、sex、birth,其中student_id定義為表的主鍵。
現在只是定義了一張表格,但并沒有任何數據,接下來這條SQL聲明語句,將在students表中插入一條數據記錄:
INSERT INTO students (student_id, name, sex, birth)
VALUES (41048101, 'Lucy Green', ’1’, ’1990-02-14’);
執行完該SQL語句之后,students表中就會增加一行新記錄,該記錄中字段student_id的值為41048101,name字段的值為Lucy Green,sex字段值為1,birth字段值為1990-02-14。
再使用SELECT查詢語句獲取剛才插入的數據,如下:
SELECT name FROM students WHERE student_id = 41048101;
+---------------+
| name |
+--------------+
| Lucy Green |
+--------------+
上面簡單列舉了常用的數據庫操作語句,在這里給讀者一個直觀的印象,讀者可能還不能理解,接下來會在學習MySQL的過程中詳細介紹這些知識。
1.2.3 數據庫訪問接口
不同的程序設計語言會有各自不同的數據庫訪問接口,程序語言通過這些接口,執行SQL語句,進行數據庫管理。主要的數據庫訪問接口有:
1. ODBC
Open Database Connectivity(ODBC,開放數據庫互連)技術為訪問不同的SQL數據庫提供了一個共同的接口。ODBC使用SQL作為訪問數據的標準。這一接口提供了最大限度的互操作性:一個應用程序可以通過共同的一組代碼訪問不同的 SQL 數據庫管理系統(DBMS)。
一個基于ODBC的應用程序對數據庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數據庫操作由對應的DBMS的ODBC驅動程序完成。也就是說,不論是Access、MySQL還是Oracle數據庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的數據庫。
2. JDBC
Java Data Base Connectivity(JDBC,Java數據庫連接)用于Java應用程序連接數據庫的標準方法,是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。
3. ADO.NET
ADO.NET是微軟在.NET框架下開發設計的一組用于和數據源進行交互的面向對象類庫。ADO.NET提供了對關系數據、XML和應用程序數據的訪問,允許和不同類型的數據源以及數據庫進行交互。
4. PDO
PDO(PHP Data Object)為PHP訪問數據庫定義了一個輕量級的、一致性的接口,它提供了一個數據訪問抽象層,這樣,無論使用什么數據庫,都可以通過一致的函數執行查詢和獲取數據。PDO是PHP 5新加入的一個重大功能。
針對不同的程序語言,MySQL提供了不同數據庫的訪問連接驅動,讀者可以在下載頁面(http://dev.MySQL.com/downloads/)下載相關驅動。
1.3 什么是MySQL
MySQL是一個小型關系數據庫管理系統,與其他大型數據庫管理系統(例如Oracle、DB2、SQL Server等)相比,MySQL規模小、功能有限,但是它體積小、速度快、成本低,且它提供的功能對稍微復雜的應用來說已經夠用,這些特性使得MySQL成為世界上最受歡迎的開放源代碼數據庫。本節將介紹MySQL的特點。
1.3.1 客戶機-服務器軟件
主從式架構(Client-server model)或客戶端-服務器(Client/Server)結構簡稱C/S結構,是一種網絡架構,通常在該網絡架構下軟件分為客戶端(Client)和服務器(Server)。
服務器是整個應用系統資源的存儲與管理中心,多個客戶端則各自處理相應的功能,共同實現完整的應用。在客戶/服務器結構中,客戶端用戶的請求被傳送到數據庫服務器,數據庫服務器進行處理后,將結果返回給用戶,從而減少了網絡數據傳輸量。
用戶使用應用程序時,首先啟動客戶端,通過有關命令告知服務器進行連接以完成各種操作,而服務器則按照此請示提供相應的服務。每一個客戶端軟件的實例都可以向一個服務器或應用程序服務器發出請求。
這種系統的特點就是,客戶端和服務器程序不在同一臺計算機上運行,這些客戶端和服務器程序通常歸屬不同的計算機。
主從式架構通過不同的途徑應用于很多不同類型的應用程序,比如,現在人們最熟悉的在因特網上使用的網頁。例如,當顧客想要在當當網站上買書的時候,電腦和網頁瀏覽器就被當作一個客戶端,同時,組成當當網的電腦、數據庫和應用程序就被當作服務器。當顧客的網頁瀏覽器向當當網請求搜尋數據庫相關的圖書時,當當網服務器從當當網的數據庫中找出所有該類型的圖書信息,結合成一個網頁,再發送回顧客的瀏覽器。服務器端一般使用高性能的計算機,并配合使用不同類型的數據庫,比如Oracle、Sybase或者是MySQL等;客戶端需要安裝專門的軟件,比如專門開發的客戶端工具瀏覽器等。
1.3.2 MySQL版本
針對不同用戶,MySQL分為兩個不同的版本:
MySQL Community Server(社區版):該版本完全免費,但是官方不提供技術支持。
MySQL Enterprise Server(企業版服務器):它能夠以很高性價比為企業提供數據倉庫應用,支持ACID事物處理,提供完整的提交、回滾、崩潰恢復和行級鎖定功能。但是該版本需付費使用,官方提供電話技術支持。
MySQL Cluster主要用于架設集群服務器,需要在社區版或企業版基礎上使用。
MySQL的命名機制由3個數字和1個后綴組成,例如:MySQL-5.7.10。
(1)第1個數字(5)是主版本號,描述了文件格式,所有版本5的發行版都有相同的文件格式。
(2)第2個數字(7)是發行級別,主版本號和發行級別組合在一起便構成了發行序列號。
(3)第3個數字(10)是在此發行系列的版本號,隨每次新分發版本遞增。通常選擇已經發行的最新版本。
在MySQL開發過程中,同時存在多個發布系列,每個發布處在成熟度的不同階段。
(1)MySQL 5.7是最新開發的穩定(GA)發布系列,是將執行新功能的系列,目前已經可以正常使用。
(2)MySQL 5.6是比較穩定(GA)發布系列。只針對漏洞修復重新發布,沒有增加會影響穩定性的新功能。
(3)MySQL 5.1是前一穩定(產品質量)發布系列。只針對嚴重漏洞修復和安全修復重新發布,沒有增加會影響該系列的重要功能。
對于MySQL 4.1、4.0和3.23等低于5.0的老版本,官方將不再提供支持。而所有發布的MySQL(Current Generally Available Release)版本已經經過嚴格標準的測試,可以保證其安全可靠地使用。針對不同的操作系統,讀者可以在MySQL官方下載頁面(http://dev.MySQL.com/downloads/)下載到相應的安裝文件。
……