一、什麼是數據庫?
數據庫(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查詢語言組成部分:
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/更改功能,數據架構支持動態應用程序和開發人員靈活性(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帶來樂趣。