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