一、什么是數(shù)據(jù)庫?
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,每個數(shù)據(jù)庫都有一個或多個不同的API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。
我們也可以將數(shù)據(jù)存儲在文件中,但是在文件中讀寫數(shù)據(jù)速度相對較慢。所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來存儲和管理的大數(shù)據(jù)量。所謂的關(guān)系型數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。
RDBMS即關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
1)數(shù)據(jù)以表格的形式出現(xiàn)
2)每行為各種記錄名稱
3)每列為記錄名稱所對應(yīng)的數(shù)據(jù)域
4)許多的行和列組成一張表單
5)若干的表單組成database
二、關(guān)系型數(shù)據(jù)庫(RDBMS)術(shù)語
針對關(guān)系型數(shù)據(jù)庫作如下解釋:
1)關(guān)系型數(shù)據(jù)庫可以簡單的理解為二維數(shù)據(jù)庫,表格式類似于excel表格,我們平時我接觸的數(shù)據(jù)據(jù),一般都是關(guān)系型數(shù)據(jù)庫。
2)關(guān)系型數(shù)據(jù)庫不是唯一的高級數(shù)據(jù)庫模型,也不是最優(yōu)的一種,但是,關(guān)系型數(shù)據(jù)庫是現(xiàn)今使用最廣泛、最易于理解和使用的數(shù)據(jù)庫模型。
3)在我們開始學(xué)習(xí)MySQL數(shù)據(jù)庫前,讓我們先了解下RDBMS的一些術(shù)語:
1數(shù)據(jù)庫: 數(shù)據(jù)庫是一些關(guān)聯(lián)表的集合。
2數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的表看起來像一個簡單的電子表格。
3關(guān)系:可以理解成一張二維表,每個關(guān)系都有一個關(guān)系名,即表名。
4關(guān)系模式:對關(guān)系的描述,在數(shù)據(jù)庫中通常稱之為表結(jié)構(gòu)。
5元組:可以理解成二維表中的一行,在數(shù)據(jù)庫中常被稱作記錄。一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
6屬性:可以理解成二維表中的一列,在數(shù)據(jù)庫中常被成為字段。一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
7域:屬性的取值范圍,也是數(shù)據(jù)庫中某一列的取值限制。
8關(guān)鍵字:一組可以唯一標(biāo)識元組的屬性。數(shù)據(jù)庫中常稱為主鍵有一個或多個列組成。
9冗余:存儲兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。
10主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
11外鍵:外鍵用于關(guān)聯(lián)兩個表。
12復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。
13索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
14參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
4)關(guān)系型數(shù)據(jù)庫特點(diǎn):
1容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,相對與網(wǎng)狀、層次以及其它模型更容易理解。
2使用方便:通過SQL語言程序員和數(shù)據(jù)管理員可以很方便的在邏輯層面操作數(shù)據(jù)庫而不必理解其底層實(shí)現(xiàn)。
3易于維護(hù):豐富的完整性(實(shí)體完整性、參照完整性、用戶自定義完整性)降低數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率。
5)關(guān)系操作:
1數(shù)據(jù)查詢:選擇、投影、連接、并、交、差、除
2數(shù)據(jù)操作:增加、刪除、修改、查詢
6)SQL(Structured Query Language):結(jié)構(gòu)化查詢語言,一種特殊目的的編程語言,數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存儲數(shù)據(jù)以及查詢、更新和管理關(guān)系型數(shù)據(jù)庫。
SQL查詢語言組成部分:
1DDL(Data Definition Languages)語句:數(shù)據(jù)定義語句,用于定義不同的數(shù)據(jù)段、數(shù)據(jù)庫、表、列、索引等數(shù)據(jù)庫的對象定義。常用關(guān)鍵字主要包括create、drop、alter等。
2DML(Data Manipulation Language)語句:數(shù)據(jù)操縱語句,用于添加、刪除、更新和查詢數(shù)據(jù)庫記錄,并檢查數(shù)
據(jù)完整性。常用關(guān)鍵字包括insert、delete、update和select等。
3DCL(Data Control Language)語句:數(shù)據(jù)控制語句,用于控制不同數(shù)據(jù)段直接的許可和訪問級別的語句,用于
定義數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別。常用關(guān)鍵字有g(shù)rant、revoke等。
三、MySQL數(shù)據(jù)庫
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在Web應(yīng)用方面MySQL是最好的RDBMS(Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越,搭配PHP和Apache可組成良好的開發(fā)環(huán)境。
四、MySQL的特點(diǎn)
1)Mysql是開源的,所以你不需要支付額外的費(fèi)用。
2)Mysql支持大型的數(shù)據(jù)庫。可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。
3)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式。
4)Mysql可以允許于多個系統(tǒng)上,并且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
5)Mysql對PHP有很好的支持,PHP是目前最流行的Web開發(fā)語言。
6)MySQL支持大型數(shù)據(jù)庫,支持5000萬條記錄的數(shù)據(jù)倉庫,32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。
7)Mysql是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的Mysql系統(tǒng)。
五、MySQL系統(tǒng)特性
1)使用C和C++編寫,并使用了多種編譯器進(jìn)行測試,保證了源代碼的可移植性。
2)支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。
3)為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和Tcl 等。
4)支持多線程,充分利用 CPU 資源。
5)優(yōu)化的 SQL查詢算法,有效地提高查詢速度。
6)既能夠作為一個單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中。
7)提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。
8)提供 TCP/IP、ODBC 和 JDBC等多種數(shù)據(jù)庫連接途徑。
9)提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。
10)支持大型的數(shù)據(jù)庫??梢蕴幚頁碛猩锨f條記錄的大型數(shù)據(jù)庫。
11)支持多種存儲引擎。
12)在線 DDL/更改功能,數(shù)據(jù)架構(gòu)支持動態(tài)應(yīng)用程序和開發(fā)人員靈活性(5.6新增)。
13)復(fù)制全局事務(wù)標(biāo)識,可支持自我修復(fù)式集群(5.6新增)。
14)復(fù)制無崩潰從機(jī),可提高可用性(5.6新增)。
15)復(fù)制多線程從機(jī),可提高性能(5.6新增)。
六、MySQL數(shù)據(jù)庫實(shí)現(xiàn)模型
MySQL的核心組件(參照上圖)
1)連接池:用于完成用戶認(rèn)證、線程重用、并發(fā)連接數(shù)限制、內(nèi)存檢測以及連接緩存。
2)SQL接口:使用SQL結(jié)構(gòu)查詢語言對數(shù)據(jù)庫就行操作的接口(DDL DML等)
3)Parser:分析器,用來進(jìn)行查詢轉(zhuǎn)換、權(quán)限分析獲取的操作。
4)Optimizer:優(yōu)化器,生成并選擇最佳的訪問路徑。
5)Cache & Buffers:與存儲引擎相關(guān)的I/O性能提升工具。
6)存儲引擎(真正執(zhí)行數(shù)據(jù)查詢操作的工具M(jìn)yISAM、InnoDB、NDB、Archive、Federated、Memory、Merge、Partner、Community、Custom等等)。
有了這篇文章做基礎(chǔ),相信大家對MySQL已經(jīng)不再陌生了吧,接下來小編就和大家深入的學(xué)習(xí)MySQL,享受MySQL帶來樂趣。