面试题总结(十)【数据库】【华清远见西安中心】
- 数据库的分类有哪些?
数据库可以按照不同的标准进行分类,以下是一些常见的数据库分类方式:
1. 关系型数据库(Relational Database):关系型数据库采用表格的形式来组织数据,数据之间通过键值关联。常见的关系型数据库有 MySQL、Oracle、SQL Server、PostgreSQL 等。
2. 非关系型数据库(NoSQL Database):非关系型数据库采用非结构化的数据模型来存储和组织数据,可以根据具体的需求选择不同的数据模型,如键值存储(Key-Value Store)、文档数据库(Document Database)、列族数据库(Column Family Database)、图数据库(Graph Database)等。常见的非关系型数据库有 MongoDB、Redis、Cassandra、Neo4j 等。
3. 分布式数据库(Distributed Database):分布式数据库将数据分布在多个物理节点上,通过分布式存储和处理技术来提高数据库的性能和可伸缩性。常见的分布式数据库有 Apache Hadoop、Apache Cassandra、Google Spanner 等。
4. 数据仓库(Data Warehouse):数据仓库是一个用于存储和管理大量结构化数据的系统,用于支持数据分析和决策支持。数据仓库通常采用关系型数据库,但具有优化的数据结构和查询性能。
5. 内存数据库(In-Memory Database):内存数据库将数据存储在内存中,以提高数据库的读写性能。由于内存的读写速度远快于磁盘,内存数据库可以提供更高的响应速度和吞吐量。
6. 时间序列数据库(Time Series Database):时间序列数据库专门用于存储和处理按时间顺序排列的数据,如传感器数据、日志数据等。时间序列数据库具有高效的存储和查询性能。
7. 对象数据库(Object Database):对象数据库将对象作为数据的基本单位,支持面向对象的数据建模和查询。对象数据库适用于存储和管理复杂的对象结构和关系。
8. 嵌入式数据库(Embedded Database):嵌入式数据库是一种轻量级的数据库,通常直接嵌入到应用程序中,无需独立的数据库服务器。嵌入式数据库适用于资源有限的环境和需要独立部署的应用程序。
这些是一些常见的数据库分类方式,每种数据库类型都有自己的特点和适用场景。根据具体的需求和应用场景,可以选择合适的数据库类型来存储和管理数据。
- 关系型数据库有哪些?
关系型数据库是一种采用表格形式组织数据、数据之间通过键值关联的数据库类型。以下是一些常见的关系型数据库:
1. MySQL:MySQL 是一种开源的关系型数据库管理系统,广泛应用于Web应用和中小型企业。它具有良好的性能和可靠性,并支持多种操作系统和编程语言。
2. Oracle Database:Oracle Database 是由 Oracle 公司开发的商业关系型数据库管理系统。它是一款功能强大的数据库,支持大规模数据处理和复杂的事务处理。
3. SQL Server:SQL Server 是由微软公司开发的关系型数据库管理系统,适用于 Windows 环境。它提供了丰富的功能和工具,适用于企业级应用和数据分析。
4. PostgreSQL:PostgreSQL 是一款开源的关系型数据库管理系统,具有高度可扩展性和灵活性。它支持复杂的数据类型和高级查询功能,并提供丰富的扩展和插件。
5. IBM Db2:IBM Db2 是 IBM 公司开发的关系型数据库管理系统,适用于企业级应用和大规模数据处理。它具有高性能、高可靠性和强大的安全性。
6. SQLite:SQLite 是一款轻量级的嵌入式关系型数据库,无需独立的数据库服务器。它适用于资源有限的环境和嵌入式应用,如移动应用和浏览器。
7. Microsoft Access:Microsoft Access 是微软公司开发的桌面关系型数据库管理系统,适用于小型应用和个人用户。它提供了可视化的界面和易于使用的工具。
以上是一些常见的关系型数据库,每种数据库都有自己的特点和适用场景。根据具体的需求和应用场景,可以选择合适的关系型数据库进行数据存储和管理。
- sqlite3数据库的特点是什么?
SQLite3 是一种轻量级的嵌入式关系型数据库,具有以下特点:
1. 嵌入式:SQLite3 是一个嵌入式数据库,不需要独立的数据库服务器,数据库以文件的形式存储在本地文件系统中。这使得SQLite3 非常适合于嵌入到应用程序中,无需额外的配置和管理。
2. 轻量级:SQLite3 的代码库非常小巧,没有复杂的安装和配置过程,占用的内存和磁盘空间较少。它适用于资源有限的环境和嵌入式设备。
3. 单用户:SQLite3 是单用户数据库,不支持同时多个用户的并发访问。这意味着它不适合用于高并发的应用场景,但对于单用户或低并发的应用非常适用。
4. 零配置:SQLite3 不需要复杂的配置和管理,只需引入相应的库文件即可。数据库的创建、表的定义和数据操作都可以通过简单的 SQL 语句完成。
5. 事务支持:SQLite3 支持事务,可以确保数据的一致性和完整性。它采用原子性、一致性、隔离性和持久性(ACID)的事务特性,可以确保在并发访问和故障恢复时数据的正确性。
6. 跨平台:SQLite3 支持多种操作系统和编程语言,包括 Windows、Linux、macOS、iOS 和 Android 等。它提供了针对不同平台的库文件和接口,使得开发人员可以在不同的平台上使用相同的代码和数据库文件。
7. 高性能:尽管 SQLite3 是一个轻量级的数据库,但它具有良好的性能。SQLite3 采用了高效的查询优化和索引技术,可以快速执行复杂的 SQL 查询。
8. 支持丰富的数据类型:SQLite3 支持多种数据类型,包括整数、浮点数、字符串、日期时间、二进制数据等。它还支持复杂的数据结构,如数组、JSON 和全文搜索等。
综上所述,SQLite3 是一个轻量级、嵌入式的关系型数据库,具有简单易用、跨平台、高性能等特点。它适用于小型应用、移动应用、嵌入式设备和资源有限的环境。
- sqlite3支持的数据类型有哪些?
SQLite3 支持以下常见的数据类型:
1. NULL:表示空值。
2. INTEGER:表示整数类型,可以存储任意长度的整数。
3. REAL:表示浮点数类型,用于存储小数。
4. TEXT:表示文本类型,用于存储字符数据。
5. BLOB:表示二进制大对象类型,用于存储二进制数据,如图片、音频等。
除了上述基本数据类型,SQLite3 还支持以下特殊数据类型:
6. NUMERIC:表示任意精度的数字,可以存储整数和浮点数。
7. DATE:表示日期类型,存储日期数据。
8. TIME:表示时间类型,存储时间数据。
9. DATETIME:表示日期时间类型,存储日期和时间数据。
10. BOOLEAN:表示布尔类型,存储真或假。
11. JSON:表示 JSON 数据类型,可以存储和查询 JSON 格式的数据。
此外,SQLite3 还支持用户自定义的数据类型,可以根据需要定义和使用自定义类型。
需要注意的是,SQLite3 是一种动态类型的数据库,它允许在同一个列中存储不同类型的值。这意味着可以在同一列中存储整数、浮点数、文本等不同类型的数据。但为了数据的完整性和查询的准确性,建议在设计数据库时尽量根据数据的实际类型进行定义。
- sqlite3支持的约束是什么?
SQLite3 支持以下常用的约束:
1. PRIMARY KEY:定义列为主键,唯一标识表中的每一行。主键必须是唯一且非空的。
2. UNIQUE:确保列中的值是唯一的,不允许重复值。
3. NOT NULL:确保列中的值不为空,即不能为空。
4. CHECK:定义列中的值必须满足指定的条件。可以使用表达式来定义检查条件。
5. FOREIGN KEY:定义表之间的关联,用于创建外键约束。外键可以确保引用表中的数据的完整性。
需要注意的是,SQLite3 在默认情况下不启用外键约束,需要手动开启。可以使用 `PRAGMA foreign_keys = ON;` 命令来启用外键约束。
除了上述常用的约束,SQLite3 还支持以下一些特殊的约束:
6. UNIQUE INDEX:定义列或多个列的唯一索引,确保索引中的值是唯一的。
7. COLLATE:定义用于比较和排序数据的排序规则。可以根据需要指定不同的排序规则。
值得注意的是,SQLite3 不支持如 CHECK CONSTRAINT、FOREIGN KEY CONSTRAINT 和 DEFAULT 等其他常见的约束。但可以通过触发器(Trigger)来实现类似的约束行为。
在设计数据库时,使用适当的约束可以确保数据的完整性和一致性,避免数据不一致或错误的插入和更新操作。
- 如何设计一个数据库,有什么标准?
数据库设计是一个重要的过程,它决定了数据存储的结构和关系,直接影响到系统的性能、可扩展性和数据的完整性。以下是一些常见的数据库设计标准和最佳实践:
1. 规范化(Normalization):规范化是一种将数据库设计分解为更小、更简单、更一致的结构的过程。它有助于消除冗余数据、提高数据的一致性和减少数据更新的复杂性。常用的规范化级别包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
2. 主键(Primary Key):为每个表定义一个主键,用于唯一标识表中的每一行。主键应该是唯一的、非空的和稳定的,通常使用自增的整数或全局唯一标识符(GUID)作为主键。
3. 外键(Foreign Key):使用外键建立表之间的关联关系,确保引用表中数据的完整性。外键用于定义父子关系,可以实现数据的级联更新和级联删除操作。
4. 索引(Index):使用索引提高查询性能。对于经常被查询的列或经常用于连接和过滤的列,创建索引可以加快查询速度。但过多的索引也会增加数据插入和更新的开销,需要权衡使用。
5. 数据类型选择:选择适当的数据类型存储数据,尽量避免存储不必要的冗余信息。根据数据的特点选择整数、浮点数、字符串、日期时间等合适的数据类型。
6. 数据完整性约束:使用约束确保数据的完整性和一致性。常见的约束包括主键约束、唯一约束、非空约束、检查约束和外键约束。
7. 范围和长度限制:根据业务需求和数据的特点,对数据的范围和长度进行限制,避免存储无效或过长的数据。
8. 性能优化:考虑数据库的性能优化,包括合理使用索引、避免不必要的查询、良好的查询语句设计和适当的数据分区等。
9. 安全性考虑:保护数据库的安全,包括设置合适的用户权限和访问控制、数据加密和备份等。
10. 扩展性考虑:根据业务需求和未来的扩展计划,设计数据库的扩展性。考虑到数据量的增长和性能需求的变化,合理划分表和分区,避免单表数据过大。
以上是数据库设计的一些常见标准和最佳实践。具体的数据库设计取决于应用的特点和需求,需要综合考虑各种因素进行设计。在设计过程中,可以参考数据库设计原则和经验,同时根据实际情况进行调整和优化。
- 常用的sql语句有哪些?
常用的 SQL 语句包括以下几种:
1. SELECT:用于查询数据,从一个或多个表中检索数据行和列。
SELECT 列名 FROM 表名 WHERE 条件;
2. INSERT:用于向表中插入新行或数据。
INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1, 值2, 值3);
3. UPDATE:用于更新表中现有行的数据。
UPDATE 表名 SET 列1=值1, 列2=值2 WHERE 条件;
4. DELETE:用于从表中删除行或数据。
DELETE FROM 表名 WHERE 条件;
5. CREATE TABLE:用于创建新表。
CREATE TABLE 表名 (列1 数据类型, 列2 数据类型, 列3 数据类型, ...);
6. ALTER TABLE:用于修改现有表的结构。
ALTER TABLE 表名 ADD COLUMN 列名 数据类型;
7. DROP TABLE:用于删除表。
DROP TABLE 表名;
8. JOIN:用于通过共同的列将两个或多个表连接在一起。
SELECT 列名 FROM 表1 JOIN 表2 ON 表1.列 = 表2.列;
9. GROUP BY:用于将结果集按照一个或多个列进行分组。
SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;
10. ORDER BY:用于对结果集中的数据按照一个或多个列进行排序。
SELECT 列名 FROM 表名 ORDER BY 列名 ASC/DESC;
以上是一些常见的 SQL 语句,用于完成常见的数据操作任务。根据具体的需求和业务逻辑,可以结合使用这些语句进行复杂的数据操作和查询。同时,SQL 还有很多其他的语句和功能,如子查询、视图、存储过程等,可以根据需要学习和应用。
- sqlite3的C语言接口是什么?
SQLite3 提供了一个 C 语言接口,允许开发者使用 C 语言来操作和管理 SQLite3 数据库。以下是 SQLite3 C 语言接口的一些常用函数:
1. sqlite3_open:用于打开一个数据库连接。
int sqlite3_open(const char *filename, sqlite3 **ppDb);
2. sqlite3_exec:用于执行一个 SQL 语句。
int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *user_data, char **error_msg);
3. sqlite3_prepare_v2:用于编译一个 SQL 语句。
int sqlite3_prepare_v2(sqlite3 *db, const char *sql, int sql_len, sqlite3_stmt **stmt, const char **tail);
4. sqlite3_bind_*:用于绑定参数到一个预编译的 SQL 语句中。
int sqlite3_bind_int(sqlite3_stmt *stmt, int index, int value);
int sqlite3_bind_text(sqlite3_stmt *stmt, int index, const char *value, int value_len, void (*destructor)(void *));
5. sqlite3_step:用于执行一个预编译的 SQL 语句。
int sqlite3_step(sqlite3_stmt *stmt);
6. sqlite3_column_*:用于获取查询结果中的列数据。
int sqlite3_column_int(sqlite3_stmt *stmt, int index);
const unsigned char *sqlite3_column_text(sqlite3_stmt *stmt, int index);
7. sqlite3_finalize:用于释放一个预编译的 SQL 语句。
int sqlite3_finalize(sqlite3_stmt *stmt);
8. sqlite3_close:用于关闭一个数据库连接。
int sqlite3_close(sqlite3 *db);
以上是 SQLite3 C 语言接口的一些常用函数,通过这些函数可以完成数据库的打开、关闭、执行 SQL 语句、查询结果的获取等操作。开发者可以根据具体的需求和业务逻辑使用这些函数来操作和管理 SQLite3 数据库。同时,SQLite3 C 语言接口还提供了其他的函数和功能,可以根据需要学习和应用。
相关文章:
面试题总结(十)【数据库】【华清远见西安中心】
数据库的分类有哪些? 数据库可以按照不同的标准进行分类,以下是一些常见的数据库分类方式: 1. 关系型数据库(Relational Database):关系型数据库采用表格的形式来组织数据,数据之间通过键值关联…...

计算机网络:物理层(三种数据交换方式)
今天又学到一个知识,加油! 目录 前言 一、电路交换 二、报文交换 三、分组交换 1、数据报方式 2、虚电路方式 3、比较 总结 前言 为什么要进行数据交换? 一、电路交换 电路交换原理:在数据传输期间,源结点与…...

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理
进入VirtuakBox官网,网址链接:Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接:Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…...
Nvidia 驱动安装不完整记录
Nvidia 驱动安装不完整记录 安装 epel, sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-releaselatest-8.noarch.rpm安装 gcc-toolset-11-gcc, dnf install gcc-toolset-11-gcc修改 gcc,make,as 为 gcc-tools…...

龙芯loongarch64服务器编译安装gcc-8.3.0
前言 当前电脑的gcc版本为8.3.0,但是在编译其他依赖包的时候,出现各种奇怪的问题,会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc,替换系统自带的gcc。 环境准备 下载页面:龙芯开源社区网站 - LoongArch GCC 8.3 交叉工具链 - 源码下载源码包名称如:loongson-gnu…...

宏基因组学Metagenome-磷循环Pcycle功能基因分析-从分析过程到代码及结果演示-超详细保姆级流程
大背景介绍 生信分析,凡事先看论文,有了论文就有了参考,后续分析就有底了,直接上硬菜开干: PCycDB: a comprehensive and accurate database for fast analysis of phosphorus cycling genes - PubMed 数据库及部分分析代码github库: GitHub - ZengJiaxiong/Phospho…...

element plus 日期范围 自定义内容
问题: 按照官网上的自定义内容示例,修改日期选择器没有问题,如果修改日期范围选择器,修改后会丢失日期范围选择时的样式。 解决: 从F12中不难看出日期范围的选择样式来自于.el-date-table-cell 而示例中写的是.cell&…...

[23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
[paper | proj] 给定FLAME,基于每个三角面片中心初始化一个3D Gaussian(3DGS);当FLAME mesh被驱动时,3DGS根据它的父亲三角面片,做平移、旋转和缩放变化;3DGS可以视作mesh上的辐射场࿱…...

JSON Ajax
1. JSON概念 JSON,全称JavaScript Object Notation,即JavaScript对象表示法,是一种轻量级的数据交换格式。它基于JavaScript的子集,易于人阅读和编写,同时也易于机器解析和生成。 JSON的诞生,是为了解决电…...
ElasticSearch与HBase的分布式存储设计
本文内容覆盖如今两大非结构化数据库之间的区别 详情介绍 从各个角度详细对比 1. 官方定位 HBase 是 Hadoop 数据库,是一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时的读/写访问时,请使用 Apache HBase™。 这个项目的目标是在商用硬件集群上托管非常大…...

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)
回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图) 目录 回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)效果一览基本介绍…...

Bezier 曲线 2D
Bezier 曲线于 1962 年由法国雪铁龙汽车公司的工程师 Bezier 所发表,主要应用于汽车的外形设计。虽然 Bezier 曲线早在 1959 年便由法国雷诺汽车公司的 De Casteljau 运用递推算法开发成功,但是 Bezier 却给出了曲线的详细的曲线计算公式。所以ÿ…...

Linux静态ip
Linux静态ip Ⅰ、修改静态ip Ⅰ、修改静态ip 修改静态ip必须是root用户 su root //切换root用户 ip a //查看修改前的动态ipvi /etc/sysconfig/network-scripts/ifcfg-ens33 //打开网卡配置文件,修改一处,新增四处 BOOTPROTO&quo…...

一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读
A VIDEO ANOMALY DETECTION FRAMEWORK BASED ON APPEARANCE-MOTION SEMANTICS REPRESENTATION CONSISTENCY 论文阅读 ABSTRACT1. INTRODUCTION2. PROPOSED METHOD3. EXPERIMENTAL RESULTS4. CONCLUSION阅读总结: 论文标题:A VIDEO ANOMALY DETECTION FRA…...

Netty—NIO万字详解
文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一:缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明: 核心二:通道 (Channel)Channel类及其…...
面试经典150题(32-37)
leetcode 150道题 计划花两个月时候刷完,今天(第十五天)完成了6道(32-37)150: 今天刚好有点没精神的感觉,然后碰到的题也不难。。天意!!! 32.(289. 生命游戏࿰…...

手撕分布式缓存---HTTP Client搭建
经过上个章节的学习,我们已经实现了一致性哈希算法,这个算法保证我们可以在节点发生变动时,最少的key请求受到影响,并返回这个节点的名称;这很大程度上避免了哈希雪崩和哈希穿透的问题。这个章节我们要基于此实现完整的…...
word如何快速制作简易代码块
先上解决方案。 方式一(全自动): typora编辑,导出选择word文档即可。内网环境,故放弃。 方式二(全手动): 在修改文档时,左侧会有“段落布局”按钮,点击该按…...

Linux常用网络指令
网络参数设定使用的指令 手动/自动设定与启动/关闭 IP 参数:ifconfig, ifup, ifdown ifconfig ifconfig常用于修改网络配置以及查看网络参数的指令 [rootwww ~]# ifconfig {interface} {up|down} < 观察与启动接口 [rootwww ~]# ifconfig interface {options…...
Spark on Yarn 安装配置实验(3.1.1)
子任务二: Spark on Yarn 安装配置 本任务需要使用 root 用户完成相关配置, 已安装 Hadoop 及需要配置前置环境,具体要求如下: 1 、从宿主机 /opt 目录下将文件 spark-3.1.1-bin-hadoop3.2.tgz 复制到容器 Master 中的 /opt/software (若 路径不存在,则需新…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...