一、數據庫概述
(1)為什么要使用數據庫
- 數據庫可以實現持久化,什么是持久化:數據持久化意味著將內存中的數據保存到硬盤上加以“固化”
- 持久化的主要作用是:將內存中的數據存儲在關系型數據庫中,當然也可以存儲在磁盤文件、XML數據文件中
(2)數據庫與數據庫管理系統
1.2.1數據庫的相關概念
- DB,數據庫(Database):即存儲數據的倉庫,其本質是一個文件系統。它保存了一系列有組織的數據
- DBMS,數據庫管理系統(Database Management System):是一種用于操縱和管理數據的大型軟件,用于建立、使用和維護數據庫,對數據庫進行統一管理和控制。用戶通過數據庫管理系統訪問數據庫中表內的數據
- SQL,結構化查詢語言(Structured Query Language):專門用來與數據庫通信的語言
1.2.2數據庫與數據庫管理系統的關系
- 數據庫管理系統(DBMS)可以管理多個數據庫,一般開發人員會針對每一個應用創建一個數據庫。為了保存應用中實體的數據,一般會在數據庫創建多個表,以保存程序中實體用戶的數據
1.2.3常見的數據庫管理系統排名(DBMS)
- 目前互聯網上常見的數據庫管理軟件有:Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix這幾種
1.2.4常見的數據庫介紹
(3)MySQL介紹
1.3.1概述
- MySQL是一個開放源代碼的關系型數據庫管理系統
- MySQL6.x版本之后分為社區版(免費)和商業版(收費)
- MySQL可以運行于多個系統上,并且支持多種語言
1.3.2MySQL發展史重大事件
1.3.3關于MySQL 8.0
- MySQL從5.7版本直接跳躍發布了8.0版本
1.3.4Why choose MySQL?
- 開放源代碼,使用成本低
- 性能卓越,服務穩定
- 軟件體積小,使用簡單,并且易于維護
- 歷史悠久,社區用戶非常活躍,遇到問題可以尋求幫助
- 許多互聯網公司在用,經過了時間的驗證
1.3.5Oracle vs MySQL
- Oracle更適合大型跨國企業的使用。因為他們對費用不敏感,但是對性能要求以及安全性有更高的要求
- MySQL由于其體積小、速度快、總體擁有成本低,可處理上千萬條記錄的大型數據庫,尤其是開放源碼這一特點,使得很多互聯網公司、中小型網站選擇了MySQL作為網站數據庫
(4)RDBMS與非RDBMS
從排名中我們能看出來,關系型數據庫絕對是DBMS的主流,其中使用最多的DBMS分別是Oracle、MySQL和SQL Server。這些都是關系型數據庫(RDBMS)
1.4.1關系型數據庫(RDBMS)
- 關系型數據庫模型是把復雜的數據結構歸結為簡單的二維表格形式
- 關系型數據庫以行(row)和列(column)的形式存儲數據。這一系列的行和列被稱為表(table),一組表組成了一個庫(database)
- 表與表之間的數據記錄有關系(relationship)。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。關系型數據庫,就是建立在關系模型基礎上的數據庫
- SQL就是關系型數據庫的查詢語言
- 優勢:
- 可以用SQL語句方便地在一個表以及多個表之間做非常復雜的數據查詢
- 使得對于安全性能很高的數據訪問要求得以實現
1.4.2非關系型數據庫(非RDBMS)
- 非關系型數據庫,可以看成傳統關系型數據庫的功能閹割版本,基于鍵值對存儲數據,不需要經過SQL層的解析,性能非常高。同時,通過減少不常用的功能,進一步提高性能
- 有哪些非關系型數據庫:鍵值型數據庫(Redis)、文檔型數據庫(MongoDB)、搜索引擎數據庫(Elasticsearch)、列式數據庫、圖形數據庫
1.4.3小結
(5)關系型數據庫設計規則
- 關系型數據庫的典型數據結構就是數據表,這些數據表的組成都是結構化的
- 將數據放到表中,表再放到庫中
- 一個數據庫中可以有多個表,每個表都有一個名字,用來標識自己,表名具有唯一性
- 表具有一些特性,這些特性定義了數據在表中如何存儲,類似Java和Python中“類”的設計
1.5.1表、記錄、字段
- E-R(entity-relationship,實體-聯系)模型中有三個主要概念是:實體集、屬性、聯系集
- 一個實體集(class)對應于數據庫中的一個表(table),一個實體(instance)則對應于數據庫表中的一行(row),也稱為一條記錄(record)。一個屬性(attribute)對應于數據庫表中的一列(column),也稱為一個字段(field)
- ORM思想(Object Relational Mapping):
- 數據庫中的一個表→Java或Python中的一個類
- 表中的一條數據→類中的一個對象(實體)
- 表中的一個列→類中的一個屬性(field)
1.5.2表的關聯關系
- 表與表之間的數據記錄有關系。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示
- 表的關聯關系有四種:一對一關聯、一對多關聯、多對多關聯、自我引用
- 一對一關聯:
- 在實際的開發中應用不多,因為一對一可以創建成一張表
- 舉例:設計學生表:學號、姓名、手機號碼、班級、系別、身份證號碼、家庭住址、籍貫、緊急聯系人、......(1)拆為兩個表:兩個表的記錄是一一對應關系(2)基礎信息表(常用信息):學號、姓名、手機號碼、班級、系別(3)檔案信息表(不常用信息):學號、身份證號碼、家庭住址、籍貫、緊急聯系人、......
- 一對多關聯:
- 常見實例場景:客戶表和訂單表、分類表和商品表、部門表和員工表
- 舉例:(1)員工表:員工編號、姓名、...、所屬部門(2)部門表:部門編號、名稱、簡介
- 多對多關聯:
- 要表示多對多關系,必須創建第三個表,該表通常稱為聯接表,它將多對多關系劃分為兩個一對多關系。將這兩個表的主鍵都插入到第三個表中
- 舉例1:學生——課程(1)學生信息表:一行代表一個學生的信息(學號、姓名、手機號碼、班級、系別)(2)課程信息表:一行代表一個課程的信息(課程編號、授課老師、簡介)(3)選課信息表:一個學生可以選多門課,一門課可以被多個學生選擇
- 舉例2:產品——訂單(1)產品表:產品表中的每條記錄表示一個產品(2)訂單表:訂單表中的每條記錄表示一個訂單(3)訂單明細表:每個產品可以與訂單表中的多條記錄對應,即出現在多個訂單中。一個訂單可以與產品表中的多條記錄對應,即包含多個產品
- 要表示多對多關系,必須創建第三個表,該表通常稱為聯接表,它將多對多關系劃分為兩個一對多關系。將這兩個表的主鍵都插入到第三個表中
- 自我引用
二、MySQL環境搭建
(1)MySQL的卸載
- 步驟一:停止MySQL服務。在卸載之前,先停止MySQL的服務。按鍵盤上的“Ctrl+Alt+Delete”組合鍵,打開“任務管理器”對話框,可以在“服務”列表找到MySQL的服務,如果處于“正在運行”狀態,可以右鍵單擊它,選擇“停止”選項來停止MySQL的服務
- 步驟二:軟件的卸載(使用控制面板的軟件卸載,去卸載MySQL DBMS軟件的安裝位置D:\MySQL\MySQL Server 8.0)
- 步驟三:手動刪除數據庫文件C:\ProgramData\MySQL\MySQL Server 8.0\Data
- 步驟四:清理注冊表(win+R,輸入regedit)
- 步驟五:刪除環境變量配置,并重啟電腦
(2)MySQL的下載、安裝、配置
2.2.1MySQL的四大版本
-
MySQL Community Server 社區版本:開源免費,自由下載,但不提供官方技術支持,適用于大多數普通用戶
-
MySQL Enterprise Edition 企業版本:需付費,不能在線下載,可以試用30天。提供了更多的功能和更完備的技術支持,更適合于對數據庫的功能和可靠性要求較高的企業客戶
-
MySQL Cluster 集群版:開源免費。用于架設集群服務器,可以將幾個MySQL Server封裝成一個Server。需要在社區版或企業版的基礎上使用
-
MySQL Cluster CGE 高級集群版:需付費
2.2.2軟件的下載
- 下載地址:http://www.mysql.com
- 點擊DOWNLOADS,下滑,點擊MySQL Community (GPL) Downloads
- 點擊MySQL Community Server
- 選擇想要下載的版本,點擊Go to Download Page超鏈接
- 下載它
2.2.3MySQL8.0版本的安裝
- 雙擊下載好的msi(msi下載和配置是一起完成的,如果下載的是zip,還要再進行配置)
- 選擇Custom,點擊next
- 選擇自己要安裝的服務器版本
- 選擇安裝位置,點擊Advanced Options超鏈接
- 一直點next,然后點擊Execute
2.2.4配置MySQL8.0
- 在該界面點擊next,再點擊next
- 加密規則可以不用修改
- 設置root用戶的密碼(比如:123456),設置完點擊next
- Start the MySQL Server at System Startup表示開機自啟,然后一直點next
- 點擊Execute
- 可以看到軟件已經安裝完成
2.2.5配置MySQL8.0環境變量
- 如果不配置MySQL環境變量,就不能在命令行直接輸入MySQL登陸命令
- 步驟一:右擊此電腦,點擊屬性
- 步驟二:在系統窗口中選擇高級系統設置
- 步驟三:點擊環境變量
- 步驟四:編輯Path變量
- 步驟五:將MySQL應用程序的bin目錄添加到變量值中
2.2.6MySQL5.7版本的安裝、配置
- 步驟幾乎和8.0版本一致。因為已經下載過8.0版本,此時還想下載5.7版本,我們點擊Add。端口號改為13306
- 一個電腦中可以下載安裝多個MySQL,只要保證進程端口號不同即可
- 如果下載了多個MySQL,環境變量只要配一個。如果我們配的是8.0版本,那么
- 如果想連接8.0版本
- 如果想連接5.7版本
(3)MySQL的登錄
2.3.1服務的啟動與停止
MySQL安裝完畢之后,需要啟動服務器進程,不然客戶端無法連接數據庫
在前面的配置過程中,已經將MySQL安裝為Windows服務,并且勾選當Windows啟動、停止時,MySQL也自動啟動、停止
- 方式一:使用圖形界面工具(1)右擊此電腦,選擇“管理”(2)服務和應用程序→服務
- 方式二:使用命令行工具(以管理員身份運行)。必須先啟動服務,才能登錄成功
2.3.2自帶客戶端的登錄與退出
- 登陸方式1:MySQL自帶客戶端
- 登陸方式2:windows命令行
- -u后面可以有空格,-p后面不能有空格
- windows命令行登錄mysql還可以這么寫(推薦使用該方式):
- 不加-P端口號時,默認登陸的是環境變量配置的MySQL版本
2.3.3退出登錄和查看版本信息
- 退出登錄:quit或exit
- 查看版本信息(兩種方式:先登錄再查看,直接查看):?
(4)MySQL演示使用
2.4.1MySQL的使用演示
- 顯示數據庫
- 創建數據庫
- 創建表,必須在庫之下
- 查看表中的數據
- 向表中插入數據
- 在5.7版本中添加中文會報錯,但是在8.0版本中添加中文不會報錯(因為8.0版本的字符集是utf8)
2.4.2MySQL的編碼設置
- 查看編碼命令:
- 修改mysql的數據目錄下的my.ini配置文件,修改完以后要重啟服務才會生效
- 可以看到修改成功,此時在5.7版本下,也可以添加中文數據
(5)MySQL圖形化管理工具
2.5.1MySQL Workbench
- 下載地址:http://dev.mysql.com/downloads/workbench/
- 連接MySQL
- 以登錄5.7版本為例
2.5.2Navicat
- 下載地址:http://www.navicat.com/
2.5.3SQLyog
2.5.4dbeaver
- 下載地址:https://dbeaver.io/download/
(6)MySQL目錄結構與源碼
2.6.1主要目錄結構
- MySQL的主要目錄結構:
MySQL的目錄結構 說明 bin目錄 所有MySQL的可執行文件。如:mysql.exe MySQLInstanceConfig.exe 數據庫的配置向導,在安裝時出現的內容 data目錄 系統數據庫所在的目錄 my.ini文件 MySQL的主要配置文件 C:\ProgramData\MySQL\MySQL Server 8.0\Data\ 用戶創建的數據庫所在的目錄
2.6.2MySQL源代碼獲取
該筆記根據尚硅谷的MySQL課程整理