Mysql 数据库开发及企业级应用
文章目录
- 1、Mysql 数据库开发及企业级应用
- 1.1、为什么要使用数据库
- 1.1.1、数据库概念(Database)
- 1.1.2、为什么需要数据库
- 1.2、程序员为什么要学习数据库
- 1.3、数据库的选择
- 1.3.1、主流数据库简介
- 1.3.2、使用 MySQL 的优势
- 1.3.3、版本选择
- 1.4、Windows 平台下安装与配置 MySQL
- 1.4.1、安装配置MySQL
- 1.4.2、启动 MySQL 服务
- 1.4.3、控制台登陆 MySQL 命令
- 1.5、C/C++访问 MySQL 数据库
- 1.5.1、Visual Studio 2019 配置
- 2、修改数据库密码
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,passwd1,小明,1234562,小红,6543213,小军,8888884,小丽,666666
保存用户购买的道具 prop.txt :
id,prop,price,num1,金戒指,12,1 89794384011111,银戒指,10,12,房卡,10,103,鲜花,2,61,房卡,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 社区版是完全免费的, 企业版基于服务和支持收费。 相比之下, Oracle、 DB2 和 SQL
- 跨平台性
- 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、修改数据库密码
相关文章:

Mysql 数据库开发及企业级应用
文章目录 1、Mysql 数据库开发及企业级应用1.1、为什么要使用数据库1.1.1、数据库概念(Database)1.1.2、为什么需要数据库 1.2、程序员为什么要学习数据库1.3、数据库的选择1.3.1、主流数据库简介1.3.2、使用 MySQL 的优势1.3.3、版本选择 1.4、Windows …...

【数据结构】_6.队列
目录 1.概念 2.队列的使用 3.队列模拟实现 4.循环队列 5.双端队列 6.OJ题 6.1 用队列实现栈 6.2 用栈实现队列 1.概念 (1)队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表; (2&am…...

7 网络通信(上)
文章目录 网络通信概述ip地址ip的作用ip地址的分类私有ip 掩码和广播地址 linux 命令(ping ifconfig)查看或配置网卡信息:ifconfig(widows 用ipconfig)测试远程主机连通性:ping路由查看 端口端口是怎样分配的知名端口动态端口 查看…...
MFC图表控件high-speed-charting的使用
high-speed-charting是MFC上的开源图表库,Teechart的替代品。 high-speed-charting的下载地址 https://www.codeproject.com/Articles/14075/High-speed-Charting-Control 特性 High-speed drawing (when axis is fixed) which allows fast plotting of dataUnlimited number …...
Unity中常用方法
1.基础 //初始化引入 [RequireComponent(typeof(BoxCollider2D))] [RequireComponent(typeof(Rigidbody2D))]//游戏帧率设置 60帧Application.targetFrameRate 60;//获取物体对象 //获取到当前物体(根据名称,也可以根据路径)GameObject go GameObject.Find("…...

【监控系统】可视化工具Grafana简介及容器化部署实战
1.什么是Grafana 官网地址:https://grafana.com/ Grafana用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。支持快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中…...

VUE之VueRouter页面跳转
参考资料: 参考视频 参考demo及视频资料 VUE之基本部署及VScode常用插件 VUE之基本组成和使用 VUE之Bootstrap和Element-UI的使用 VUE之axios使用,跨域问题,拦截器添加Token Vue Router官网 Vue Router说明: 说明…...

【188】Java8利用AVL树实现Map
AVL树又被叫做平衡二叉搜索树、平衡二叉树。AVL是其发明者的首字母缩写。 这篇文章中,AVLTreeMap 类集成了 java.util.Map 接口,并利用 AVL 树结构实现了 Map 接口的所有方法。本文还给出了测试代码。 为什么要发明AVL树? 当我按照从小到大…...
[SQL挖掘机] - 右连接: right join
介绍: 右连接是一种多表连接方式,它以右侧的表为基础,并返回满足连接条件的匹配行以及右侧表中的所有行,即使左侧的表中没有匹配的行。右连接将右表的每一行与左表进行比较,并根据连接条件返回结果集。其实, 左连接和右连接原理一…...
bug篇之基于docker安装nacos(2.1.1)使用dubbo连接不上的问题
说明:首先我的nacos安装是2.1.1版本,请注意版本问题。另外启动时用dubbo的话必须先启动服务提供者再启动服务使用者,否则会报错,同时也必须开放三个端口:8848,9848,9849 java.lang.IllegalStat…...
【Python入门系列】第二十一篇:Python物联网和传感器应用
文章目录 前言一、Python在物联网和传感器应用中的优势二、连接传感器和设备三、读取传感器数据四、示例代码和讲解五、进一步处理和分析传感器数据六、更多应用示例1、温湿度监测系统2、智能家居系统 - 灯光控制 总结 前言 物联网和传感器在现代科技中扮演着重要的角色。物联…...

Python爬虫的urlib的学习(学习于b站尚硅谷)
目录 一、页面结构的介绍 1.学习目标 2.为什么要了解页面(html) 3. html中的标签(仅介绍了含表格、无序列表、有序列表、超链接) 4.本节的演示 二、Urllib 1.什么是互联网爬虫? 2.爬虫核心 3.爬虫…...
【MongoDB】--MongoDB聚合Aggregation
目录 一、前言二、聚合管道操作2.1、实际案例1(1)、案例--根据学生no,找到对应班级名称(2)、案例--这个班级有哪些学生和哪些老师在任课 2.2、实际案例2(1)、案例--主表和关联表都有条件限制,且分页返回 一、前言 聚合操作组值来自多个文档,…...

Hadoop学习指南:探索大数据时代的重要组成——Hadoop概述
前言 在当今大数据时代,处理海量数据成为了一项关键任务。Hadoop作为一种开源的分布式计算框架,为大规模数据处理和存储提供了强大的解决方案。本文将介绍Hadoop的组成和其在大数据处理中的重要作用,让我们一同踏上学习Hadoop的旅程。 Hado…...

Java实现简单小画板
Java制作简单画板,包括两个类,一个主要画板类Drawpad,一个画板监听器DrawListener类。 1、Drawpad类,包括画板,画板功能设计,保存图片等 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2…...

B078-项目实战--支付模块 领养订单支付流程
目录 支付模块需求分析表设计支付单表支付宝账号信息表-商家账号微信支付账号信息表-商家账号银行账号表-商家资金账号表支付流水表 流程分析支付基础模块继承加密算法沙箱环境准备支付宝支付-流程分析根据demo封装工具类导入依赖AlipayConfigAlipayInfoAlipayUtil 内网穿透 领…...

[css]margin-top不起作用问题(外边距合并)
在初学css时,会遇到突然间margin-top不起作用的情况。如下面: 情况一: 代码: <html> <head><style type"text/css"> * {margin:0;padding:0;border:0; }#outer {width:300px;height:300px;backgroun…...

Vue2基础八、插槽
零、文章目录 Vue2基础八、插槽 1、插槽 (1)默认插槽 作用:让组件内部的一些 结构 支持 自定义需求: 将需要多次显示的对话框, 封装成一个组件问题:组件的内容部分,不希望写死,希望能使用的时候自定义。…...
自然语言处理从入门到应用——LangChain:提示(Prompts)-[提示模板:连接到特征存储]
分类目录:《自然语言处理从入门到应用》总目录 特征存储是传统机器学习中的一个概念,它确保输入模型的数据是最新和相关的。在考虑将LLM应用程序投入生产时,这个概念非常重要。为了个性化LLM应用程序,我们可能希望将LLM与特定用户…...

jenkins自定义邮件发送人姓名
jenkins发送邮件的时候发送人姓名默认的,如果要自定义发件人姓名,只需要修改如下信息即可: 系统管理-system-Jenkins Location下的系统管理员邮件地址 格式为:自定义姓名<邮件地址>...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...