嵌入式数据库开发编程(三)——sqlite3数据类型和存储类型

简介: 嵌入式数据库开发编程(三)——sqlite3数据类型和存储类型

导航


SQL语法

创建数据库

数据查询御酒

数据操纵语言

C API


一、SQL语言


数据定义(DDL) :用户定义、删除和修改数据模式

数据查询(DQL) :用于查询数据

数据操纵(DML) :用于增、删、改数据

数据控制(DCL) :用于控制数据访问权限

0a2653c851af460fa595bd959398a8f1.png

SQL的语法很像自然语言。每个语句都是一一个祈使句,以动词开头,表示所要做的动作。

2d65d23f6d4748949b924e4057485923.png

SQL由命令组成,每个命令以分号(;)结束,例如

2e9b90b2ca334476abebe75bafe6eeaa.png


1.1 数字类型


0a2653c851af460fa595bd959398a8f1.png


有三种:字符串常量、数据常量和二进制常量


1.1.1 整型


2d65d23f6d4748949b924e4057485923.png


1.1.2 浮点型


2e9b90b2ca334476abebe75bafe6eeaa.png


整型、浮点型、定点型

浮点型:float(M, D); double(M, D)


D表示浮点型数据小数点之后的精度,假如超过D位则四舍五入,即1.233四舍五入为1.23, 1.237四舍五入为1.24

M表示浮点型数据总共的位数,D-2则表示总共支持五位,即小数点前只支持三位数


create table test_float{
  num float(5, 2)
}; 
-- engine = innodb charset = utf8;
insert into test_float values(1.233)
insert into test_float values(1.237)
insert into test_float values(10.233)
insert into test_float values(100.233)
insert into test_float values(1000.233)


1.1.3 定点型


定点型(金融行业)decimal

decmal在不指定M. D时默认为decmal(10,0)


create table test_decimal{
  float_num float(10, 2),
  double_num double(20, 2),
  decimal_num decimal(20, 2)
}; 
insert into test_decimal values(123546565.23112, 16000000.33, 66666666.12)
insert into test_decimal values(1235465655.23112, 1600000000.33, 6665566666.12)


1.1.4 浮点型和定点型


浮点型VSdecimal

float、double类型存在精度丢失问题,即写入数据库的数据未必是插入数据库的数据

decimal无论写入数据中的数据是多少,都不会存在精度丢失问题,decimal类型常见于银行系统、互联网金融系统等对小数点后的数字比较敏感的系统中


1.2 日期类型


0a2653c851af460fa595bd959398a8f1.png


create table test_time{
  date_value date,
  time_value time,
  year_value datetime,
  datetime_value datetime,
  timestamp_value timestamp
}
insert into test_time values(now(), now(), now(), now(), now());


1.3 字符串类型


CHAR和VARCHAR

char是固定长度字符串,其长度范围为0~255且与编码方式无关,无论字符实际长度是多少,都会按照指定长度存储,不够的用空格补足

varchar为可变长度字符串(用的最多),在utf8编码的数据库中其长度范围为0~21844,如:1024

char实际占用的字节数即存储的字符所古用的字节数,varchar实际占用的字 节数为存储的字符+1或+2或+3

MySQL处理char类型数据时会将结尾的所有空格处理掉而varchar类型数据则不会

SQL 7

BINARY和VARBINARY(用不到)

BLOB和TEXT


二、SQLite 存储类


SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。

可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。image.png

image.png


2.1 Boolean 数据类型


SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)


2.2 Date 与 Time 数据类型



image.png

相关文章
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
12月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
641 1
|
12月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
939 0
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
483 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
675 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
存储 JSON 数据格式
什么情况,一夜之间冲上热搜,狂揽29.6k星,再见吧SQLite!这个嵌入式分析引擎实在太香了
DuckDB是一款嵌入式OLAP数据库,专为高效分析型查询设计,被誉为“分析型SQLite”。它采用列式存储和向量化查询引擎,显著提升分析任务性能。无需独立服务器,支持Python、R、Java等语言,安装简单,5分钟即可上手。DuckDB可直接查询CSV、JSON、Parquet文件,支持Pandas零拷贝交互,优化SQL语法简化复杂查询。适用于探索性数据分析、数据湖ETL流水线及边缘设备实时分析等场景,是数据科学家和开发者的理想工具。项目地址:https://github.com/duckdb/duckdb
1635 4
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
948 14