前言
????????各位小伙伴們,好久不見!近期,我的文章更新頻率確實有些緩慢,在此誠摯地向大家道歉。這個月是我的期末考試月,正處于緊張的復習(也可以說是重新學習)階段。盡管學業繁忙,但我依然堅持在知識的海洋中探索。
????????今天,我將開啟一個極具挑戰性的全新專題——數據庫。正如業界某位前輩曾言:數據庫水平是衡量一名程序員專業程度的重要指標(注:這可不是我說的,如果有不同意見,請手下留情)。懷著對技術的熱愛和探索的激情,我將開始書寫數據庫系列文章。
????????既然廢話已經說得差不多了,那就讓我們一起,踏上數據庫的奇妙旅程吧!
1.數據庫相關環境的安裝
????????在學習數據庫之前,首先最重要的就是如何安裝數據庫,數據庫的種類有很多,今天小編講述的是其中的MySQL數據庫,為了更好的去掌握MySQL,小編并沒有使用到MySQL的相關軟件,而是直接使用的Linux終端來進行MySQL的學習,它有助于我們更好的去記住相關指令的記憶。下面我將會詳細的講述如何安裝數據庫。
1.使用的Linux環境
????????小編目前使用的Linux版本是centos 7,雖然這個版本之后將不會再更新,但是對于我們學習Linux還是比較友好的。
2,卸載不要的環境
????????我們需要輸入下面的指令來卸載掉我們不需要的環境。
ps ajx |grep mariadb # 先檢查是否有mariadb存在#如果出現一大段數據,那么就代表著此時已經存在了systemctl stop mariadb.service # 停?mariadb 服務#之后再輸入第一條指令,就可以看到服務已經成功停止了#會出現一小段數據,不要慌,這是停止成功的標志,這里我就不做實際演示了。
3.檢查系統的安裝包
????????輸入下面的指令,查看此時安裝包是否存在。
?
grep mariadb
grep mysql ? ?
#輸入第二條指令,可能會出現下面的內容
#mysql-community-common-5.7.41-1.el7.x86_64
#mysql-community-server-5.7.41-1.el7.x86_64
#mysql57-community-release-el7-11.noarch
#mysql-community-client-5.7.41-1.el7.x86_64
#mysql-community-libs-5.7.41-1.el7.x86_64?
4.卸載默認安裝包
????????輸入下面的指令。
sudo yum remove mariadb # 超級用戶進行刪除
5.獲取MySQL中的官方yum源
????????我們需要到官方網站去獲取yum源,網址我放到后面了:Index of /232905,會看到如下的界面:
????????此時需要找到和我們Linux系統一個版本的MySQL,這里可能很多讀者看到藍色字體是省略的,無法看到全稱,這里小編教給各位一個技巧,此時我們可以鼠標右擊空白處,選擇查看頁面源代碼(或者快捷鍵:Ctrl + U)。
????????此時我們就可以看見完整的藍字了,這個操作是查看頁面的源代碼(用HTML寫的,我之后可能也會點亮這一棵技能樹),為了保持各位和我的運行環境一致,這里小編推薦采用5.7這個版本,如下,大約是在166行開始:
????????這里我們需要安裝和我們Linux系統環境一致的版本,可能不少讀者不知曉自己的Linux的版本是多少,這里我推薦各位輸入下面的指令:
cat /etc/redhat-release
????????此時我們可以看出當前我們centos的版本是7.9,所以我們選擇el7.9即可(代表centos的7.9版本),我們點擊它以后,就會下載相關的rpm文件,此時這個文件是下到我們的Windows磁盤當中的,我們需要將這個文件放入到我們Linux系統中,這個時候我們僅需采用下面的指令(或者直接把壓縮包拖到終端):
rz; ?#把Windows系統的相關文件等等放入到Linux中
6.將獲取的yum源進行解壓
????????這個時候就可以就可以看到壓縮包已經存在我們的/root路徑下了,如下所示:
????????類似是上面的壓縮包,因為小編早已經安裝成功,所以當時的壓縮包我沒找到,上面的當做樣例即可,我們需要把.rpm樣子的壓縮包進行解壓操作,此時使用到下面的指令即可。
rpm -ivh 壓縮包的名字
????????壓縮完之后,為了查看我們是否成功的安裝,可以輸入下面的指令。
ls /etc/yum.repos.d/ -l
7.安裝MySQL服務
????????這里我們需要輸入下面的指令進行安裝MySQL(根據上面yum源的配置):
yum install -y mysql-community-server ?#安裝服務器和客戶端,這個指令其實也幫助我們安裝了相關的C接口,后續我會在提到的
????????不過不少讀者可能在安裝的時候遇到下面的報錯:
Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
????????這句話代表著秘鑰過期了,各位讀者遇到這種情況不要慌張,輸入下面的指令,再重新安裝一次即可。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
8.查看自己是否安裝成功
????????此時進行完上面的安裝操作以后,按理說我們已經安裝成功了,但是為了萬無一失,我們需要進行兩個操作來查看MySQL是否安裝成功了。
1.查看配置文件
????????輸入下面的指令,如果和圖片相符,那么代表第一個操作正確。
ls /etc/my.cnf
2.查看數據存儲位置
????????輸入下面的指令,和圖中相符的話代表是正確的。
ls /var/lib/mysql
????????上面的藍色文件夾不用管,有MySQL這個目錄即可。如果上面兩個指令都執行成功的話,那么說明此時我們安裝成功了。
9.啟動mysqld服務器
????????此時我們輸入下面的指令即可成功的啟動服務器:
systemctl start mysqld.service
????????之后我們查看服務器是否啟動了,輸入下面的指令。
ps axj |grep mysqld
????????出現上圖第一行內容,即可代表成功啟動服務器了。
10.配置mysql配置文件
????????此時我們通過vim打開相關mysql配置文件,進行相關配置,輸入下面的指令。
vim /etc/my.cnf
????????此時上面就是我們mysql相關配置的文件,在文件的最后,加入下面的代碼:
skip-grant-tables ?#代碼沒有密碼就可以進行mysql的登錄
#模仿上面的圖片
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
default-storage-engine=innodb
# 配置完畢,重啟mysql即可
11.嘗試登錄mysql
????????在進行上面的配置結束以后,此時我們可以輸入下面的指令進行mysql的登錄
mysql -uroot -p ?#最好使用root賬戶,后續我會講述用戶管理操作
????????此時會彈出讓我們輸入密碼的提示:
????????直接enter即可,因為上面我們配置了可以無須密碼登錄,所以此時確定即可。
????????上面就代表著我們成功的進入了mysql界面,接下來我們的學習就要從這個界面嘍~
2.數據庫是什么
????????安裝完MySQL后,相信很多讀者會產生疑問:MySQL是什么?數據庫又是什么?下面我將為大家詳細解答。
????????通常,我們習慣于使用文件存儲數據。然而,單純依賴文件存儲存在諸多弊端:
-
文件安全性脆弱,數據極易泄露或被非法篡改;
-
數據查詢和管理效率低下;
-
不適合存儲海量數據;
-
在實際編程中使用極不方便。
????????因此,我們需要一種更高效、更安全的數據存儲方案——數據庫。
????????數據庫通常采用磁盤或內存存儲,這種存儲機制使其能夠更高效、更靈活地管理和存儲大規模數據。與傳統文件存儲相比,數據庫在數據安全、檢索速度和管理便捷性上都具有顯著優勢。所以,數據庫其實就是一個存儲大規模數據的‘文件夾’。
3.主流的數據庫
????????當今,數據庫有很多的種類,這里小編就簡單的拿幾個比較常用的數據庫來讓各位了解主流數據庫。
1.SQL Sever: 微軟的產品,.Net程序員的最愛,中大型項目。
2.Oracle: 甲骨文產品,適合大型項目,復雜的業務邏輯,并發一般來說不如MySQL。小編這個學期的一門課就是oracle數據庫,其實和MySQL大部分是很像的,只不過少部分函數不一樣罷了。
3.MySQL:世界上最受歡迎的數據庫,屬于甲骨文,并發性好,不適合做復雜的業務。主要用在電商,SNS,論壇。對簡單的SQL處理效果好。真的很好用。
4.PostgreSQL :加州大學伯克利分校計算機系開發的關系型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
5.SQLite: 是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
6.H2: 是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
4.表是什么
????????當我們首次登錄數據庫的時候,輸入下面的指令,就可以看到MySQL有幾個數據庫。
show databases; ?#這條指令是查看MySQL中的數據庫有幾種,這里要提醒各位,數據庫最后是需要;結尾的,這個點要注意。
????????上面就是MySQL中的數據庫,其實,MySQL中的數據庫在Linux中,是以目錄的形式存在的,也就是說當我們建立數據庫的時候,其實就是在Linux下建立一個目錄,此時我們在Linux中輸入下面的指令,就可以看到上面的庫。指令如下所示。
ll /var/lib/mysql/
????????細細一看,這些目錄不就是上面中我們查看到的數據庫嗎,所以這就證實了MySQL中的數據庫,就是Linux下的一個目錄,但是我們一般都不是對數據庫進行操作,而是對數據庫中的表進行操作。數據庫的表其實就是Linux下的一個個文件,表里面都是存儲一些重要的數據,就比如一個校園的數據庫,存儲的就是一個學生的姓名。學號等等,此時我在MySQL下輸出一個指令,來讓各位先來看看表是長什么樣的。
????????此時我們就可以看到表在MySQL的樣子,同樣的,我們也可以通過進入到目錄查看目錄下的一個個文件,其在Linux中的表示如下所示。
????????這就是MySQL中的表,下面小標來講一講MySQL中,服務器,數據庫以及表之間的關系。
4.服務器,數據庫,表關系
????????所謂安裝數據庫服務器,只是在機器上安裝了一個數據庫管理游戲程序,這個管理程序可以管理多個數據庫,一般開發人員會針對每一個應用創建一個數據庫。就比如學校的教務系統,后面應該就對應著一個存儲學生數據的數據庫。
????????為保存應用中實體的數據,一般會在數據庫中創建多個表,以保存程序中實體的數據。就比如一個公司的數據庫,可能里面會有各大分公司表,雇員表,以及獎金表。
????????它們的三者的關系,如下所示:
????????當然,我們進行建立數據庫,創建表等等的操作,這些工作其實都是mysqld來幫助我們完成的,它是MySQL的服務器,而mysql數據MySQL的客戶端,這一點各位要記住。
5.快速上手數據庫
????????為了讓各位更好的知曉數據庫應該如何進行操作,下面我簡單的給各位簡單的去使用一下相關的指令,各位目前無須記住,這些我都會在后來詳細的講述的。所以下面的操作,我就不解釋了,僅僅想讓各位看看數據庫怎么使用。
1.創建一個數據庫
create database boke_1;
2.看一眼是否創建成功
show databases;
3.進入數據庫
use boke_1;
4.查看有幾張表
show tables; ?#此時沒插入內容,所以為空
5.創建一個表
create table t1(name varchar(20) not null,tel varchar(20)
);
6.插入兩組數據
insert into t1 values('小王','121212323'),('小李','1121212');
7.查看表內容
select* from t1;
????????以上就是MySQL相關的簡單操作,這些以后我都會教給各位的,各位目前光看一下就好。
6.MySQL架構
????????MySQL是一個可移植的數據庫,幾乎可以在當前所有的操作系統運行,如UNIX/Linux,Windows、MAC。各種系統在底層實現方面各有不同,但是 MySQL 基本上能保證在各個平臺上的物理體系結構的一致性。下面可以看下相關的架構圖。
7.SQL分類
????????一般來說,SQL是分為下面這三類的。
1.DDL【data definition language】數據定義語言,用來維護存儲數據的結構。就比如:create,drop,alter【之后都會講述】。
2.DML【data manipulation language】數據操縱語言,用來對數據進行操作。例如:insert,delete,update。
3.DCL【【Data Control Language】數據控制語言,主要負責管理和事務。例如:grant,revoke,commit。
8.存儲引擎
1.是什么
????????存儲引擎是數據庫管理系統如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。MySQL的核心就是插件式存儲引擎,支持多種引擎存儲。
2.在哪里
????????可能很多讀者會很好奇,我們如何查看MySQL中的存儲引擎呢?通過一條指令就可以查到。
show engines;
????????這些我們稍作了解就好,小編所寫的文章涉及到的存儲引擎一般就是第一行那個,這點各位記住就好。
3.存儲引擎對比
9.小結
????????以上就是MySQL的安裝流程以及相關的基礎,希望各位好好掌握上面的知識點。這篇文章我自我認為寫的沒有那么完美,因為我感覺我僅僅學到了MySQL中的毛毛雨,還有更多的知識點等著我探索,這篇文章更像是我的隨手筆記,如果有誤,希望各位讀者不要罵我罵的太慘(┭┮﹏┭┮)。一起學習的時光總是短暫的,那么各位大佬們我們下一篇文章見啦!