1. 認識數據庫
1.1 數據庫和數據結構的關系
數據結構:
是指相互之間存在一種或多種特定關系的數據元素的集合,是一個抽象的學科
我們熟知的數據結構有:
順序表、鏈表、棧、隊列、二叉樹、哈希表…
數據庫:
和數據結構不同,它是一類更具體的可以管理數據的軟件。但是實現數據庫的這個軟件,需要用到很多的數據結構
而使用數據庫管理數據具體的功能就包括:
- 描述:描述一條數據如何表示
- 組織:如何將很多數據進行匯總
至于管理的目的就是:
為了增刪改查
1.2 為什么需要數據庫
數據庫要將數據進行管理的前提就是將數據進行存儲。但是存儲數據使用文件就可以了,為什么還要弄個數據庫呢?
因為使用文件保存數據有以下幾個缺點:
- 文件的安全性問題
- 文件不利于數據查詢和管理
- 文件不利于存儲海量數據
- 文件在程序中控制不方便
1.3 數據庫的存儲
當下絕大部分計算機都遵守著馮諾依曼體系結構
數據的存儲一般放在內存儲器和外存儲器(外存儲器包括:硬盤、光盤、U盤、軟盤等,但這里指硬盤)
數據庫是有多種的,并沒有統一規定所有數據庫存放的位置,但主要的數據庫的數據存儲位置如下:
-
大部分數據庫是把數據組織在外存儲上,如:
MySQL
、Oracle
、SQL Server
-
少數數據庫是把數據組織到內存上,如:
Redis
補充: MySQL 為什么要把數據存儲在外存儲器(硬盤)中呢?這里我們就要先了解下內存和硬盤的區別
區別 | 內存 | 外存(硬盤) |
---|---|---|
1 | 內存的訪問速度快 | 硬盤的訪問速度慢 |
2 | 內存的空間小 | 硬盤的空間大 |
3 | 內存貴 | 硬盤便宜 |
4 | 如果掉電,內存上的數據會丟失 | 如果掉電,硬盤的數據不會丟失 |
綜合以上2、3、4的區別,認為 MySQL 使用硬盤來存儲數據更好
2. SQL
2.1 介紹
結構化查詢語言(Structured Query Language
)簡稱 SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統
注意: SQL 和 MySQL 的區別
- SQL 是一種編程語言
- MySQL 是一種軟件,它屬于關系型數據庫的一種,而關系型數據庫都是支持 SQL 的,而非關系型數據庫有的支持,有的不支持 SQL
2.2 分類
SQL 可以分為6部分:
-
數據查詢語言(
DQL
): 其語句也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。 -
數據操作語言(
DML
): 其語句包括動詞INSERT
、UPDATE
和DELETE
。它們分別用于添加、修改和刪除。 -
事務控制語言(
TCL
): 它的語句能確保被 DML 語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT
(保存點)命令、ROLLBACK(回滾)命令。 -
數據控制語言(
DCL
): 它的語句通過 GRANT 或 REVOKE 實現權限控制,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS
可用 GRANT 或 REVOKE 控制對表單個列的訪問。 -
數據定義語言(
DDL
): 其語句包括動詞 CREATE、ALTER 和 DROP。在數據庫中創建新表或修改、刪除表(CREATE TABLE 或 DROP TABLE)、為表加入索引等。 -
指針控制語言(CCL): 它的語句,像
DECLARE CURSOR
、FETCH INTO
和UPDATE WHERE CURRENT
用于對一個或多個表單獨行的操作。
3. 數據庫的類別
數據庫大體可以分為:
- 關系型數據庫
- 非關系型數據庫
3.1 關系型數據庫
介紹:
- 是指采用了關系模型來組織數據的數據庫。簡單來說,關系模型指的就是二維表格模型,而一個關系型數據庫就是由二維表格及其之間的聯系所組成的一個數據組織
- 關系型數據庫都基于標準的 SQL,只是內部的一些實現有區別
常見關系型數據庫:
Oracle
:甲骨文產品,是數據庫中的王者。由于收費,且隨著數據量的增大對機器要求比較高,所以使用成本很高。適用于銀行這類對數據的安全和服務要求很高且本身很有錢的公司
MySQL
:被甲骨文收購,開源免費。現在很多公司普遍使用它
SQL Server
:微軟產品,由于曾經這個數據庫和 windows server
系統進行了捆綁,而大多數服務器系統都是在 Linux 上,所以逐漸失去市場。如今可以支持 Linux
3.2 非關系型數據庫
介紹:
非關系型數據庫一般指 NoSQL
,區別于關系數據庫,它們不保證關系數據的 ACID 特性,都是去掉關系數據庫的關系型特性
不規定基于 SQL 實現
常見非關系型數據庫:
-
redis
:基于鍵值對(key-value) -
mongodb
:基于列族 -
hbase
:基于文檔型
3.3 區別
區別 | 關系型數據庫 | 非關系型數據庫 |
---|---|---|
使用 SQL | 是 | 不強制要求,一般不基于 SQL 實現 |
事務支持 | 支持 | 不支持 |
復雜操作 | 支持 | 不支持 |
海量讀寫操作 | 效率低 | 效率高 |
基本結構 | 基于表和列,結構固定 | 靈活性比較高 |
使用場景 | 業務方面的 OLTP 系統 | 用于數據的緩存或基于統計分析的 OLAP 系統 |
補充:
-
OLTP(On-Line Transaction Processing):
是指聯機事物處理 -
OLAP(On-Line Analytical Processing):
是指聯機分析處理
4. MySQL 的程序結構
MySQL
其實是一個“客戶端-服務器”結構的程序
那么什么是客戶端和服務器呢?下面將簡單介紹
4.1 客戶端和服務器
介紹:
- 客戶端:是主動發起請求的一方
- 服務器:是被動接受請求的一方
-
客戶端給服務器發送的數據,稱為:請求(
Request
) -
服務器給客戶端返回的數據,稱為:響應(
Response
) - 一個服務器同時可能給多個客戶端提供服務
- 大部分客戶端服務器都是這種“一個請求一個響應”的交互模型
- 客戶端和服務器是通過網絡來通信的
示例:
你去飯店吃飯,你跟老板說來一碗農家一碗香,后面老板給你把你點的餐端上來。
此時你就是“客戶端”,飯店老板就是”服務器“,你跟老板點餐就是你的”請求“,老板把你點的餐端上來就是”響應“。而一個老板其實可以服務多個客戶。
4.2 MySQL 的客戶端-服務器結構
當我們使用 MySQL 時,我們其實會遇見以下幾種情況:
- 在同一臺主機安裝
MySQL
客戶端和 MySQL 服務器(我們自己在個人電腦安裝時就是這種情況)
- MySQL 客戶端和
MySQL
服務器分別在兩臺不同的主機上
![]()
- 實際工作中往往是下面這種情況,多臺主機的客戶端連接一臺主機的服務器
注意:
- MySQL 是把數據存儲在服務器上,服務器才是數據庫的本體,負責管理數據
- MySQL 客戶端其實就是一個非常簡單的程序,僅僅是用來和用戶交互的。這個程序可能是:命令行程序、可視化界面的程序、自己代碼實現的程序
4.3 MySQL 服務器
介紹:
- MySQL 服務器其實含有若干個數據庫(每個數據庫視為是一組邏輯上的集合)
- 一個數據庫包含了若干個有關聯的表
- 一個表包含了若干行(每一行都有若干條記錄)
- 一行包含了若干列(每一列都有具體的類型要求)
示例:
假如有一個 MySQL 服務器存儲著 CSDN 的數據,它里面可能有3個數據庫。數據庫1存儲著:用戶信息、用戶排名、文章數量等數據。數據庫2存儲著:活動內容、投稿文章、獎品信息等數據。數據庫2存儲著:視頻、資源等數據。而其中數據庫1中的例如用戶信息等數據,它其實就是一個表,類似于 excel 表,而有關聯的幾個表,就組成了一個數據庫。
注意:
數據庫的含義其實要依照上下文,它可能是一門學科,也可能是一類軟件,有時也指一個服務器,有時還表示一個數據集合等
到此這篇關于MySQL 數據庫的基礎知識的文章就介紹到這了,更多相關MySQL 數據庫內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_51367845/article/details/121299480