MySQL数据库介绍
目錄
前言
一、數據庫的基本概念
1.數據(Data)
2.表
3.數據庫
4.數據庫管理系統(DBMS)
5.數據庫系統
二、數據庫系統發展史
1.第一代數據庫
2.第二代數據庫
3.第三代數據庫
三、當今主流數據庫介紹
1.SQL Server (微軟公司產品)
2.Oracle (甲骨文公司產品)
3.DB2 (IBM公司產品)
4.MySQL (甲骨文公司收購)
5.數據庫類型
四、關系數據庫(MySQL)
1.實體
2.屬性
3.聯系
4.關系數據庫的存儲結構
五、關系數據庫應用
?六、非關系數據庫(NoSQL)
七、MySQL數據庫介紹
八、MySQL商業版與社區版
九、MySQL產品陣營
前言
數據庫概述
前置:LAMP LNMP?
企業架構,服務定位示例
前言:
數據:圖片、視頻、關系、音頻、字符、字符串等等。
數據的作用:持久化保存(磁盤)、高可靠(宕機不會丟失,安全性保障),高可用(HA冗余、備份),數據的快速提取( 目錄、索引)。
一、數據庫的基本概念
1.數據(Data)
(1)描述事物的符號記錄。
(2)包括數字,文字、圖形、圖像、聲音、檔案記錄等。
(3)以“記錄”形式按統一的格式進行存儲。
(4)使用一些介質進行存儲,例如文字存在文檔中。
(5)數據庫可以完成數據持久化保存+快速提取。
(6)數據如何保存:最外層是mysql服務→mysql 數據庫→數據表→記錄為行,字段為列→數據保存在一行行記錄中。
(7)對于存儲在數據庫中的數據進行管理、使用,需要通過編寫一系列的規則→SQL語句( 命令行形式)。
(8)SQL語句按功能分類:增刪改查。
2.表
(1)將不同的記錄組織在一起。
(2)用來存儲具體數據。
3.數據庫
(1)表的集合,是存儲數據的倉庫。
(2)以一定的組織方式存儲的相互有關的數據集合。
4.數據庫管理系統(DBMS)
是實現對數據庫資源有效組織、管理和存取的系統軟件。
5.數據庫系統
(1)是一個人機系統,由硬件、OS、數據庫、DBMS、 應用軟件和數據庫用戶組成。
(2)用戶可以通過DBMS或應用程序操作數據庫。
二、數據庫系統發展史
1.第一代數據庫
(1)自20世紀60年代起,第一代數據庫系統問世。
(2)是層次模型與網狀模型的數據庫系統。
(3)為統一管理和共享數據提供了有力的支撐。
2.第二代數據庫
(1)20世紀70年代初,第二代數據庫一關系數據庫開始出現。
(2)20世紀80年代初,IBM公司的關系數據庫系統DB2問世,開始逐步取代層次與網狀模型的數據庫,成為行業主流。
(3)到目前為止,關系數據庫系統仍占領數據庫應用的主要地位。
3.第三代數據庫
引申:SQL+NoSQL組合使用(唯一性)SQL+MQ消息隊列
為了解決單臺SQL數據庫處理并發能力有限的問題,為了提高用戶加載時的反饋效率來提高體驗感
web→redis→mysql
CPU→緩存→內存→磁盤? ? ? ? ? ? ? 以前
i7? i5? 一級? 二級? 緩存
(1)自20世紀80年代開始,適應不同領域的新型數據庫系統不斷涌現。
(2)面向對象的數據庫系統,實用性強、適應面廣。
(3)20世紀90年代后期,形成了多種數據庫系統共同支撐應用的局面。
(4)一些新的元素被添加進主流數據庫系統中。
例如,Oracle支持的"關系對象”數據庫模型。
三、當今主流數據庫介紹
1.SQL Server (微軟公司產品)
(1)面向Windows操作系統
(2)簡單、易用
2.Oracle (甲骨文公司產品)
(1)面向所有主流平臺,
(2)安全、完善,操作復雜
3.DB2 (IBM公司產品)
(1)面向所有主流平臺
(2)大型、安全、完善
4.MySQL (甲骨文公司收購)
免費、開源、體積小
5.數據庫類型
關系型數據庫、非關系型數據庫
(1)關系型數據庫(SQL): 存儲的往往是字符、字符串、數值、布爾值等 (磁盤)
(2)非關系型數據庫(NoSQL) :存儲的往往是圖片、視頻、語音等( 內存)?
(3)時序數據庫(TSDB) :心電圖,持續性,根據時間點進行變化的一組連續性的數據(時序數據)
四、關系數據庫(MySQL)
主要的核心數據→ Oracle PostgreSQL
菜單、普通數據→ Mysql 緩沖層文件系統
實體-關系 E-R
記錄(行)表示了一個實體(的屬性)
而E-R圖:
實體與實體之間的聯系(關系)
即表與表的關系
客戶編碼:主鍵(類比入學學號)
主鍵特性:唯一、 非空
鹽值加密→用于與數據庫通訊時
1.關系數據庫系統是基于關系模型的數據庫系統。
2.關系模型的數據結構使用簡單易懂的維數據表。
3.關系模型可用簡單的“實體關系”? (E-R)圖來表示。
4.E-R圖中包含了實體(數據對象)、關系和屬性三個要素。
1.實體
也稱為實例,對應現實世界中可區別于其他對象的“事件”或事物
如銀行客戶、銀行賬戶等
2.屬性
實體所具有的某一特性, 一個實體可以有多個屬性
如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性
3.聯系
實體集之間的對應關系稱為聯系,也稱為關系
如銀行客戶和銀行賬戶之間存在“儲蓄”的關系
所有實體及實體之間聯系的集合構成一個關系數據庫
4.關系數據庫的存儲結構
表
記錄:行
字段(屬性):列
以行+列的形式就組成了表( 數據存儲在表中)
數據庫
多張表存儲在數據庫中
"關系型數據庫"表與表字段/屬性的關聯
關系數據庫的存儲結構是二維表格。
在每個二維表中
(1)每一行稱為一條記錄,用來描述一個對象的信息。
(2)每一列稱為一個字段,用來描述對象的一個屬性。
五、關系數據庫應用
| 關系型數據庫 | 應用舉例 |
| Oracle,MySQL | 12306用戶信息系統 |
| SQLServer、 Sybase? | 淘寶賬號系統 |
| Informix、access | 聯通手機號信息系統 |
| DB2、FoxPRO | 銀行用戶賬號系統 網站用戶信息系統. |
?六、非關系數據庫(NoSQL)
MongoDB 、Redis (內存數據庫/緩存數據庫) K-V鍵值對、與之類似的Memcache, K-V鍵值對
redis -memecache對比:
相同點:存儲高熱數據(在內存中高速運行)
不同點(優勢) : redis可以做持 久化保存(保存在磁盤),可以存儲對象
K-V: workdir=/usr/ local/nginx/
KEY - VOLUME
關系型數據庫:適用于對關系很明確的數據建立模型、定義、存儲數據
非關系型數據庫:存儲海量數據,給與”大數據“進行分析,篩選出有價值的部分
引申: redis 持久化方式
以鍵值存儲數據,數據保存在內存中,但會定期將數據寫入磁盤(持久化方式)
高德:實時分析平臺,
使用非關系型數據庫存儲,如果需要持久化,就可以使用redis
1.非關系數據庫也被稱作NoSQL (Not Only SQL)
2.存儲數據不以關系模型為依據,不需要固定的表格式
3.非關系型數據庫的優點
(1)數據庫可高并發讀寫
(2)對海量數據高效率存儲與訪問
(3)數據庫具有高擴展性與高可用性
4.常用的非關系數據庫:Redis、mongoDB等
七、MySQL數據庫介紹
1.一款深受歡迎的開源關系型數據庫
2.Oracle旗下的產品
3.遵守GPD協議,可以免費使用與修改
4.特點
(1)性能良好、服務穩定
(2)開源、無版權限制、成本低
(3)多線程、多用戶
(4)基于C/S (客戶端/服務器)架構
(5)安全可靠
5.日志
(1)數據庫日志文件用于備份,恢復,故障定位、分析是最核心的部分
(2)mysql 與oracle 日志有所區別
(3)mysql 寫一條數據,同步到日志中一條
PS:insert into ky11 (id, name, score) values (1, ' zhangsan' ,20) ;
(4)oracle:重做日志組
1)一個組中至少3個日志成員,輪流存儲日志
2)還會有另一個組與之同步/備份
3)阿里云OSS對象存儲,一式三份備份(使用重做日志組思想)
4)對象存儲:存儲大都是一些靜態文件,圖片、音頻、視頻
5)不能直接在對象存儲中修改數據
6)飛天平臺,盤古系統,鐘馗:安全,女媧:選舉/調度,盤古一式三份
6.Mysql存儲引擎
myisam 和innodb
1)myisam: 快速讀取,不支持事務
2)innodb: 更注重寫,支持事務
7.mysql數據庫管理
describe user;
(1)Mysql做為SQL數據庫的特性Mysql的語言SQL語句來控制增刪改查
(2)增刪改查按照類型劃分的
(3)具體的語句操作(基操)
基于SQL語句的進階→更好的通過SQL語句的管理、控制,讓Mysql處理能力更為效率
(4)高階SQL語句用法
1)備份、恢復
2)集群設計、集群演變的理念:
3)單臺Mysql→壓力過大、同時數據存在單點故障的問題,要做冗余、備份
4)引申出第一個Mysql集群架構→主從復制(主-備)→mysq1性能不均衡→?I/0讀寫性能不均衡
5)引申出第二個Mysql集群架構→讀寫分離(主-備) →備用服務器是多個,但是Master服務器單個→Master服務器又存在了單點故障問題
6)引申出第三個架構→ MHA (master HA高可用) → 學習的集群
默認不需要小數點
整數
(5)常用的數據類型
| int: 整型 | 用于定義整數類型的數據1 2 3 4 5 10 100 999 |
| float: 單精度浮點4字節32位 | 準確表示到小數點后六位 |
| double: 雙精度浮點8字節64位 | 雙精度支持存儲的數字小數位更多 |
| char: 固定長度的字符類型 | 用于定義字符類型數據。0100 char (70) 12345000000 |
| varchar: 可變長度的字符類型 | varchar設置_上限? ? ?varchar (10) 123456789 123 |
| text: 文本 | |
| image: 圖片 | |
| decimal (5,2): 5個有效長度數字,小數點后面有2位 | 指定長度數組345.21 345.899 345.891 345. 89? ? 345.90 |
? ? ? ?Char (10)如果存入數據的實際長度比指定長度要小,會補空格至指定長度,如果存入的數據的實際長度大于指定長度,低版本會被截取,高版本會報錯。
? ? ? ?截取2/ 截斷2
| 原數據 | .899 | .891 |
| 截取 | .90 | .89 |
| 截斷 | .89 | .89 |
(6) 數據庫管理(基礎的控制語言是SQL語句)
SQL 語句
SQL語言分類:
DDL: 數據定義語言,用于創建數據庫對象,如庫、表、索引等
DML:數據操縱語言,用于對表中的數據進行管理
DQL:數據查詢語言,用于從數據表中查找符合條件的數據記錄
DCL:數據控制語言,用于設置或者更改數據庫用戶或角色權限
8.數據庫管理操作:
查看數據庫結構
describe table_ name;
表A
姓名? 年齡? 身高? 體重
原表(字段):
姓名(varchar(40) )? ? 年齡(int (4))? ? 身高(decimal (5,2))? ? 體重(varchar (10))
desc user;
| Field (字段) | Iype(數據類型) | Null? | Key | Default | Extra |
| Host | char (60) | NO | PRI | ||
| User | char(16) | NO | PRI | ||
| Password | char (41) | NO | |||
| Select_ priv | enum('N', 'Y') | NO | N | ||
| Insert_ priv | enum('N', 'Y') | NO | N | ||
| Update_ priv | enum('N', 'Y') | NO | N |
Field: 字段名稱
Type: 數據類型
Null :是否允許為空
Key:主鍵.
Default:默認值
Extra :擴展屬性,例如:標志符列(標識了種子,增量/步長) 1 2
id 1 3 5 7
auto_ increment 自增長
八、MySQL商業版與社區版
1.MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用。
2.MySQL社區版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用。
3.兩者區別
(1)商業版組織管理與測試環節更加嚴格,會比社區版更穩定。
(2)商業版不遵守GPL,社區版遵從GPL可以免費使用。
(3)商業版可獲得7*24小時的服務,社區版則沒有。
九、MySQL產品陣營
1.第一陣營: 5.0-5.1陣營,可說是早期產品的延續。
2.第二陣營: 5.4-5.6陣營,整合了MySQL AB公司、社區和第三方公司開發的存儲引擎,從而提高性能。
3.第三陣營: 6.0-7.1陣營,就是MySQL Cluster版本,為適應新時代對數據庫的集群需求而開發。
4.下載網址
http://www.dev.mysql.com/downloads
總結
以上是生活随笔為你收集整理的MySQL数据库介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask 多线程
- 下一篇: redis 远程主机强迫关闭了一个现有的