MySQL相关知识

一、什么是数据库?

数据库(Database,简称DB)概念: 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个 数据“仓库”。

二、数据库的特点: 

1.结构化:数据在数据库中的存储可以依靠二维表结构来逻辑的存储数据,可以参考数据原有的依赖关系和结构关系去存储数据。

2.共享性:多个用户可以共同分享计算机数据 库中的数据资源,同一数据可以同 时被多人使用,从而实现了数据的 高效共享性。

3.独立性:存储在数据库的数据和应用程序之 间相互独立, 互不影响。数据在磁盘 上怎样存储由数据库管理而不依赖 于应用程序,这样当数据的物理存 储改变了,应用程序不用改变。

4.安全性:数据库在安全性的控制上也有很多 措施,比如访问数据库时对用户的 口令,用户的权限进行限制,再比 如对数据的存储进行限制。

三、数据库的作用:

       数据库的作用是: 存放、管理数据

四、数据库的分类

        数据库分为 ①关系型数据据②NoSQL数据库

五、常见的数据库有哪些?

关系型数据库:MySQL、ORACLE

NoSQL数据库:redis、mogongDB

五、为什么使用MySQL?

MySQL数据库的特点:①操作便捷、小巧但功能齐全②免费、开源的数据库③可运行于windows或linux系统。④操作方便,适合于中小型甚至大型网站应用

六、数据库结构

数据库(Database)文件的形式存放在磁盘上,即 对应于一个或多个物理文件。
数据表(Table)简称表,由一组数据记录组成, 数据库中的数据是以表为单位进 行组织的。一个表是一组相关的 按行排列的数据;每个表中都含 有相同类型的信息。

字段(Field)

也称域。表中的每一列称为一个 字段。每个字段都有相应的描述 信息。
记录(Record)表中的每一行称为一个记录,它 由若干个字段组成。实体
索引(Index)索引实际上是一种特殊类型的表, 其中含有关键字段的值和指向实 际记录位置的指针,可以提高访 问数据库的效率。
SQL语句结构化查询语句命令,用来从一 个或多个表中获取一组指定的记 录,或者对某个表执行指定的操 作。

七、SQL语句分类

        SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询程序设计语言,用于存取数据以及查询更新管理关系数据库系统,同时也是数据库脚本文件的扩展名。

名词解释命令

DDL

(数据定义语言)

定义和管理数据对象, 如数据库,数据表等CREATE、DROP、ALTER

DML

(数据操作语言)

用于操作数据库对象中所包含的数据INSERT、UPDATE、DELETE

DQL

(数据查询语言)

用于查询数据库数据SELECT

DCL

(数据控制语言)

用来管理数据库的语言,包括管理权 限及数据更改GRANT、COMMIT、ROLLBACK


八、DDL语句操作数据库

创建数据库

CREATE DATABASE  [IF NOT EXISTS]  dbname

  • "[IF NOT EXISTS] " :内容可以省略
  • "dbname"  :需要创建的数据库名称
删除数据库

DROP DATEBASE [IF EXISTS] dbname

  • " [IF NOT EXISTS] " : 内容可以省略
  • "dbname"  :需要删除的数据库名称
查看数据库

SHOW DATABASES

  • 注意不要省略 “S
选择数据库

USE dbname

  • "dbname"  :需要创建的数据库名称

九、DDL创建数据表

语法:

        CREAT TABLE [ IF NOT EXISTS `表名`  (

                `字段名1`  字段类型 [ 属性 ] [ 索引 ] [ 注释],

                `字段名2`  字段类型 [ 属性 ] [ 索引 ] [ 注释],

                ... ...

                `字段名n`  字段类型 [ 属性 ] [ 索引 ] [ 注释]

[ 表类型 ] [ 表字符集 ];

  • “[]” 包含的内容可以省略;
  • “`” 当前符号为反引号,用于区别MySQL保留字与普通字符而引入的。

十、数据库表的字段类型 

        1.字符串类型
类型说明取值范围存储需求
char[(M)]固定长字符串,检索快但费空间, 0 <= M <= 255M字符char[(M)]
varchar[(M)]可变字符串 0 <= M <= 65535变长度varchar[(M)]
tinytext微型文本串16777215长度+3个字节tinytext
text文本串(4个G左右)4294967295长度+4个字节text
        2.数值类型
类型说明取值范围储存需求
tinyint非常小的数据有符值: -2 ^7 ~ 2^7-1,无符号值:0 ~ 28-11字节
smallint较小的数据有符值: -2 15 ~ 215 -1 ,无符号值: 0 ~ 216 -12字节
mediumint中等大小的数据有符值: -2 23 ~ 223 -1 ,无符号值: 0 ~ 224 -13字节
int标准整数有符值: -2^31 ~ 2^31-1,无符号值:0 ~ 2^32-14字节
bigint较大的整数有符值: -2^63 ~2^63-1,无符号值:0 ~2^64-18字节
float单精度浮点数±1.1754351e -384字节
double双精度浮点数±2.2250738585072014e -3088字节
Decimal(钱)字符串形式的浮点数点数 decimal(m, d) m个字节
        3.日期和时间类型
类型说明取值范围储存需求
DATEYYYY-MM-DD,日期格式1000-01-01~ 9999-12-31DATE
TIMEHh:mm:ss ,时间格式-838:59:59~838:59:59TIME
DATETIMEYY-MM-DD hh:mm:ss1000-01-01 00:00:00 至 9999-12-31 23:59:59DATETIME
TIMESTAMPYYYYMMDDhhmmss格式表示的时间戳197010101000000 ~2037年 的某个时刻TIMESTAMP
YEARYYYY格式的年份值1901~2155YEAR

设置当前 创建时间,或者是更新时间时给TIMESTAMP或者DATETIME字段 设置 DEFAULT CURRENT_TIMESTAMP 添加当前默认时间 

 NULL类型:

  •  理解为“没有值”或“未知值”;
  •  不要用NULL进行算术运算,结果仍为NULL;
  •  MySQL中,0或NULL都意味着为假,1为真。

十一、数据库表的字段注释

 CREATE TABLE [ IF NOT EXISTS ] `表名` (

                 `字段名1` 字段类型 [ 属性 ] [ 索引 ] [注释] ,

                `字段名2` 字段类型 [ 属性 ] [ 索引 ] [注释] ,

                … …

                `字段名n` 字段类型 [ 属性 ] [ 索引 ] [注释]

) [ 表类型 ] [ 表字符集 ] ;

注释:可以给字段增加注释,即给字段增加描述,方便后续修改和维护字段。

十一、数据库表的字段注释

查询创建的数据库结构: 
        方式一:
                describe 表名
或 
                desc 表名 
        方式二: 
                show create table 表名 

十二、数据库存储引擎

查看当前数据库支持的存储引擎: show engines;

查询结果显示,MySQL 8支持9种存储引擎,分别为MEMORY、MRG_ MYISAMCSV FEDERATED PERFORMANCE_ SCHEMA MyISAMInnoDB 、BLACKHOLE 和ARCHIVE

  • Engine参数 表示存储引擎名称。
  • Support参 数表示MySQL数据库管理系统是否支持该存储引擎: YES表示支持,NO表示不支持。
  • DEFAULT表示系统默认支持的存储引擎。
  • Comment 参数表示对存储引擎的评论。
  • Transactions参数表示存储引擎是否支持事务: YES表示支持,NO表示不支持。
  • XA参数表示存储引擎所支持的分布式是否符合XA规范: YES表示支持,NO表示不支持。代表着该存储引擎是否支持分布式事务。
  • Savepoints参数表示存储引擎是否支持事务处理的保存点: YES表示支持,NO表示不支持。也就是说,该存储引擎是否支持部分事务回滚。
     

十四、 数据库存储引擎-MyISAM 和InnoDB区别(重点)

对比项MyISAMInnoDB
外键不支持支持
事务不支持

支持

行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发操作行锁,操作时只锁某一行,不对其它行有 影响,适合高并发操作
缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存 要求较高,而且内存大小对性能有决定性 的影响
默认安装Y
默认使用NY
关注点性能:节省资源、消耗少、简单业务事务:并发写,事务、更大资源

两种存储引擎各有特点,当然你也可以在MySQL中,针对不同的数据表,可以选择不同的存储引擎

十五、修改和删除数据表

修改表名ALTER【ɔːltə(r)】 TABLE 旧表名 RENAME AS 新表名
修改字段ALTER TABLE 表名 MODIFY 【mɒdɪfaɪ】 字段名 列类型 [ 属性 ] ALTER TABLE 表名 CHANGE 旧字段 名 新字段名 列类型 [ 属性 ]
删除字段ALTER TABLE 表名 DROP 字 段名
添加字段ALTER TABLE 表名 ADD 字段 名 列类型 [ 属性 ]
删除表DROP TABLE [ IF EXISTS ] 表名

十六、三范式

一、什么是范式

        为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。 在关系型数据库中这种规则就叫做范式。

二、约束作用

        数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。

三、三范式

        第一范式:确保每列保持原子性

        第二范式:确保表中的每列都和主键相关

        第三范式:确保每列都和主键列直接相关,而不是间接相关。

四、第一范式(1NF) 确保每列保持原子性
  1. 每一列属性都是不可再分的属性值,确保每一列的原子性
  2. 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据

 五、第二范式(2NF)属性完全依赖于主键
  •         第二范式(2NF)是在第一范式(1NF)的基础上建立起来的。即满足第二范式必须先满足第一范式。
  •         第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键。

 每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。

一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。

六、第三范式(3NF)属性不依赖于其它非主属性 属性直接依赖于主键

数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。

像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话) 这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话) 这样的表结构,我们应该拆开来,如下。

(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。 如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结 构。所以不能一味的去追求范式建立数据库。

十七、表约束

一、什么是约束

        约束实际上就是表中数据的限制条件

二、约束作用

        表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效

三、约束种类
  • 非空约束(not null)
  • 唯一性约束(unique)
  • 主键约束(primary key) PK
  • 外键约束(foreign key) FK
  • 检查约束(目前MySQL不支持、Oracle支持)
四、非空约束

        用not null约束的字段不能为null值,必须给定具体的数据

  • 默认,所有的类型的值都可以是NULL,包括INT. FLOAT等数据类型
  • 非空约束只能出现在表对象的列上,只能某个列单独限定非空不能组合非空
  • 一个表可以有很多列都分别限定了非空
  • 空字符串不等于NULL,0也不等于NULL

五、唯一约束

        unique约束的字段,具有唯一性不可重复,但可以为null

  • 同一个表可以有多个唯一约束。
  • 唯一约束可以是某一个列的值唯一, 也可以多个列组合的值唯一。
  • 唯一性约束允许列值为空。
  • 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。
  • MySQL会给唯一约束的列上默认创建一个唯一索引。

 

 五-1、唯一约束 --- 表级约束(1)

        在建表的时候,单独的用unique(字段) 来设置字段的约束

 五-2、唯一约束 --- 表级约束(2)

        使用表级约束,给多个字段联合约束

  五-3、唯一约束 --- 表级约束(3)

        表级约束可以给约束起名字(方便以后通过这个名字来删除这个约束)

constraint是约束关键字,t_user_email_unique 自己取的名字

六、主键约束(primary key)PK

        主键(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

        表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值

主键约束与“not null unique”区别

  1. 作为Primary Key的域/域组不能为null,而Unique Key可以。
  2. 在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。unique not null 可以 将表的一列或多列定义为唯一性属性,而primary key设为多列时,仅能保证多列之和是唯一的, 具体到某一列可能会重复。
  3. 更大的区别在逻辑设计上。Primary Key一般在逻辑设计中用作记录标识,这也是设Primary Key的本来用意,而Unique Key只是为了保证域/域组的唯一性

一张表应该有主键字段,如果没有,表示该表无效

主键值:是当前行数据的唯一标识、是当前行数据的身份证号 即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录

六-1、主键约束---分类
1.按主键约束的字段数量分类

        无论是单一主键还是复合主键,一张表主键约束只能有一个(约束只能有一个,但可以作用到好 几个字段)

        单一主键:给一个字段添加主键约束

        复合主键:给多个字段联合添加一个主键约束(只能用表级定义)

  • 一个表最多只能有一个主键约束,建立主键约束可以在列级别创建,也可以在表级别上创建。
  • 主键约束对应着表中的一列或者多列(复合主键)
  • 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复
  • MySQL的主键名总是PRIMARY,就算自己命名了主键约束名也没用。
  • 当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(能够根据主键查询的,就根据主键查询,效率更高)。如果删除主键约束了,主键约束对应的索引就自动删除了。
  • 需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识, 如果修改了主键的值,就有可能会破坏数据的完整性。
六-2、主键约束-复合主键(表级定义)

        在MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动 生成,自增数从1开始,以1递增(auto_increment)

(1) 一个表最多只能有一个自增长列
(2)当需要产生唯一标识符或顺序值时,可设置自增长
(3)自增长列约束的列必须是键列(主键列,唯一键列)
(4)自增约束的列的数据类型必须是整数类型
(5)如果自增列指定了0和null,会在当前最大值的基础上自增;如果自增列手动指定了具体值,直接赋值为具体值。

 七、外键约束(foreign key)FK

什么是外键?

        外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键

        A为基本表父表主表;B为信息表子表副表

只能是表级定义

foreign key(表的字段名) references 父表表名(父表的字段名)

某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值

按外键约束的字段数量分类

        单一外键:给一个字段添加外键约束

        复合外键:给多个字段联合添加一个外键约束

 注意:

一张表可以有多个外键字段(与主键不同)

外键值可以为null

外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束 有了外键引用之后,表分为父表和子表

        班级表:父表

        学生表:子表

创建先创建父表

删除先删除子表数据

插入先插入父表数据

班级表👇

学生表👇

 八、约束的添加

添加非空约束:

        alter table 表名 modify test_student char(10) not null;

添加唯一约束:

        alter table 表名 add unique(表字段名,字段,字段,字段);

添加主键约束:

        alter table 表名 add primary key(表的字段名,字段,字段);

添加外键约束:

        alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);

九、 约束的删除

删除not null约束:

        alter table 表名 modify 列名 类型;

删除unique约束:

        alter table 表名 drop index 唯一约束名;

删除primary key约束:

        alter table 表名 drop primary key;

删除foreign key约束:

        alter table 表名 drop foreign key 外键名;

#下一篇:DML数据操作语句和基本的DQL语句

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

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

相关文章

【leetcode】二分查找本质

标题&#xff1a;【leetcode】二分查找本质 水墨不写bug 正文开始&#xff1a;&#xff08;点击题目标题转跳到OJ&#xff09; 目录 &#xff08;O&#xff09;前言* &#xff08;一&#xff09; 在排序数组中查找元素的第一个和最后一个位置 思路详解&#xff1a; 参考代…

Python 爬虫 获取Instagram用户数据信息 Instagram API接口

爬取instagram用户主页数据信息 详细采集页面如下 https://www.instagram.com/abdallhdev/?hlen 请求API http://api.xxxx.com/ins/profile/username?usernameabdallhdev&tokentest 请求参数 返回示例 联系我们&#xff08;更多接口详见主页专栏&#xff09; 更多精彩…

Redis--12--1--分布式锁---java

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Redis与分布式锁Jedis实现1.RedisConfig2.RedisDistLock3.应用4.加上看门狗逻辑 RedisDistLockWithDog redisson实现1.依赖2.代码 Redis与分布式锁 Jedis实现 1.Re…

VScode通过Graphviz插件和dot文件绘制层次图,导出svg

1、安装插件 在VScode中安装Graphviz Interactive Preview插件&#xff0c;参考。 2、创建dot文件 在本地创建一个后缀为dot的文件&#xff0c;如test.dot&#xff0c;并写入以下内容&#xff1a; digraph testGraph {label "层次图";node [shape square; widt…

一文读懂英伟达A800的性能及应用场景

随着人工智能&#xff08;AI&#xff09;和高性能计算&#xff08;HPC&#xff09;领域的快速发展&#xff0c;对处理器的性能要求日益提高。英伟达&#xff08;NVIDIA&#xff09;作为全球领先的图形处理器&#xff08;GPU&#xff09;和人工智能技术公司&#xff0c;不断推出…

全国区块链职业技能大赛国赛考题区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 本任务需要依据项目背景完成需求分析与方案设计,具体要求如下: 依据给定区块链食品溯源系统的业务架构图,对考题进行业务分析,尽可能多的去考虑一个业务系统所需要的模块,使用Visio或思维导图工具展现本系统的基本设计概念和处理流…

python基础语法 007 文件操作-2文件支持模式文件的内置函数

1.3 文件支持的模式 模式含义ropen a file for reading(default)wopen a file for writing,creates a new file if it does not exist or truncates the file if it exists x open a file foe exclusive creation. if the file already exists, the operation fails.独创模式&…

约束

概述 概念 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的 保证数据库中数据的正确、有效性和完整性。 分类 【注意】约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加约束。 约束演示 根据需求&#xff0c;完成表结构的…

Docker核心技术:应用架构演进

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;应用架构演进&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进&#xff08;本文&#xff09;容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 1.1.架…

blender使用(三)常用建模操作及修改器

1&#xff0c;挤出图形 tab编辑模式&#xff0c;选中一个点/线/面&#xff0c;按键E&#xff0c;可以挤出对应的图形。选中点会挤出一条线&#xff0c;线会挤出一个面&#xff0c;面挤出体 2&#xff0c;倒角 选中一个边后&#xff0c;ctrlB &#xff0c;拖动鼠标是倒角范围&am…

数据结构 day3

目录 思维导图&#xff1a; 学习内容&#xff1a; 1. 顺序表 1.1 概念 1.2 有关顺序表的操作 1.2.1 创建顺序表 1.2.2 顺序表判空和判断满 1.2.3 向顺序表中添加元素 1.2.4 遍历顺序表 1.2.5 顺序表按位置进行插入元素 1.2.6 顺序表任意位置删除元素 1.2.7 按值进…

智能取纸机,帮助移动公厕,无人值守降低运营成本

在快节奏的城市生活中&#xff0c;移动公厕作为临时性或应急性的公共卫生设施&#xff0c;扮演着不可或缺的角色。然而&#xff0c;传统移动公厕的管理面临着诸多挑战&#xff0c;尤其是纸巾供应与使用效率问题。近年来&#xff0c;智能取纸机的出现&#xff0c;为移动公厕的管…

好玩新游:辛特堡传说中文免费下载,Dungeons of Hinterberg 游戏分享

在游戏中&#xff0c;你将扮演Luisa&#xff0c;一个被现实生活拖得疲惫不堪的法律实习生。她决定暂时远离快节奏的公司生活&#xff0c;踏上征服辛特堡地下城的旅程…她会在第一天就被击退&#xff0c;还是能成为顶级猎魔人呢&#xff1f;只有一个办法可以找到答案... 体验刺激…

《Milvus Cloud向量数据库指南》——SPLADE:基于BERT的Learned稀疏向量技术深度解析

在自然语言处理(NLP)领域,随着深度学习技术的飞速发展,预训练语言模型如BERT(Bidirectional Encoder Representations from Transformers)已成为推动研究与应用进步的重要基石。BERT通过其强大的上下文感知能力,在多项NLP任务中取得了显著成效,尤其是在文本表示和语义理…

昇思25天学习打卡营第20天| GAN图像生成

GAN是一种特别酷的机器学习模型&#xff0c;它由两个部分组成&#xff1a;生成器和判别器。生成器的任务是制造假的图像&#xff0c;而判别器则要判断图像是真是假。这俩就像是在玩一个捉迷藏的游戏&#xff0c;生成器越做越好&#xff0c;判别器也越来越聪明。 想象一下&…

光耦合器技术的实际应用

光耦合器也称为光隔离器&#xff0c;是现代电子产品中的关键组件&#xff0c;可确保电路不同部分之间的信号完整性和隔离。它们使用光来传输电信号&#xff0c;提供电气隔离和抗噪性。 结构和功能 光耦合器通常由以下部分组成&#xff1a; 1.LED&#xff08;发光二极管&#…

yolov5进行识别安全帽

进行毕业设计 下载yolov5使用按照教程来进行就行注意事项&#xff08;有必要看看&#xff09;效果 总结 下载yolov5 地址是&#xff1a;https://github.com/ultralytics/yolov5 使用按照教程来进行就行 这里简单说一下&#xff1a; 下载需要的命令&#xff1a; pip install -…

前端vue框架的项目文件创建及常见Vue指令运用

前言 本文介绍前端Vue框架&#xff0c;先从npm工具创建的Vue项目开始&#xff0c;对项目结构的一些文件用途进行说明&#xff0c;随后对Vue文件编写所用的两种风格&#xff08;选项式API和组合式API风格&#xff09;做了区分&#xff0c;同时对编写代码中常见的生命周期钩子函…

【OpenREALM学习笔记:14】单目视觉SLAM方法在UAV影像上重建三维地形的思考

最近在学习SLAM技术与测绘三维影像重建的相关知识&#xff0c;结合自己的感受&#xff0c;撰写一下对于单目视觉SLAM利用无人机影像重建三维地形的一些看法。 1. 单目视觉SLAM系统在三维地形重建中所面临的挑战有哪些&#xff1f; 单目视觉SLAM众所周知的一个问题是&#xff…

C语言联合及枚举

一.联合体 1.联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同的类型,但是编译器只为最大的成员分配足够的内存空间。 联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体,给联合体其中一个成员赋值…