嵌入式数据库开发编程(三)——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应用
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
728 1
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
1027 0
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
523 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
725 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
存储 JSON 数据格式
什么情况,一夜之间冲上热搜,狂揽29.6k星,再见吧SQLite!这个嵌入式分析引擎实在太香了
DuckDB是一款嵌入式OLAP数据库,专为高效分析型查询设计,被誉为“分析型SQLite”。它采用列式存储和向量化查询引擎,显著提升分析任务性能。无需独立服务器,支持Python、R、Java等语言,安装简单,5分钟即可上手。DuckDB可直接查询CSV、JSON、Parquet文件,支持Pandas零拷贝交互,优化SQL语法简化复杂查询。适用于探索性数据分析、数据湖ETL流水线及边缘设备实时分析等场景,是数据科学家和开发者的理想工具。项目地址:https://github.com/duckdb/duckdb
1686 4
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
1010 14
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
647 16
|
SQL 调度 数据库
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。