文章目录
1、Mysql 数据库开发及企业级应用
1.1、为什么要使用数据库
程序员 Jack 还是在在校学习期间, 就听高年级的大哥忠告, “ 小伙子, 搞编程, 想要成为最牛逼的程序员, 一定要学好 C/C++语言和数据结构及算法” , Jack 谨记了这句忠告, 因为这位高年级的哥们还没毕业就已经被 BAT 公司预定, 在学校那是风光无限, 得到了很多高年级美女学姐的青睐。
经过一段时间的刻苦学习, Jack 终于把 C++ 和数据结构还有算法学得有点模样了, 不自觉就进入初级装逼模式,在同学面前那是指手画脚, 趾高气昂。 。 。 。
这种状态一直持续到实习期间, Jack 进入一家小有名气的游戏开发公司实习, 被安排到一个棋牌游戏的项目组。 项目组的项目经理颇为认同新来的 Jack 同学( 因为面试时问到的 C++和数据结构相关的试题, 只有 Jack 力压群雄, 达到了项目经理的要求, 甚至有几年工作经验的程序员都搞不定的 A*算法, Jack 也是对答如流! ) , 并没有给他安排一些意义不大的杂活给他干, 而是编制为开发团队的正式一员, 享受正式员工的待遇! 此时的 Jack 意气风发, 代码撸的更加卖力了, 因此也很快融入了开发团队中。 。 。
有一天, 项目组的小组长给 Jack 分配了一个新的任务, 让 Jack 实现用户登陆模块, 具体需求
如下:
- 游戏玩家访问游戏客户端, 通过客户端界面输入用户名和密码。
- 在游戏玩家点击”确认”后, 客户端连接至数据库服务器对用户名和密码进行确认,如果验证成功, 则 玩家可以进入大厅, 如果失败, 则不允许进入!
-
。 。 。
啊! 数据库! 什么东东?
因为项目需要, Jack 马上紧张起来, 翻阅各种资料, 耗费了几个废寝忘食的日日夜夜, 才从以下几个方面搞清楚了 why do we need database?
1.1.1、数据库概念(Database)
就是按照数据结构来组织、 存储和管理数据, 建立在计算机存储设备上的仓库。 我们可以把数据库看成电子化的文件柜, 也就是存储电子文件的处所, 用户可以对文件中的数据进行
新增、 查询、 更新、 删除
等操作。
1.1.2、为什么需要数据库
一般情况下, 要保存用户的数据, 一个最简单的方法是把用户数据写入文件。 例如, 要
保存用户的密码信息
, 可以写入下面的文件中 txt 文件:
id,name,passwd
1,小明,123456
2,小红,654321
3,小军,888888
4,小丽,666666
保存用户购买的道具 prop.txt :
id,prop,price,num
1,金戒指,12,1 8979438401111
1,银戒指,10,1
2,房卡,10,10
3,鲜花,2,6
1,房卡,10,100
但是, 随着应用程序的功能越来越复杂, 数据量越来越大, 如何管理这些数据就成了大问题:
- 读写文件并解析出数据需要大量重复代码;
- 从成千上万的数据中快速查询出指定数据需要复杂的逻辑。
- 数据缺乏安全感 。
如果每个应用程序都各自写自己的读写数据的代码, 一方面效率低, 容易出错, 另一方面, 每个应用程序访问数据的接口都不相同, 数据难以复用。
所以, 数据库作为一种专门管理数据的软件就出现了。 应用程序不需要自己管理数据, 而是通过数据库软件提供的接口来读写数据。 至于数据本身如何存储到文件, 那是数据库软件的事情, 应用程序自己并不关心:
这样一来, 编写应用程序的时候, 数据读写的功能就被大大地简化了。
1.2、程序员为什么要学习数据库
- 几乎任何一个企业级应用, 都要用到数据库。
- 无论开发、 测试、 运维还是架构师, 数据库都是加分神器!
- 小的软件企业分工不明确, 全能型人才能得到更多的机会(就业和提升)。
- 外包和自由程序员必备 。
1.3、数据库的选择
1.3.1、主流数据库简介
当今市面上的数据库产品众多, 每种数据库都有自己的优势和缺点, 或出于数据库的性能和易用性考虑, 或出于商用和开源考虑, 如何选择自己合适的数据库产品, 成为重中之重!
主要的数据库产品有如下几种:
Oracle
– 作为一种商业性关系型数据库,在
事务处理
方面有自己独到的优势,功能比较强大,市场占有率也比较高。
oracle
数据库是一种大型的关系型数据库,在使用上会收费。在部署上,可以根据自己的环境采用单节点或者集群部署。
经常会使用于银行和金融机构,存储大量数据,可以对海量数据进行分析处理,在安全性上使用访问控制和多种数据备份机制,可靠性高。
Mysql
– 作为一种开源的轻量级关系型数据库,在开源数据库中比较流行,由于小巧安装方便快捷,经常会用于互联网公司,维护也比较方便。因为开源,使用上比较灵活,
mysql
还有许多第三方的存储引擎,可以根据自己的需要进行安装。在功能上
mysql
可能没有
oracle
强大,但是对于资源的占用非常少,数据恢复快。在维护上,追求稳定的性能和易用性。
Redis
– 作为一种
缓存数据库
,对于数据的读写特别快,
redis
之所以快,是因为它
数据放在内存中,但是内存比较贵,另一方面,内存也是有限制的,当内存不够时,就需要使用 redis 的分布式方案
。
redis
作为一种
非关系型数据库
,可以适用于高并发场景,配合关系型数据库作为做高速缓存,也可以降低磁盘 IO,使用键值对存储,不适用于结构复杂的
sql
数据
另外
MongoDB
,
SQL Server
等数据库也是常用的数据库。
选择数据库时
, 既要考虑成本, 还有考虑维护的稳定和便利性,结合自己的设备规模。 最重要的, 需要结合我们的业务,
如果高安全性, 海量数据, 能承担高昂的成本, 可以选择 oracle
;
一般应用的快速查询, 高并发访问, 一般情况下都可以选择 mysql, 另外特殊情况特殊处理!
1.3.2、使用 MySQL 的优势
如今很多主流网站都选择
MySQL
数据库来存储数据, 比如阿里巴巴的淘宝。 那么,
MySQL
到底有什么优势, 吸引了这么多用户? 主要是基于以下几点原因:
-
开源
-
开源软件是互联网行业未来发展的趋势。
MySQL
是开放源代码的数据库, 这就使得任何人都可以获取
MySQL
的源代码, 并修正
MySQL
的缺陷, 并且任何人都能以任何目的来使用该数据库,这是一款自由使用的软件。 对于很多互联网公司来说, 选择使用
MySQL
是一个化被动为主动的过程, 无须再因为依赖封闭的数据库产品而受牵制。
-
开源软件是互联网行业未来发展的趋势。
-
成本因素
-
MySQL
社区版是完全免费的, 企业版基于服务和支持收费。 相比之下,
Oracle
、
DB2
和
SQL
Server
价格不菲, 再考虑到搭载的服务器和存储设备, 那么成本差距是巨大的。
-
-
跨平台性
-
MySQL
不仅提供
Windows
系列的版本, 还提供
UNIX
、
Linux
和
Mac OS
等操作系统对应的版本。 因为很多网站都选择
UNIX
、
Linux
作为网站的服务器, 所以
MySQL
具有跨平台的优势。
-
-
容易使用
-
MySQL
是一个真正的多用户、 多线程
SQL
数据库服务器, 能够快速、 高效、 安全地处理大量的数据。
MySQL
和
Oracle
性能并没有太大的区别, 在低硬件环境下,
MySQL
分布式的方案同样可以解决问题, 而且成本比较经济, 从产品质量、 成熟度、 性价比来讲,
MySQL
都是非常不错的。另外,
MySQL
的管理和维护非常简单, 初学者很容易上手, 学习成本较低。
-
1.3.3、版本选择
MySQL
从
5.7
版本直接跳跃发布了
8.0
版本, 可见这是一个令人兴奋的里程碑版本。
MySQL
8.0
版本在功能上做了显著的改进与增强, 不仅在速度上得到了改善, 还提供了一系列巨大的变化, 为用户带了更好的性能和更棒的体验。
三个字形容, 就是比以前的更棒 棒 棒!
1.4、Windows 平台下安装与配置 MySQL
1.4.1、安装配置MySQL
免费下载网址: https://dev.mysql.com/downloads/windows/installer/8.0.html
版本选择 : 社区版 8.0.12
1.4.2、启动 MySQL 服务
-
图形化界面启动:
-
右击“计算机” , 在快捷菜单中选择“管理” 命令, 如图所示, 打开“计算机管理” 对话
框。 也可以执行“开始” |“控制面板” |“管理工具” |“服务” 来启动服务。
-
右击“计算机” , 在快捷菜单中选择“管理” 命令, 如图所示, 打开“计算机管理” 对话
-
命令行启动
- 查看服务命令: net start
- 关闭服务命令: net stop MySQL
- 启动服务器命令: net start MySQL
1.4.3、控制台登陆 MySQL 命令
mysql -h 127.0.0.1 -uroot -p123456
(注:-h 以及后面的127.0.0.1是主机名字 ,-p后面的为 root 的密码,根据个人设置不同而不同) 。
1.5、C/C++访问 MySQL 数据库
1.5.1、Visual Studio 2019 配置
-
第一步:打开
mysql
的安装目录,我这里安装目录如下:
D:\mysql
,确认
lib
目录和
include
目录是否存在。
-
第二步:打开
VS2019
,新建一个空工程,控制台应用程序即可,注意:解决方案平台选择
X64
。
-
第三步:右击工程名,打开属性页。
-
第四步:打开
C/C++
目录,将
mysql
安装文件中
include
文件的路径添加到这里。
-
第五步:打开
链接器
目录,在库目录中将
mysql
文件中的
lib
文件路径添加进来。
-
第六步:在属性页的链接器中,点击“输入”,将
mysql
安装文件夹中lib目录下的
libmysql.lib
文件加到“附加依赖项”中,注意,这里直接把
libmysql.lib
这个依赖名加进去即可,不要加路径。
-
第七步:把
mysql
安装目录里的
lib\libmysql.dll
复制到
c:\windows\system32
下 。
-
第八步:编译如下代码,启动
mysql
, 将代码中连接数据库的用户名和密码改成自己的设定,顺利获取到
student
表中的结果即表示连接成功!
2、修改数据库密码