嵌入式数据库开发编程(三)——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

相关文章
|
15天前
|
存储 SQL 关系型数据库
数据库开发设计规范(通用)
数据库开发设计规范(通用)
74 0
|
11天前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
122 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
10天前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具
|
10天前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
8天前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
10 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
10天前
|
前端开发 数据库 Python
用Python轻松开发数据库取数下载工具
用Python轻松开发数据库取数下载工具
|
17天前
|
关系型数据库 分布式数据库 数据库
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
|
16天前
|
Java 数据库连接 数据库
java系列之~如何给sqlite数据库添加表
这篇文章介绍了如何在Java中使用SQLite JDBC驱动来连接SQLite数据库,并提供了示例代码来演示如何创建一个新的数据库表。
|
7天前
|
SQL 关系型数据库 数据库连接
Entity Framework Core 入门教程来袭!快速上手强大的 ORM 工具,开启高效数据库开发之旅!
【8月更文挑战第31天】Entity Framework Core(EF Core)是一个轻量且可扩展的对象关系映射(ORM)框架,允许开发者使用 .NET 语言操作数据库而无需直接编写 SQL 语句。本教程涵盖 EF Core 的安装、数据库上下文创建、数据库连接配置及常见数据库操作(如添加、查询、更新和删除),并介绍如何利用数据库迁移功能安全地更改数据库结构。通过本教程,你可以快速掌握 EF Core 的基本用法,提高开发效率。
12 0
|
7天前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
15 0
下一篇
DDNS