当前位置: 首页 > news >正文

嵌入式学习Day35

数据库:

SQLite3简介

SQLite3是一款轻量级的嵌入式关系型数据库引擎,无需服务器配置,支持跨平台操作,适用于移动应用、桌面软件及小型Web项目。它以单文件形式存储数据,支持标准SQL语法,提供事务、触发器等高级功能。

SQL struct query language 关系型数据库    非关系 芒果db
ddl  data defination language 建表
dml 新增 修改 删除一行 data modifty 
dql 查询 data query language    查询  select 

特点:
  1、开源  C语言开发
  2、代码量少 1万行左右,总大小10M以内
  3、绿色软件无需安装
  4、文件型数据库,可以移动。
  5、数据容量最大 2T   

安装SQLite3

在大多数Linux发行版中,SQLite3可以通过包管理器直接安装。对于基于Debian的系统(如Ubuntu),使用以下命令:

sudo apt install sqlite3

启动SQLite3命令行工具

安装完成后,可以通过以下命令启动SQLite3交互式命令行:

sqlite3

如果需要打开或创建一个数据库文件:

sqlite3 database_name.db

基本SQLite3命令

在SQLite3命令行中,命令以.开头,而SQL语句则以;结尾。

显示帮助信息:

.help

退出SQLite3命令行:

.exit

查看当前打开的数据库文件:

.databases

显示当前数据库中的所有表:

.tables

查看表的结构(schema):

.schema table_name

执行SQL操作

创建一个新表:

CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);

插入数据:

INSERT INTO users (name, age) VALUES ('Alice', 30);

查询数据:

SELECT * FROM users;

更新数据:

UPDATE users SET age = 31 WHERE name = 'Alice';

删除数据:

DELETE FROM users WHERE name = 'Alice';

导入和导出数据

将SQL语句导出到文件:

.output filename.sql
.dump
.output stdout

从SQL文件导入数据:

.read filename.sql

导出查询结果为CSV:

.mode csv
.output data.csv
SELECT * FROM users;
.output stdout

导入CSV文件到表中:

.mode csv
.import data.csv users

其他实用命令

设置输出格式:

.mode column
.headers on

计时SQL语句的执行时间:

.timer on

显示当前SQLite版本:

SELECT sqlite_version();

更改数据库连接:

.open new_database.db

SQLite3提供了灵活的数据库管理功能,适用于小型项目和嵌入式系统。通过上述命令可以完成大多数常见的数据库操作任务。

自动增长列(AUTOINCREMENT)

在SQLite3中,自动增长列通常通过INTEGER PRIMARY KEYINTEGER PRIMARY KEY AUTOINCREMENT实现。这两种方式都能自动为每行生成唯一递增的整数ID,但存在细微区别:

  • 仅用INTEGER PRIMARY KEY

    • 列值会自动递增,但回收的ID可能被重复使用(如删除行后)。
    • 示例:
      CREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT
      );
  • 使用AUTOINCREMENT

    • 确保ID严格递增且永不重复(即使删除行)。
    • 会额外消耗存储空间以维护最大ID值。
    • 示例:
      CREATE TABLE logs (log_id INTEGER PRIMARY KEY AUTOINCREMENT,message TEXT
      );

插入时间列

记录插入时间通常使用DEFAULT约束配合时间函数:

  • 当前时间戳(UTC)

    • 使用CURRENT_TIMESTAMP作为默认值,记录插入时的UTC时间。
    • 示例:
      CREATE TABLE orders (id INTEGER PRIMARY KEY,order_time TEXT DEFAULT CURRENT_TIMESTAMP
      );
  • 本地时间

    • 若需本地时间,可结合DATETIME函数与'now'参数。
    • 示例:
      CREATE TABLE events (id INTEGER PRIMARY KEY,created_at TEXT DEFAULT (DATETIME('now', 'localtime'))
      );
      
      
  • 其他时间格式

    • 通过STRFTIME自定义格式(如仅日期)。
    • 示例:
      CREATE TABLE reports (id INTEGER PRIMARY KEY,date_only TEXT DEFAULT (STRFTIME('%Y-%m-%d', 'now'))
      );

注意事项

  • 自动增长列仅适用于INTEGER PRIMARY KEY
  • 时间列建议使用TEXT类型存储,便于格式化输出。
  • 插入时若显式指定NULL,自动增长和时间默认值仍会生效。

相关文章:

  • Debian系统简介
  • 今日行情明日机会——20250610
  • 【WiFi扫描相关帧】
  • WHAT - 组件库开发场景 - 完全无样式的 UI 组件库 Headless UI
  • 从0到1:HBase安装与操作指南
  • Web应用压力测试详解
  • PostgreSQL 的扩展pg_surgery
  • PostgreSQL--安装方法
  • 6.10
  • 【Dv3Admin】系统视图角色菜单API文件解析
  • JxBrowser 7.43.2 版本发布啦!
  • srs linux
  • asio之读写
  • 解决克隆Github源码库时的Permission denied 问题
  • JAVA中的多线程
  • 对DOM操作 与 jQuery的简单理解(通俗
  • 【数组和二分查找】
  • 鹰盾播放器禁止录屏操作的深度技术解析与全栈实现方案
  • 《高等数学》(同济大学·第7版)第三章第五节“函数的极值与最大值最小值“
  • SpringDoc集成到Springboot
  • 温州网站关键词排名/网站建设营销推广
  • 网站安全的建设目标/网站推广优化平台
  • 动态网站开发语言/新闻摘抄
  • 嘉兴网站建设系统/考研培训
  • 成都网站设计培训/营业推广经典案例
  • 怎么用小旋风网站建设教程/如何做网络销售产品