数据库的基本概念与安装MySQL

一、数据库的基本概念

1、什么是数据?

  • 描述事物的符合记录
  • 包括数字、文字、图形、图像、声音、档案记录等
  • 以“记录”形式按统一的格式进行存储

2、什么是表?

  • 将不同的记录组织在一起
  • 用来存储具体数据

3、什么是数据库

  • 表的集合,是存储数据的仓库
  • 以一定的组织方式存储的相互有关的数据集合

4、什么是数据库的管理系统(DBMS)?

  • 是实现对数据库资源有效组织,管理和存取的系统软件。

它在操作系统的支持下,支持用户对数据库的各项操作:

  1. 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
  2. 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输H.
  3. 数据操纵功能:包括数据查询统计和数据更新两个方面。
  4. 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。
  5. 通信功能:DBMS 与其他软件系统之间的通信,如Access 能与其他 Office组件进行数据交换。

5、什么是数据库系统?

  • 由硬件、OS、数据库、DBMS、应用软件和是-个人机系统数据库用户组成
  • 用户可以通过DBMS或应用程序操作数据库

5.1 DBMS的工作模式如下:

  1. 接受应用程序的数据请求和处理请求
  2. 将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
  3. 实现对数据库的操作
  4. 从数据库的操作中接受查询结果
  5. 对查询结果进行处理(格式转换)
  6. 将处理结果返回给用户 

总结:

数据库是表的集合,表是数据的集合。

二、数据库系统的发展阶段

2.1 萌芽阶段:文件系统

用磁盘文件来存储数据

2.2 初级阶段:第一代数据库

  • 出现了网状模型、层次模型的数据库
  • 自20世纪60年代起,第一代数据库系统问世
  • 是层次模型与网状模型的数据库系统
  • 为统一管理和共享数据提供了有力的支撑

2.3 中级阶段:第二代数据库

  • 关系型数据库和结构化查询语言
  • 20世纪70年代初,第二代数据库——关系数据库开始出现
  • 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
  • 到目前为止,关系数据库系统仍占领数据库应用的主要地位

2.4 高级阶段:第三代数据库

  • “关系-对象”型数据库
  • 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
  • 面向对象的数据库系统,实用性强、适应面广
  • 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面

小结:

第三代数据库就是SQL + NoSQL的组合使用

即非关系数据库和关系数据库的组合使用

下面为大家介绍什么是关系型数据库和非关系型数据库

三、关系型数据和非关系型数据库

1、关系型数据库

  • 关系数据库系统是基于关系模型的数据库
  • 系统关系模型的数据结构使用简单易懂的二维数据表
  • 关系模型可用简单的“实体-关系”
  • (E-R)图来表示E-R图中包含了实体(数据对象)、关系和属性三个要素

1.1 关系型数据库的相关概念

  • 关系Relational :关系就是二维表,其中:表中的行、列次序并不重要

  • 行row:表中的每一行,又称为一条记录record

  • 列column:表中的每一列,称为属性,字段,域field

  • 主键Primary key:PK , 用于惟一确定一个记录的字段,一张表只有一个主键

  • 域domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150

1.2 实体联系模型E-R

实体Entity:

  • 客观存在并可以相互区分的客观事物或抽象事件称为实体,
  • 在E-R图中用矩形框表示实体,把实体名写在框内

属性:实体所具有的特征或性质

联系:联系是数据之间的关联集合,是客观存在的应用语义链

  • 实体内部的联系:指组成实体的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系
  • 实体之间的联系:指不同实体之间联系。例:学生选课实体和学生基本信息实体之间
  •  实体之间的联系用菱形框表示

1.3 常用关系型数据库

  • MySQL: MySQL, MariaDB, Percona Server
  • PostgreSQL: 简称为pgsql,EnterpriseDB
  • Oracle
  • MSSQL
  • DB2

2、非关系型数据库

  • 非关系数据库也被称作NoSQL(Not Only SQL)
  • 存储数据不以关系模型为依据,不需要固定的表格式
  • 非关系型数据库的优点
  1. 数据库可高并发读写
  2. 对海量数据高效率存储与访问
  3. 数据库具有高扩展性与高可用性
  • 常用的非关系数据库:Redis、mongoDB等

3、关系型数据库和非关系型数据库的区别

3.1 关系数据库

  • 关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性,
  • 每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 
  • 读写系统就会受到的IO限制或者瓶颈 

其他

  • 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织

优点:

  • 1、易于维护:都是使用表结构,格式一致;
  • 2、使用方便:SQL语言通用,可用于复杂查询;
  • 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点:

  • 1、读写性能比较差,尤其是海量数据的高效率读写;
  • 2、固定的表结构,灵活度稍欠;
  • 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

3.2 非关系型数据库(NoSQL)

MongoDB 、 Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对

redis-memecache对比:

相同点:存储高热数据(在内存中高速运行)
不同点:redis可以做持久化保存,可以存储对象

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

  • 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、
  • 图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
  • 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
  • 3、高扩展性;
  • 4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

  • 1、不提供sql支持,学习和使用成本较高;
  • 2、无事务处理;
  • 3、数据结构相对复杂,复杂查询方面稍欠。

三、数据库MySQL介绍

1.MySQL数据库是什么?

一款深受欢迎的开源关系型数据库,Oracle旗下的产品,遵守GPL协议,可以免费使用与修改。

官网:MySQL

特点:

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于C/S(客户端/服务器)架构
  • 安全可靠

2.三大分支

mysql

mariadb

percona Server

3.版本演变

mysql -V
#查看MySQL版本


MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --->8.0

第一阵营:5.0-5.1阵营,可说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营:6.0-7.1阵营,就是MySQL Cluster版本, 为适应新时代对数据库的集群需求而开发

MariaDB:5.1 --> 5.5 --> 10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5

MySQL被Sun收购后,搞了个过渡的6.0版本,没多久就下线了,后来被Oracle收购后,终于迎来了像样的5.6版本,之后就是5.7、8.0版本。由于6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新版本号从8.0开始

4.商业版和社区版

MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用

区别:

  • 商业版组织管理与测试环节更加严格,会比社区版更稳定
  • 商业版不遵守GPL,社区版遵从GPL可以免费使用
  • 商业版可获得7*24小时的服务,社区版则没有

5.MySQL的组成

客户端程序

  • mysql: 交互式的CLI工具
  • mysqladmin:基于mysql协议管理mysqld
  • mysqlimport:数据导入工具
  • MyISAM存储引擎的管理工具:
  • myisamchk:检查MyISAM库
  • myisampack:打包MyISAM表,只读

服务器端程序

  • mysqld_safe
  • mysqld
  • mysqld_multi 多实例 ,示例:mysqld_multi

四、编译安装MySQL数据库

1、安装相关依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

yum -y install \
gcc \
gcc-c++ \
ncurses \                #字符终端下图形互动功能的动态库
ncurses-devel \            #ncurses开发包
bison \                    #语法分析器
cmake                    #mysql需要用cmake编译安装

2、下载并压缩源码包

tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost

3、编译安装

cd /opt/mysql-5.7.17/cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1make && make install

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \        #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \            #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \                        #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \          #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1                                #生成便于systemctl管理的文件


存储引擎选项:
MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1
可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBD,IMNOBASB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema)

 4、数据库目录进行权限调整、改变属主属组

useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

5.调整配置文件

vim /etc/my.cnf
--------------------------内容如下
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

vim /etc/my.cnf                                #删除原配置项,再重新添加下面内容
[client]                                    #客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock            

[mysqld]                                    #服务全局设置
user = mysql                                   #设置管理用户
basedir=/usr/local/mysql                    #指定数据库的安装目录
datadir=/usr/local/mysql/data                #指定数据库文件的存储路径
port = 3306                                    #指定端口
character-set-server=utf8                    #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid        #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock            #指定数据库连接文件
bind-address = 0.0.0.0                        #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve                            #禁用DNS解析
max_connections=2048                        #设置mysql的最大连接数
default-storage-engine=INNODB                #指定默认存储引擎
max_allowed_packet=16M                        #设置数据库接收的数据包大小的最大值
server-id = 1                                #指定服务ID号

sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_AUTO_CREATE_USER
禁正GRANT创建密码为空的用户

NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错

NO_ZERO_IN_DATE
不允许日期和月份为零

NO_ZERO_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告

ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL

PIPES_As_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

6、设置环境变量

#配置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile#刷新
source /etc/profile#查看是否成功
echo $PATH

7、初始化数据库

#切换目录
cd /usr/local/mysql/#初始化
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/datacp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

./mysqld \
--initialize-insecure \                #生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data        #指定数据库文件的存储路径

8、数据库开启自启、关闭、状态

systemctl enable mysqld        #设置开机自启
systemctl start mysqld         #开启
systemctl stop mysqld          #关闭
systemctl start mysqld         #开启
systemctl status mysqld        #查看状态
ss -anpt | grep 3306           #过滤端口验证是否开启

9、设置MySQL密码

#修改密码为123123 开始初始密码为空  回车即可
mysqladmin -u root -p password "123123"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年中国电商市场研究报告

研究范畴界定为中国国内2C电商市场 ⚠️ 关键点: 流量红利减少,电商市场进入存量增量 竞争的发展阶段;新兴电商平台不断挑战现有头部电商平台行业地位;消费者更加趋于理性,更加关注低价和服务;市场趋势&…

嵌入式和 Java选哪个?

今日话题,嵌入式和 Java 走哪个?对于嵌入式领域有浓厚兴趣的人,并不会比Java行业薪资低,处于上中游水平。特别是从2020年开始,嵌入式领域受益于芯片产业的兴起,表现出了强劲的增长势头。薪资水平受多方面因素影响。嵌…

AndroidLinux GPIO控制方法

目录 1 GPIO整体架构 2 user space 层 gpio使用方法 2.1 sysfs控制方法 2.1.1 kernel版本区别 2.1.2 /sys/class/gpio 2.1.3 /sys/bug/gpio/devices 2.2 chardev控制方法 2.2.1 chardev 示例代码 2.2.2 示例代码主要步骤描述 2.2.3 include/linux/gpio.h 全部代码 2.3…

mmz批量多页抓取数据-AES.CBC算法-爬虫

目标:mmz多页下载 方法:加一个for循环实现多页的下载 问题:浏览器传输服务器时对页码参数做了加密处理 解决方法: 1、判断加密算法模式(mmz是AES-CBC算法) 2、找到加密的key和iv 代码: i…

数据可信流通,从运维信任到技术信任

信任 共同观点: 信任是涉及交易或交换关系的基础 身份可确认利益可依赖能力有预期行为有后果 数据流通中的不可信风险 内循环:数据持有方在自己的运维安全域内对自己的额数据使用和安全拥有全责外循环:数据要素在离开持有方安全域后&#…

使用 git 先提交后拉取的时候远程分支不允许问题

问题场景 修改本地代码使用 git 先提交后拉取的时候远程分支不允许的问题 修改本地代码时,远程分支存在其他新提交先执行了 git commit -m xxx update然后再执行 git pull 拉取远程分支代码,出现如下提示 hint: You have divergent branches and need…

基于python 变配电室运行状态评估与预警系统flask-django-nodejs-php

变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情况,将危及电气设备安全稳定运行,易造成设备损坏和电力供应中断[2]。 目前,我国变配电室常采用无人管理的室内站设计方案,长期以来变配电室运维工…

黑马程序员——javase进阶——day10——IO流,Properties集合,IO工具类

目录: IO流的介绍 为什么要学习IO流什么是IO流IO流的分类字节流输出流 字节输出流入门字节输出流写数据的方法写数据的换行和追加写入字节输入流 字节输入流介绍字节输入流读多个字节图片的拷贝异常的捕获处理字节输入流—次读—个字节数组字节缓冲区流 字节缓冲流…

【C语言_数组_复习篇】

目录 一、数组的概念 二、数组的类型 三、一维数组 3.1 一维数组的创建 3.2 一维数组的初始化 3.3 一维数组的访问 3.4 一维数组在内存中的存储 四、二维数组 4.1 二维数组的创建 4.2 二维数组的初始化 4.3 二维数组的访问 4.4 二维数组在内存中的存储 五、变长数组 六、…

Android 开发 地图 polygon 显示信息

问题 Android 开发 地图 polygon 显示信息 详细问题 笔者进行Android项目开发,接入高德地图绘制区域后,需要在指定区域(位置)内显示文本信息,如何实现 实现效果 解决方案 代码 import com.amap.api.maps.model.T…

Jenkins实现CICD(3)_Jenkins连接到git

文章目录 1、如何完成上述操作,并且不报如下错:2、连接不上git,操作如下:3、将上边产生的3个文件拷贝到:C:\Windows\System32\config\systemprofile\.ssh4、新建下图凭证:创建步骤: 5、公钥填到…

vue3 搜索框 相关搜索内容 搜索词变色

html <!-- 搜索框 --> <div class"input"><input type"text" v-model"search_content" input"replace_text(search_content)"focus"search_show true, replace_text(search_content)" blur"search_s…

NCV4264-2ST50T3G芯片中文资料PDF数据手册引脚图规格书参数产品手册价格图片

产品概述&#xff1a; NCV4264-2 在功能和引脚上都与 NCV4264 兼容&#xff0c;具有较低的静态电流消耗。 其输出级提供 100 mA&#xff0c;输出电压精度为 /-2.0%。 100 mA 负载电流下的最大漏电压为 500 mV。它具有针对 45 V 输入瞬变、输入电源逆向、输出过电流故障和超高裸…

c语言(数据在内存中的存储)

1. 整数在内存中的存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最 ⾼位的⼀位是被当做符号位&#xff0c;剩余的都是数值位。 正整…

可视化工具 Another-Redis-Desktop-Manager 的安装与使用

一,下载安装 1.简介 Redis是一种快速、高效的NoSQL数据库&#xff0c;广泛用于缓存、会话管理、消息队列等领域。为了更方便地管理Redis实例、监控Redis性能、执行Redis命令、查看Redis数据&#xff0c;许多开发者使用可视化管理工具。而其中&#xff0c;Another Redis Deskt…

关于Ansible的模块 ①

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 什么是Ansible模块 在Linux中&#xff0c;bash无论是在命令行上执行&#xff0c;还是在bash脚本中&#xff0c;都需要调用cd、l…

理论学习:outputs_cls.detach()的什么意思

在PyTorch中&#xff0c;.detach()方法的作用是将一个变量从当前计算图中分离出来&#xff0c;返回一个新的变量&#xff0c;这个新变量不会要求梯度&#xff08;requires_gradFalse&#xff09;。这意味着使用.detach()方法得到的变量不会在反向传播中被计算梯度&#xff0c;也…

知识宣传手册该怎么制作?

知识宣传手册该怎么制作&#xff1f; 制作知识宣传手册是一个很好的方式来传播知识&#xff0c;提高公众对特定主题的了解。它们不仅能帮助我们传播重要信息&#xff0c;还能激发人们的求知欲&#xff0c;推动社会的进步。那么&#xff0c;如何制作一份引人入胜的知识宣传手册…

C++_day6:2024/3/18

作业1&#xff1a;编程题&#xff1a; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在…

C语言笔记:函数与程序结构

目录 ACM金牌带你零基础直达C语言精通-课程资料 一.作用域的基本概念 二.函数 1. 函数的定义和使用 2.为什么一定要有函数结构 3.形参与实参 4.函数的声明和定义 5.递归函数 此代码中递归函数执行流程&#xff1a; 练习&#xff1a;求斐波那契数列第n项的值&#xff1a; 欧几里…