目錄
1,什么是數據庫?
?2,主流數據庫
3,MySQL介紹
1,MySQL架構
2,SQL分類
3,MySQL存儲引擎
1,什么是數據庫?
數據庫(Database,簡稱DB)是按照數據結構來組織、存儲和管理數據的倉庫。它是長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合。
數據庫管理系統(DBMS)是一種操縱和管理數據庫的大型軟件,用于建立、使用和維護數據庫。它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。?常見的數據庫管理系統有MySQL、SQL?Server、Oracle等。
存儲數據用文件就可以了,為什么還要弄個數據庫?
一般的文件確實提供了數據的存儲功能,但是沒有提供非常好的數據管理能力。站在我們程序員的角度,如果需要對文件內容進行修改,查找以及新增等操作,我們需要使用編程語言編寫程序來實現對文件的操作。而如果文件內容太大,就不方便操作。
而數據庫就可以很好解決這個問題,只需給出字段或者要求,數據庫會給出想要的結果。
文件保存數據有以下缺點:
- 文件的安全性問題。
- 文件不利用數據查詢和管理。
- 文件不利于存儲海量數據。
- 文件在程序中操作不方便。
?2,主流數據庫
1,MySQL:開源,最受歡迎的數據庫,并發性好,適合web應用和中小型程序,不適合做復雜的業務。
2,Oracle:商業數據庫,適合大型項目,復雜的業務邏輯。
3,SQL Server:微軟的產品,商業數據庫,深度集成Windows生態,支持BI和大數據分析。
4,SQLite:嵌入式輕量級數據庫,適合移動端和小型應用(如 Android、iOS)。
5,PostgreSQL:開源,支持 JSON、GIS、全文搜索等擴展,功能最豐富的關系型數據庫。
6,H2:是一個用java開發的嵌入式數據庫。
3,MySQL介紹
1,MySQL架構
MySQL是一個可移植的數據庫,幾乎能在當前所有操作系統上運行,如Unix/Linux、Windows、Mac 和 Solaris。?各種系統在底層實現方面各有不同,但是 MySQL 基本上能保證在各個平臺上的物理體系結構的一致性。
架構圖:
?
MySQL的架構大致可以分為以下幾層:
1,連接層(Client Connectors):負責客戶端與mysql服務器的通信。支持各種主流的編程技術:如Java、C、Python、.NET等,通過各自的API技術與MySQL建立連接。
2,服務層(Server Layer):這是MySQL的核心部分。主要包含以下內容:
(1)連接池(Connection Pool):負責存儲和管理客戶端與數據庫的連接,一個線程負責管理一個連接。
(2)SQL接口:用于接受客戶端發送的各種SQL命令,并返回用戶需要查詢的結果,如DML、DDL、存儲過程、視圖、觸發器等。
(3)解析器(Parser):負責將請求的SQL解析生成一個“解析樹”(AST),然后根據一些MySQL規則進一步檢查解析樹是否合法。
(4)查詢優化器(Optimizer):當“解析樹”通過解析器語法檢查后,將交由優化器將其轉化成執行計劃,然后與存儲引擎交互。
(5)緩存(Query Cache):緩存查詢結果,如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據。
3,存儲引擎層(Storage Engines):負責MySQL中數據的存儲與提取,與底層系統文件進行交互。MySQL存儲引擎是插件式的,支持多種存儲引擎。常見的存儲引擎有InnoDB、MyISAM、Memory等。InnoDB是MySQL的默認存儲引擎,它支持事務、行鎖和外鍵等功能。
4,文件系統層(File System)
存儲數據文件、日志文件及元數據。
表數據文件
InnoDB:?
.ibd
(獨立表空間)或?ibdata1
(共享表空間)。MyISAM:?
.MYD
(數據文件)、.MYI
(索引文件)。日志文件
Redo Log(重做日志):保證事務持久性(
ib_logfile0
,?ib_logfile1
)。Undo Log(回滾日志):保證事務原子性(存儲在?
undo tablespaces
)。Binlog(二進制日志):主從復制和數據恢復(
mysql-bin.000001
)。配置文件:
my.cnf
?或?my.ini
。
可以總結如下圖:
2,SQL分類
DDL【data definition language】數據定義語言,用來維護存儲數據的結構 代表指令: create, drop, alter
DML【data manipulation language】數據操縱語言,用來對數據進行操作 代表指令: insert,delete,update DML中又單獨分了一個DQL,數據查詢語言,代表指令: select
DCL【Data Control Language】數據控制語言,主要負責權限管理和事務 代表指令: grant,revoke,commit?
3,MySQL存儲引擎
存儲引擎是:數據庫管理系統如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術 的實現方法。
連接服務器
mysql? -h 127.0.0.1? -P 3306? -u root -p?
mysql? -u? root? -p
如果沒有寫-h 127.0.0.1,默認連接本地
如果沒有寫-P 3306 ,默認連接3306端口號?
查看存儲引擎:
show engines;
?
?