数据库(专业存储数据)

news2024/9/22 7:39:38

数组、链表、变量----->内存:程序运行结束,数据丢失

文件-------------->硬盘

数据库:专业存储数据,大量数据----------->硬盘

一、数据库文件与普通文件区别:

1.普通文件对数据管理(增刪改查)效率低
2.数据库对数据管理效率高,使用方便

二、常用数据库:
1.关系型数据库:

将复杂的数据结构简化为二维表格形式
大型:Oracle、DB2
中型:MySq1、SQLServer
小型:Sqlite

2.非关系型数据库
以键值对存储,且结构不固定
//JSON
Redis
MongoDB

3.嵌入式数据库:
sqlite3 :
stu.db
1.开源免费,C语言开发;
2.代码量少,1万行左右,总大小10M以内;
3.文件型数据库,可以移动;
4.数据容量最大2T;

三、sqlite3数据库(SQLite 教程 | 菜鸟教程)

1.sqlite相关的命令

      .tables                         查看数据库中的表
      .headers on/off            开启或者关闭表头
      .mode column              列对齐
      .width 列宽1 列宽2      设置每一列的列宽
      .schema  表名              查看表的结构

2.sqlite的SQL语句

每个sql语句后面必须要有一个;
        INTEGER : 整形
        REAL: 浮点型
        TEXT:文本类型,字符串
        NULL : 空
       1.创建表
          create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型) ;

       2. 插入数据
           insert into 表名 values(值1, 值2, 值3);

       3. 查询
          select 列名1,列名2  from 表名;
          select *  from 表名;
         条件查找:
          select *  from 表名 where 列 关系运算符 值;
          关系运算符:   >   <   =    !=, >=, <=, and,or
         like : 模糊匹配

         % 可以通配多个字符
        _  只能通配一个字符

        升序排列
        select * from 表名 order by 列名 ASC;
        降序排列:
        select * from 表名 order by 列名 DESC;

    4. 删除一行
        delect from 表名 where 列名 关系运算符 值;
    5. 删除一张表
        drop 表名;      

    6. 修改    
        update 表名 set 列名=新值 where 列=值;

    7. 设置主键值自动增长列
        1. 主键值自动增长列的数据类型必须是INTEGER
        2. 类名 INTEGER PRIMARY KEY AUTOINCREMENT,

    8 .多表联查
         内连接   INNER JOIN
         外连接   LEFT OUTER

3.sqlite提供的c/c++ API接口

(1)int   sqlite3_open(const char *filename,sqlite3 **ppDb);

功能:是 SQLite 的 C 接口中的一个函数,用于打开一个 SQLite 数据库。如果指定的数据库文件不存在,该函数会创建一个新的数据库文件。

函数参数

  • const char *filename:要打开的数据库文件的名称。如果文件不存在,将会创建一个新的数据库。
  • sqlite3 **ppDb:指向 SQLite 数据库的指针的地址。如果打开成功,该指针将指向打开的数据库对象。

返回值

  • 返回值是一个整数,指示操作的结果:
    • SQLITE_OK:成功打开数据库。
    • 其他值:表示错误,可以通过 sqlite3_errmsg() 获取详细的错误信息。

(2)int sqlite3_exec()

功能:用于执行 SQL 命令。

函数原型

int sqlite3_exec( sqlite3 *db, /* 数据库连接对象 */ const char *sql, /* 需要执行的 SQL 语句 */ sqlite3_callback callback, /* 回调函数,用于处理结果 */ void *arg, /* 回调函数的参数 */ char **errMsg /* 错误信息 */ );

参数

  • sqlite3 *db:指向已打开的数据库连接对象的指针。
  • const char *sql:需要执行的 SQL 语句可以是一个或多个 SQL 命令(如 INSERTUPDATEDELETECREATE TABLE 等),以分号 (;) 作为结尾。
  • sqlite3_callback callback:用于处理结果的回调函数。如果不需要处理结果,可以传入 NULL
  • void *arg:传入回调函数的自定义参数,可以为 NULL
  • char **errMsg:指向字符指针的地址,用于返回错误信息。如果执行成功,通常可以为 NULL

返回值

  • 返回值是一个整数,指示执行的结果:
    • SQLITE_OK:表示成功。
    • 其他的返回值表示不同的错误,可以通过调用 sqlite3_errmsg(db) 获取具体的错误信息

回调函数:int callback(void *data, int argc, char **argv, char **azColName);

参数说明

  1. *void data:用户自定义的参数。在调用 sqlite3_exec() 时,你可以传递一个指针作为这个参数,通常用于在回调中传递上下文信息。

  2. int argc:查询结果中列的数量。

  3. **char argv:一个字符串数组,每个字符串对应于结果集的一列。argv[i] 是第 i 列的值。如果某一列值为 NULL,则对应的元素为 NULL

  4. **char azColName:一个字符串数组,包含了每一列的列名。azColName[i] 是第 i 列的列名。

返回值

  • 回调函数需要返回一个整数。如果返回非零值,SQLite 将终止执行。

(3)sqlite3_close();

创建插入示例:

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

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

相关文章

UNI-APP 打包构建 APK

UNI-APP 打包构建 APK 前言一、WINDOWS&#xff08;在线 - 纯命令版&#xff09;依赖其他前置准备实现原理操作步骤 二、WINDOWS&#xff08;离线 - Android Studio 版&#xff09;依赖&#xff08;首次构建需要联网安装依赖&#xff09;其他前置准备实现原理操作步骤 三、WIND…

【QT】学习笔记:处理数据库 SQLite

在 Qt 中使用 SQLite 数据库非常简单&#xff0c;Qt 提供了 QSqlDatabase 和 QSqlQuery 类来处理数据库的连接、查询、插入、更新和删除等操作。下面是一个示例程序&#xff0c;展示如何在 Qt 中使用 SQLite 数据库。 示例代码 1. 项目配置 首先&#xff0c;确保在项目的 .p…

李宏毅 机器学习与深度学习【2022版】 03

文章目录 一、卷积神经网络CNN二、使用验证集&#xff0c;模型还过拟合的原因三、深度学习的优点四、Spatial Transformer Layer 一、卷积神经网络CNN CNN在影像识别中&#xff0c;表现比较好。 每个感受野 receptive field 都有一个神经元去探测鸟嘴&#xff0c;是没有没要的…

Vue(三)内置指令v-text、html、cloak、once、pre;自定义指令的三种方式、Vue生命周期

文章目录 1. 内置指令1.1 v-text、v-html指令1.2 v-cloak指令1.3 v-once指令1.4 v-pre指令 2. 自定义指令(directives)2.1 函数式2.2 对象式2.3 注意点 3. 生命周期3.1 挂载流程3.2 更新流程3.3 销毁流程 1. 内置指令 1.1 v-text、v-html指令 v-text与v-html都是向所在的节点…

0. Spring 的 控制反转和依赖注入

提起Spring&#xff0c;很多人第一反应就是IOC和AOP。那IOC到底是什么东东&#xff1f; IOC&#xff08;Inversion of Control) 翻译过来叫控制反转。DI&#xff08;Dependency Injection&#xff09;翻译过来叫依赖注入。这时候就应该掏出我们的人生三问了。 控制反转用人话说…

【数据结构】线性表的链式表示(单链表)

计算机考研408-数据结构笔记本之——第二章 线性表 2.3 线性表的链式表示&#xff08;单链表的定义、基本操作&#xff1a;初始化/插入/删除/查找与建立&#xff09;

苹果 iOS / iPadOS 18 beta8和iOS / iPadOS 18.1 beta3版本更新

苹果今日向iPhone和iPad用户推送了 iOS / iPadOS 18 开发者预览版 Beta 8 更新&#xff08;内部版本号&#xff1a;22A5350a&#xff09;和iOS / iPadOS 18.1 开发者预览版 Beta 3 更新&#xff08;内部版本号&#xff1a;22B5034e&#xff09;&#xff0c;本次更新距离上次发布…

Linux系统使用Docker compose搭建开源文档系统Paperless-ngx

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux系统本地部署Paperless-ngx开源文档管理系统&#xff0c;并结合cpolar内网穿透工具解决本地部署…

Oracle SYSAUX表空间使用率过高进行清理

巡检的时候发现SYSAUX表空间使用率超过了80%&#xff0c;将近达到了60G: TABLESPACE_NAME Allocated (MB) Free (MB) Used (MB) PERCENTFREE -------------------- -------------- ---------- ---------- ----------- SYSAUX 60440 7907 …

Java框架第三课(Spring)超级全

目录 一.关于Spring (1)什么是Spring (2)IOC解释 (3)Aop解释 (4)"一站式"解释 二.Spring框架的搭建(以Hello World为例) ​编辑 三.Spring框架的IOC (1)IOC基于xml配置 (2)基于注解配置 (3)xml文件配置和注解配置的优缺点 四.Spring集成Mybatis (1)Spring集…

【亲测有效】icmp,tcpping工具源码

icmp&#xff0c;tcpping工具源码 import socket import subprocess import platform import time import sysdef icmp_ping(host, count4):param -n if platform.system().lower() windows else -ctry:# 执行 ping 命令result subprocess.run([ping, param, str(count), h…

给自己复盘的随想录笔记-哈希表

哈希表理论基础 哈希表 那么哈希表能解决什么问题呢&#xff0c;一般哈希表都是用来快速判断一个元素是否出现集合里。 将学生姓名映射到哈希表上就涉及到了hash function &#xff0c;也就是哈希函数。 哈希函数 如果hashCode得到的数值大于 哈希表的大小了&#xff0c;也就…

【Qt】QLCDNumber | QProgressBar | QCalendarWidget

文章目录 QLCDNumber —— 显示数字QLCDNumber 的属性QLCDNumber 的使用 QProgressBar —— 进度条QProgressBar 的属性创建一个进度条修改为 红色的进度条 QCalendarWidget —— 日历QCalendarWidget 的属性QCalendarWidget 的使用 QLCDNumber —— 显示数字 QLCDNumber 的属…

Nuxt3入门:介绍、项目安装和了解视图(第一节)

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 有对 Nuxt3.0 感兴趣的小伙伴吗&#xff1f;一起来了解下 一、介绍 Nuxt is an open source framework that makes web development intuitive and powerful. Create performant and production-grad…

通过 pnpm 安装依赖包会发生什么

通过 pnpm 安装依赖包会发生什么 通过 pnpm 下载的包都是放在一个全局目录&#xff08;.pnpm-store&#xff09;下&#xff0c;默认是在 ${os.homedir}/v3/.pnpm-store&#xff0c;如果我们不确定在哪里&#xff0c;可以输入下面的命令手动配置&#xff1a; pnpm set store-d…

数据库文件(嵌入式)

一、数据库文件与普通文件区别 1、普通文件对数据管理&#xff08;增删改查&#xff09;效率低 2、数据库对数据管理效率高&#xff0c;使用方便 二、常用数据库 1、关系型数据库&#xff1a; 将复杂的数据结构简化为二维表格形式 大型&#xff1a;Oracle、DB2 中型&#x…

Java 入门指南:Java NIO —— Channel(通道)

NIO 的引入 在传统的 Java I/O 模型&#xff08;BIO&#xff09;中&#xff0c;I/O 操作是以阻塞的方式进行的。当一个线程执行一个 I/O 操作时&#xff0c;它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈&#xff0c;因为需要为每个连接创建一…

哈工大-操作系统L29

从生磁盘到文件 通过文件使用磁盘更加直观方便 一.映射的左右与实现 1.映射作用 如何从文件得到盘块号,用户看到的字符流,而操作系统看见的是盘块,所以建立字符流到盘块的映射 读写&#xff1a;电梯队列到内存缓冲区中&#xff0c;修改然后再放到电梯队列写出去 操作系统负…

web渗透:信息收集常用的工具

目录 如何根据特定网站的特性选择合适的信息收集工具&#xff1f; 网络安全专业人士通常会使用哪些信息收集工具进行漏洞挖掘&#xff1f; 数据分析师在进行市场研究时通常使用哪些信息收集工具&#xff1f; 数据收集工具 数据处理工具 数据分析工具 数据呈现工具 思维导…

艺术家林曦:“高枕无忧”的生活,需要遇见更好的自己

多年前&#xff0c;林曦老师在与朋友的交谈中&#xff0c;曾提到“想过高枕无忧的生活”。那种身心安逸、无所忧虑&#xff0c;坦然面对自己的状态&#xff0c;想来着实愉快。      或许&#xff0c;当焦虑变为当今社会难以避免的课题&#xff0c;“高枕无忧”才更成了我们…