1. 程式人生 > 其它 >網際網路行業中最常用的資料庫——MySQL資料庫介紹

網際網路行業中最常用的資料庫——MySQL資料庫介紹

一、資料庫的基本概念

1.1 使用資料庫的必要性

使用資料庫可以高效且條理分明地儲存資料,使人們能夠更加迅速、方便地管理資料。 資料庫具有以下特點。

可以結構化儲存大量的資料資訊,方便使用者進行有效的檢索和訪問。
可以有效地保持資料資訊的一致性、完整性,降低資料冗餘。
可以滿足應用的共享和安全方面的要求。

資料庫技術是電腦科學的核心技術之一,具有完備的理論基礎。對資料庫基本概念的掌握,將有助於對資料庫的理解。

1.2 資料庫的概念

1.2.1 資料(Data)

描述事物的符號記錄
包括數字,文字、圖形、影象、聲音、檔案記錄等
以“記錄”形式按統一的格式進行儲存

1.2.2 表

將不同的記錄組織在一起
用來儲存具體資料

1.2.3 資料庫

表的集合,是儲存資料的倉庫
以一定的組織方式儲存的相互有關的資料集合

1.2.4 資料庫管理系統(DBMS)

資料庫管理系統(Database Management System,DBMS)是實現對資料庫資源有效組織、 管理和存取的系統軟體。它在作業系統的支援下,支援使用者對資料庫的各項操作。DBMS 主 要包括以下功能。

資料庫的建立和維護功能:包括建立資料庫的結構和資料的錄入與轉換、資料庫的 轉儲與恢復、資料庫的重組與效能監視等功能。

資料定義功能:包括定義全域性資料結構、區域性邏輯資料結構、儲存結構、保密模式 及資訊格式等功能。保證儲存在資料庫中的資料正確、有效和相容,以防止不合語 義的錯誤資料被輸入或輸出。

資料操縱功能:包括資料查詢統計和資料更新兩個方面。

資料庫的執行管理功能:這是資料庫管理系統的核心部分,包括併發控制、存取控 制、資料庫內部維護等功能。

通訊功能:DBMS 與其他軟體系統之間的通訊,如 Access 能與其他 Office 元件進行 資料交換。

1.2.5 資料庫系統

是一個人機系統,由硬體、OS、資料庫、DBMS、應用軟體和資料庫使用者組成
使用者可以通過DBMS或應用程式操作資料庫

1.3 訪問資料庫的流程

1)應用程式把查詢SQL語句發給伺服器端執行。
2)伺服器解析請求的SQL語句。
3)語句執行。

注意:
1:確保SQL語法正確;
2:確保SQL語義上的正確性即物件是否存在;
3:資料庫使用者是否具有相應的訪問許可權。

二、資料庫的發展

2.1 資料庫系統發展史

資料庫技術的發展已經成為先進資訊科技的重要組成部分,是現代計算機資訊系統和計 算機應用系統的基礎和核心。資料庫技術最初產生於 20 世紀 60 年代中期,根據資料模型的 發展,可以劃分為三個階段:第一代的網狀、層次資料庫系統;第二代的關係資料庫系統; 第三代的以面向物件模型為主要特徵的資料庫系統。

(1)初級階段——第一代資料庫

自 20 世紀 60 年代起,第一代資料庫系統問世。它們是層次模型與網狀模型的資料庫系 統,為統一管理和共享資料提供了有力的支撐。在這個階段中,資料庫的代表是 1969 年 IBM 公司研製的層次模型的資料庫管理系統——IMS(Information Management System,資訊管 理系統)和 20 世紀 70 年代美國資料系統語言協會(CODASYL)下屬資料庫任務組(DBTG) 提議的網狀模型。

(2)中級階段——第二代資料庫

20 世紀 70 年代初,第二代資料庫——關係資料庫開始出現。自 1970 年 IBM 研究員德 加·考特闡述了關係模型的概念後,IBM 大力投入關係資料庫的研究。關係資料庫的底層實 現起來比較容易,所以很快被採用,並進入了眾多商業資料庫的研發計劃。Oracle 就是當 時應關係資料模型的出現而成立的一家專做(關係)資料庫的公司。20 世紀 80 年代初,IBM 公司的關係資料庫系統 DB2 問世,而 Oracle 公司也將 Oracle 資料庫移植到桌面計算機上。 這時,作為第二代資料庫系統的關係資料庫,開始逐步取代層次與網狀模型的資料庫,成為 占主導地位的資料庫,成為行業主流。到目前為止,關係資料庫系統仍佔領資料庫應用的主 要地位。

關係資料庫系統將結構化查詢語言(Structured Query Language,SQL)作為資料定義 語言(Data Definition Language,DDL)和資料操作語言(Data Manipulation Language, DML),它一誕生就成為關係資料庫的標準語言。SQL 使得關係資料庫中的資料庫表的查詢 可以通過簡單的、宣告性的方式進行,大大簡化了程式設計師的工作。

關係資料庫系統構築在比較高的軟體層次上,執行查詢的效率普遍偏低。另外,嚴格的、 標準的關係資料庫是一個純理論的模型。如果完全按照關係模型實現,會涉及很多方面的問 題,其中一條就是效率不高。在現實環境中,考慮到商業運用的目的,資料庫生產廠商各自 加入了一些提高效率和提高可用性的功能,捨棄了一些不太現實的約束。不同的資料庫廠商 在不同基礎上的選擇,導致了關係資料庫系統向不同方向上的變遷。例如,在這個階段中, Oracle 加入了“並行”的元素,並開始了向“關係-物件”型資料庫的變遷。這樣的變遷, 也慢慢引出了新一代的資料庫系統。

(3)高階階段——第三代資料庫

由於計算機應用的發展,計算機已從傳統的科學計算、事務處理等領域,逐步擴充套件到工 程設計、人工智慧、多媒體、分散式等領域,這些新的領域需要有新的資料庫支撐,而傳統 關係資料庫系統是以商業應用、事務處理為背景而發展起來的,並不完全適用於新領域的應 用,因此,需要新的資料庫系統,以滿足不同領域的要求。

自 20 世紀 80 年代開始,各種適應不同領域的新型資料庫系統不斷湧現,如工程資料庫、 多媒體資料庫、圖形資料庫、智慧資料庫、分散式資料庫及面向物件資料庫等,特別是面向 物件資料庫系統,由於其實用性強、適應面廣而受到人們的青睞。20 世紀 90 年代後期,形 成了多種資料庫系統共同支撐應用的局面。當然,在商務應用方面,依然還是關係資料庫佔 主流。不過,已經有一些新的元素被新增進主流商務資料庫系統中。例如,Oracle 支援的“關 系-物件”資料庫模型。

隨著科學技術的發展,計算機技術不斷應用到各行各業。資料儲存需求的不斷膨脹,對 未來的資料庫技術將會有更高的要求。

三、主流的資料庫介紹

3.1 關係資料庫

①SQL Server 簡介

SQL Server 是 Microsoft 公司的資料庫產品,在設計上大量利用了 Microsoft Windows 作業系統的底層結構,直接面向 Microsoft Windows,尤其是 Windows 系列伺服器作業系統 的使用者。

Microsoft Windows 擁有眾多的使用者群,Microsoft 所有的產品都遵循統一的操作習慣。 對資料庫基本概念熟悉的 Windows 使用者,可以很快地學會使用 SQL Server,上手比較容易。 Windows 系統的易用性也讓資料庫管理員可以更容易、更方便、更輕鬆地進行管理。

Microsoft 公司針對市場的需求,不斷擴充套件其效能,使得 SQL Server 在網路資料庫服 務和電子商務方面展示了強大的效能。

②Oracle 簡介

Oracle 公司成立於 1977 年,最初就是專門的資料庫公司。

1998 年 9 月,Oracle 公司正式釋出 Oracle 8i,“i”代表 Internet,這一版本中新增 了大量為支援 Internet 而設計的特性。這一版本為資料庫使用者提供了全方位的 Java 支援。

在 2001 年 6 月的 Oracle Open World 大會中,Oracle 公司釋出了 Oracle 9i,包含應 用叢集軟體 Real Application Clusters(RAC)和商務智慧(BI)功能。

2004 年 2 月,Oracle 公司釋出了 Oracle 10g 版本,“g”代表 grid(網格)。這一版 的最突出特性就是加入了網格計算的功能。

2013 年 6 月,Oracle 12C 正式釋出,該版本提供了先進的技術堆疊管理、安全的資料 庫管理及企業級的服務管理,使企業能夠快速實現私有云。

資料庫領域 Oracle 公司在很長一段時間內一直處於領先地位,不僅資料庫核心相當優 秀,而且其相關的支援產品也相當完善和全面。Oracle 能適應 70 多種作業系統,這也是其 他產品難以企及的優勢。不過隨著雲端計算的不斷髮展,以 Oracle 為代表的傳統資料庫正在 逐漸失勢,雲資料庫時代正在來臨。2019 年 10 月 15 日亞馬遜宣佈永久關閉 Oracle 資料庫 業務。可以說亞馬遜關閉 Oracle 既是自身產業轉型升級的需要,也是雲端計算領域發展邁出 的重要一步。如今已經有越來越多的企業開始上雲,拋棄傳統資料庫,轉而使用雲資料庫, 推動著雲端計算的不斷髮展。

③DB2 簡介

1970 年,IBM 公司的一位研究員德加·考特發表論文,提出“關係模型”的概念。此後, 他被稱為“關係資料庫之父”。IBM 公司投入巨資,開展包括“SystemR”和“SystemR*” 專案在內的關係資料庫技術的研究。13 年後,在“SystemR”和“SystemR*”專案的基礎上, DB2 以 SystemR 為原型面世。

DB2 支援從 PC 到 UNIX,從中小型機到大型機,從 IBM 到非 IBM(HP 及 Sun UNIX 系統等) 的各種作業系統平臺。其中,伺服器平臺可以是 OS/400、AIX、OS/2、HP-UNIX、Sun Solaris 等作業系統,客戶機平臺可以是 OS/2 或 Windows、DOS、AIX、HP-UX、Sun Solaris 等操作 系統。但是,DB2 伺服器端的最佳執行環境還是 IBM 自己的作業系統平臺 OS/400。

DB2 資料庫核心又稱為 DB2 通用伺服器,可以運行於多種作業系統之上,它根據相應的 平臺環境做了調整和優化,以便達到較好的效能。由於 IBM 公司在商用伺服器領域內的長期 優勢,在全球 500 強的企業中,超過 80%的企業曾使用 DB2 作為資料庫平臺。

④MySQL簡介

MySQL 也是一個關係型資料庫管理系統,現已被 Oracle 公司收購。它與上述大型資料 庫相比,有不足之處,但是這絲毫沒有減少它受歡迎的程度。

MySQL 運行於 Linux 作業系統之上,Apache 和 Nginx 作為 Web 伺服器,MySQL 作為後臺 資料庫,PHP/Perl/Python 作為指令碼直譯器。這四款軟體都是免費或開源的,也就是說,企 業可以不花一分錢(除人工外)就能建立起一個穩定、高速的網站系統,業內稱為“LAMP”組合。因此,其以體積小、速度快、開源等特點,霸佔了中小型網站相當大的市場。

3.2 非關係資料庫
非關係資料庫也被稱作 NoSQL(Not Only SQL),儲存資料不以關係模型為依據,不需要 固定的表格式。非關係型資料庫作為關係資料庫的一個補充,在日益快速發展的網站時代, 發揮著高效率與高效能。

非關係型資料庫的優點:

 資料庫高併發讀寫的需求

 對海量資料高效率儲存與訪問

 資料庫的高擴充套件性與高可用性的需求 常用的非關係資料庫例如 Memcached、Redis、MongoDB、HBase等,我這裡就不詳細介紹了。

3.3 關係資料庫和非關係資料庫的區別

關係資料庫系統是基於關係模型的資料庫系統
關係模型的資料結構使用簡單易懂的二維資料表
關係模型可用簡單的“實體-關係”(E-R)圖來表示
E-R圖中包含了實體(資料物件)、關係和屬性三個要素

3.3.1 關係資料庫三個要素

1)實體:也稱為例項,對應現實世界中可區別於其他物件的“事件”或“事物”
如銀行客戶、銀行賬戶等

2)屬性:實體所具有的某一特性,一個實體可以有多個屬性
如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性

3)聯絡:實體集之間的對應關係稱為聯絡,也稱為關係
如銀行客戶和銀行賬戶之間存在“儲蓄”的關係

非關係資料庫也被稱作NoSQL(Not Only SQL)
儲存資料不以關係模型為依據,不需要固定的表格式
非關係型資料庫的優點
資料庫可高併發讀寫
對海量資料高效率儲存與訪問
資料庫具有高擴充套件性與高可用性
常用的非關係資料庫:Redis、mongoDB等

四、MySQL的介紹和安裝方法

4.1 MySQL資料庫介紹
一款深受歡迎的開源關係型資料庫
Oracle旗下的產品
遵守GPL協議,可以免費使用與修改
特點:
效能卓越、服務穩定
開源、無版權限制、成本低
多執行緒、多使用者
基於C/S(客戶端/伺服器)架構
安全可靠

4.2 MySQL商業版與社群版

MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用

MySQL社群版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用

兩者區別

商業版組織管理與測試環節更加嚴格,會比社群版更穩定
商業版不遵守GPL,社群版遵從GPL可以免費使用
商業版可獲得7*24小時的服務,社群版則沒有

4.3 MySQL產品陣營

第一陣營:5.0-5.1陣營,可說是早期產品的延續
第二陣營:5.4-5.7陣營,整合了MySQL AB公司、社群和第三方公司開發的儲存引擎,從而提高效能
第三陣營:6.0-7.1陣營,就是MySQL Cluster版本, 為適應新時代對資料庫的叢集需求而開發

下載網址:
http://www.dev.mysql.com/downloads

4.4 編譯安裝mysql

第一步:將三個壓縮檔案拖入到Linux中的/opt目錄下

第二步:安裝環境依賴包

第三步:配置軟體模組
1)解壓檔案至當前目錄

2)CMAKE相關路徑和安裝相關引擎

第四步:編譯及安裝

第五步:建立mysql使用者,不建立家目錄和禁止登入

第六步:修改mysql 配置檔案

第七步:更改mysql安裝目錄和配置檔案的屬主屬組

第八步:設定路徑環境變數

第九步:初始化資料庫

第十步:新增mysqld系統服務

第十一步:修改mysql 的登入密碼

第十二步:授權遠端登入

五、配置MySQL的tab補全

1)安裝相關依賴軟體(需要配置yum官方或者阿里源進行安裝)

yum -y install epel-release
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc


2)下載python安裝包(自己下載過可以忽略此步驟)

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz


3)建立目錄,並新增配置

mkdir ~/.pip/

cat > ~/.pip/pip.conf <<EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com
EOF


4)安裝相關依賴軟體,解壓python軟體包並進行編譯安裝

yum -y install libffi-devel zlib* python-devel openssl-devel
tar -zxvf Python-3.9.0.tgz
cd Python-3.9.0/
./configure --prefix=/usr/local/python --with-ssl
make && make install


5)優化路徑,安裝pip3

ln -s /usr/local/python/bin/python3 /usr/bin/

echo 'export PATH=/usr/local/python/bin:$PATH' >> /etc/profile
source /etc/profile

pip3 install mycli


6)登入測試

mycli -u root -p <密碼>