1、Mysql 數(shù)據(jù)庫(kù)開(kāi)發(fā)及企業(yè)級(jí)應(yīng)用
1.1、為什么要使用數(shù)據(jù)庫(kù)
? 程序員 Jack 還是在在校學(xué)習(xí)期間, 就聽(tīng)高年級(jí)的大哥忠告, “ 小伙子, 搞編程, 想要成為最牛逼的程序員, 一定要學(xué)好 C/C++語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)及算法” , Jack 謹(jǐn)記了這句忠告, 因?yàn)檫@位高年級(jí)的哥們還沒(méi)畢業(yè)就已經(jīng)被 BAT 公司預(yù)定, 在學(xué)校那是風(fēng)光無(wú)限, 得到了很多高年級(jí)美女學(xué)姐的青睞。
? 經(jīng)過(guò)一段時(shí)間的刻苦學(xué)習(xí), Jack 終于把 C++ 和數(shù)據(jù)結(jié)構(gòu)還有算法學(xué)得有點(diǎn)模樣了, 不自覺(jué)就進(jìn)入初級(jí)裝逼模式,在同學(xué)面前那是指手畫(huà)腳, 趾高氣昂。 。 。 。
? 這種狀態(tài)一直持續(xù)到實(shí)習(xí)期間, Jack 進(jìn)入一家小有名氣的游戲開(kāi)發(fā)公司實(shí)習(xí), 被安排到一個(gè)棋牌游戲的項(xiàng)目組。 項(xiàng)目組的項(xiàng)目經(jīng)理頗為認(rèn)同新來(lái)的 Jack 同學(xué)( 因?yàn)槊嬖嚂r(shí)問(wèn)到的 C++和數(shù)據(jù)結(jié)構(gòu)相關(guān)的試題, 只有 Jack 力壓群雄, 達(dá)到了項(xiàng)目經(jīng)理的要求, 甚至有幾年工作經(jīng)驗(yàn)的程序員都搞不定的 A*算法, Jack 也是對(duì)答如流! ) , 并沒(méi)有給他安排一些意義不大的雜活給他干, 而是編制為開(kāi)發(fā)團(tuán)隊(duì)的正式一員, 享受正式員工的待遇! 此時(shí)的 Jack 意氣風(fēng)發(fā), 代碼擼的更加賣力了, 因此也很快融入了開(kāi)發(fā)團(tuán)隊(duì)中。 。 。
? 有一天, 項(xiàng)目組的小組長(zhǎng)給 Jack 分配了一個(gè)新的任務(wù), 讓 Jack 實(shí)現(xiàn)用戶登陸模塊, 具體需求
如下:
- 游戲玩家訪問(wèn)游戲客戶端, 通過(guò)客戶端界面輸入用戶名和密碼。
- 在游戲玩家點(diǎn)擊”確認(rèn)”后, 客戶端連接至數(shù)據(jù)庫(kù)服務(wù)器對(duì)用戶名和密碼進(jìn)行確認(rèn),如果驗(yàn)證成功, 則 玩家可以進(jìn)入大廳, 如果失敗, 則不允許進(jìn)入!
- 。 。 。
?。?數(shù)據(jù)庫(kù)! 什么東東?
因?yàn)轫?xiàng)目需要, Jack 馬上緊張起來(lái), 翻閱各種資料, 耗費(fèi)了幾個(gè)廢寢忘食的日日夜夜, 才從以下幾個(gè)方面搞清楚了 why do we need database?
1.1.1、數(shù)據(jù)庫(kù)概念(Database)
就是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、 存儲(chǔ)和管理數(shù)據(jù), 建立在計(jì)算機(jī)存儲(chǔ)設(shè)備上的倉(cāng)庫(kù)。 我們可以把數(shù)據(jù)庫(kù)看成電子化的文件柜, 也就是存儲(chǔ)電子文件的處所, 用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、 查詢、 更新、 刪除等操作。
1.1.2、為什么需要數(shù)據(jù)庫(kù)
一般情況下, 要保存用戶的數(shù)據(jù), 一個(gè)最簡(jiǎn)單的方法是把用戶數(shù)據(jù)寫(xiě)入文件。 例如, 要保存用戶的密碼信息, 可以寫(xiě)入下面的文件中 txt 文件:
id,name,passwd
1,小明,123456
2,小紅,654321
3,小軍,888888
4,小麗,666666
保存用戶購(gòu)買的道具 prop.txt :
id,prop,price,num
1,金戒指,12,1 8979438401111
1,銀戒指,10,1
2,房卡,10,10
3,鮮花,2,6
1,房卡,10,100
但是, 隨著應(yīng)用程序的功能越來(lái)越復(fù)雜, 數(shù)據(jù)量越來(lái)越大, 如何管理這些數(shù)據(jù)就成了大問(wèn)題:
- 讀寫(xiě)文件并解析出數(shù)據(jù)需要大量重復(fù)代碼;
- 從成千上萬(wàn)的數(shù)據(jù)中快速查詢出指定數(shù)據(jù)需要復(fù)雜的邏輯。
- 數(shù)據(jù)缺乏安全感 。
? 如果每個(gè)應(yīng)用程序都各自寫(xiě)自己的讀寫(xiě)數(shù)據(jù)的代碼, 一方面效率低, 容易出錯(cuò), 另一方面, 每個(gè)應(yīng)用程序訪問(wèn)數(shù)據(jù)的接口都不相同, 數(shù)據(jù)難以復(fù)用。
? 所以, 數(shù)據(jù)庫(kù)作為一種專門管理數(shù)據(jù)的軟件就出現(xiàn)了。 應(yīng)用程序不需要自己管理數(shù)據(jù), 而是通過(guò)數(shù)據(jù)庫(kù)軟件提供的接口來(lái)讀寫(xiě)數(shù)據(jù)。 至于數(shù)據(jù)本身如何存儲(chǔ)到文件, 那是數(shù)據(jù)庫(kù)軟件的事情, 應(yīng)用程序自己并不關(guān)心:
這樣一來(lái), 編寫(xiě)應(yīng)用程序的時(shí)候, 數(shù)據(jù)讀寫(xiě)的功能就被大大地簡(jiǎn)化了。
1.2、程序員為什么要學(xué)習(xí)數(shù)據(jù)庫(kù)
- 幾乎任何一個(gè)企業(yè)級(jí)應(yīng)用, 都要用到數(shù)據(jù)庫(kù)。
- 無(wú)論開(kāi)發(fā)、 測(cè)試、 運(yùn)維還是架構(gòu)師, 數(shù)據(jù)庫(kù)都是加分神器!
- 小的軟件企業(yè)分工不明確, 全能型人才能得到更多的機(jī)會(huì)(就業(yè)和提升)。
- 外包和自由程序員必備 。
1.3、數(shù)據(jù)庫(kù)的選擇
1.3.1、主流數(shù)據(jù)庫(kù)簡(jiǎn)介
當(dāng)今市面上的數(shù)據(jù)庫(kù)產(chǎn)品眾多, 每種數(shù)據(jù)庫(kù)都有自己的優(yōu)勢(shì)和缺點(diǎn), 或出于數(shù)據(jù)庫(kù)的性能和易用性考慮, 或出于商用和開(kāi)源考慮, 如何選擇自己合適的數(shù)據(jù)庫(kù)產(chǎn)品, 成為重中之重!
主要的數(shù)據(jù)庫(kù)產(chǎn)品有如下幾種:
Oracle - 作為一種商業(yè)性關(guān)系型數(shù)據(jù)庫(kù),在事務(wù)處理方面有自己獨(dú)到的優(yōu)勢(shì),功能比較強(qiáng)大,市場(chǎng)占有率也比較高。oracle 數(shù)據(jù)庫(kù)是一種大型的關(guān)系型數(shù)據(jù)庫(kù),在使用上會(huì)收費(fèi)。在部署上,可以根據(jù)自己的環(huán)境采用單節(jié)點(diǎn)或者集群部署。經(jīng)常會(huì)使用于銀行和金融機(jī)構(gòu),存儲(chǔ)大量數(shù)據(jù),可以對(duì)海量數(shù)據(jù)進(jìn)行分析處理,在安全性上使用訪問(wèn)控制和多種數(shù)據(jù)備份機(jī)制,可靠性高。
? Mysql - 作為一種開(kāi)源的輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù),在開(kāi)源數(shù)據(jù)庫(kù)中比較流行,由于小巧安裝方便快捷,經(jīng)常會(huì)用于互聯(lián)網(wǎng)公司,維護(hù)也比較方便。因?yàn)殚_(kāi)源,使用上比較靈活,mysql 還有許多第三方的存儲(chǔ)引擎,可以根據(jù)自己的需要進(jìn)行安裝。在功能上mysql 可能沒(méi)有 oracle 強(qiáng)大,但是對(duì)于資源的占用非常少,數(shù)據(jù)恢復(fù)快。在維護(hù)上,追求穩(wěn)定的性能和易用性。
? Redis - 作為一種緩存數(shù)據(jù)庫(kù),對(duì)于數(shù)據(jù)的讀寫(xiě)特別快,redis 之所以快,是因?yàn)樗?font size="4" color="red">數(shù)據(jù)放在內(nèi)存中,但是內(nèi)存比較貴,另一方面,內(nèi)存也是有限制的,當(dāng)內(nèi)存不夠時(shí),就需要使用 redis 的分布式方案。redis 作為一種非關(guān)系型數(shù)據(jù)庫(kù),可以適用于高并發(fā)場(chǎng)景,配合關(guān)系型數(shù)據(jù)庫(kù)作為做高速緩存,也可以降低磁盤(pán) IO,使用鍵值對(duì)存儲(chǔ),不適用于結(jié)構(gòu)復(fù)雜的 sql 數(shù)據(jù)
另外 MongoDB, SQL Server 等數(shù)據(jù)庫(kù)也是常用的數(shù)據(jù)庫(kù)。
選擇數(shù)據(jù)庫(kù)時(shí), 既要考慮成本, 還有考慮維護(hù)的穩(wěn)定和便利性,結(jié)合自己的設(shè)備規(guī)模。 最重要的, 需要結(jié)合我們的業(yè)務(wù), 如果高安全性, 海量數(shù)據(jù), 能承擔(dān)高昂的成本, 可以選擇 oracle; 一般應(yīng)用的快速查詢, 高并發(fā)訪問(wèn), 一般情況下都可以選擇 mysql, 另外特殊情況特殊處理!
1.3.2、使用 MySQL 的優(yōu)勢(shì)
? 如今很多主流網(wǎng)站都選擇 MySQL 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù), 比如阿里巴巴的淘寶。 那么, MySQL 到底有什么優(yōu)勢(shì), 吸引了這么多用戶? 主要是基于以下幾點(diǎn)原因:
- 開(kāi)源
- 開(kāi)源軟件是互聯(lián)網(wǎng)行業(yè)未來(lái)發(fā)展的趨勢(shì)。 MySQL 是開(kāi)放源代碼的數(shù)據(jù)庫(kù), 這就使得任何人都可以獲取 MySQL 的源代碼, 并修正 MySQL 的缺陷, 并且任何人都能以任何目的來(lái)使用該數(shù)據(jù)庫(kù),這是一款自由使用的軟件。 對(duì)于很多互聯(lián)網(wǎng)公司來(lái)說(shuō), 選擇使用 MySQL 是一個(gè)化被動(dòng)為主動(dòng)的過(guò)程, 無(wú)須再因?yàn)橐蕾嚪忾]的數(shù)據(jù)庫(kù)產(chǎn)品而受牽制。
- 成本因素
-
MySQL 社區(qū)版是完全免費(fèi)的, 企業(yè)版基于服務(wù)和支持收費(fèi)。 相比之下, Oracle、 DB2 和 SQL
Server 價(jià)格不菲, 再考慮到搭載的服務(wù)器和存儲(chǔ)設(shè)備, 那么成本差距是巨大的。
-
MySQL 社區(qū)版是完全免費(fèi)的, 企業(yè)版基于服務(wù)和支持收費(fèi)。 相比之下, Oracle、 DB2 和 SQL
- 跨平臺(tái)性
- MySQL 不僅提供 Windows 系列的版本, 還提供 UNIX、 Linux 和 Mac OS 等操作系統(tǒng)對(duì)應(yīng)的版本。 因?yàn)楹芏嗑W(wǎng)站都選擇 UNIX、 Linux 作為網(wǎng)站的服務(wù)器, 所以 MySQL 具有跨平臺(tái)的優(yōu)勢(shì)。
- 容易使用
- MySQL 是一個(gè)真正的多用戶、 多線程 SQL 數(shù)據(jù)庫(kù)服務(wù)器, 能夠快速、 高效、 安全地處理大量的數(shù)據(jù)。 MySQL 和 Oracle 性能并沒(méi)有太大的區(qū)別, 在低硬件環(huán)境下, MySQL 分布式的方案同樣可以解決問(wèn)題, 而且成本比較經(jīng)濟(jì), 從產(chǎn)品質(zhì)量、 成熟度、 性價(jià)比來(lái)講, MySQL 都是非常不錯(cuò)的。另外,MySQL 的管理和維護(hù)非常簡(jiǎn)單, 初學(xué)者很容易上手, 學(xué)習(xí)成本較低。
1.3.3、版本選擇
? MySQL 從 5.7 版本直接跳躍發(fā)布了 8.0 版本, 可見(jiàn)這是一個(gè)令人興奮的里程碑版本。 MySQL 8.0版本在功能上做了顯著的改進(jìn)與增強(qiáng), 不僅在速度上得到了改善, 還提供了一系列巨大的變化, 為用戶帶了更好的性能和更棒的體驗(yàn)。
三個(gè)字形容, 就是比以前的更棒 棒 棒!
1.4、Windows 平臺(tái)下安裝與配置 MySQL
1.4.1、安裝配置MySQL
免費(fèi)下載網(wǎng)址: https://dev.mysql.com/downloads/windows/installer/8.0.html
版本選擇 : 社區(qū)版 8.0.12
1.4.2、啟動(dòng) MySQL 服務(wù)
-
圖形化界面啟動(dòng):
- 右擊“計(jì)算機(jī)” , 在快捷菜單中選擇“管理” 命令, 如圖所示, 打開(kāi)“計(jì)算機(jī)管理” 對(duì)話
框。 也可以執(zhí)行“開(kāi)始” |“控制面板” |“管理工具” |“服務(wù)” 來(lái)啟動(dòng)服務(wù)。
- 右擊“計(jì)算機(jī)” , 在快捷菜單中選擇“管理” 命令, 如圖所示, 打開(kāi)“計(jì)算機(jī)管理” 對(duì)話
-
命令行啟動(dòng)
- 查看服務(wù)命令: net start
- 關(guān)閉服務(wù)命令: net stop MySQL
- 啟動(dòng)服務(wù)器命令: net start MySQL
1.4.3、控制臺(tái)登陸 MySQL 命令
mysql -h 127.0.0.1 -uroot -p123456
(注:-h 以及后面的127.0.0.1是主機(jī)名字 ,-p后面的為 root 的密碼,根據(jù)個(gè)人設(shè)置不同而不同) 。
1.5、C/C++訪問(wèn) MySQL 數(shù)據(jù)庫(kù)
1.5.1、Visual Studio 2019 配置
-
第一步:打開(kāi) mysql 的安裝目錄,我這里安裝目錄如下:D:\mysql,確認(rèn)lib 目錄和 include 目錄是否存在。
-
第二步:打開(kāi) VS2019,新建一個(gè)空工程,控制臺(tái)應(yīng)用程序即可,注意:解決方案平臺(tái)選擇 X64 。
-
第三步:右擊工程名,打開(kāi)屬性頁(yè)。
- 第四步:打開(kāi) C/C++目錄,將 mysql 安裝文件中include文件的路徑添加到這里。
- 第五步:打開(kāi) 鏈接器目錄,在庫(kù)目錄中將 mysql 文件中的 lib 文件路徑添加進(jìn)來(lái)。
-
第六步:在屬性頁(yè)的鏈接器中,點(diǎn)擊“輸入”,將 mysql 安裝文件夾中l(wèi)ib目錄下的libmysql.lib 文件加到“附加依賴項(xiàng)”中,注意,這里直接把 libmysql.lib 這個(gè)依賴名加進(jìn)去即可,不要加路徑。
-
第七步:把 mysql 安裝目錄里的 lib\libmysql.dll 復(fù)制到 c:\windows\system32 下 。
-
第八步:編譯如下代碼,啟動(dòng) mysql, 將代碼中連接數(shù)據(jù)庫(kù)的用戶名和密碼改成自己的設(shè)定,順利獲取到
student 表中的結(jié)果即表示連接成功!
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-598683.html
2、修改數(shù)據(jù)庫(kù)密碼
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-598683.html
到了這里,關(guān)于Mysql 數(shù)據(jù)庫(kù)開(kāi)發(fā)及企業(yè)級(jí)應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!