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

导航

  • SQL语法
  • 创建数据库
  • 数据查询御酒
  • 数据操纵语言
  • C API

一、SQL语言

数据定义(DDL) :用户定义、删除和修改数据模式
数据查询(DQL) :用于查询数据
数据操纵(DML) :用于增、删、改数据
数据控制(DCL) :用于控制数据访问权限
在这里插入图片描述
SQL的语法很像自然语言。每个语句都是一一个祈使句,以动词开头,表示所要做的动作。
在这里插入图片描述
SQL由命令组成,每个命令以分号(;)结束,例如
在这里插入图片描述

1.1 数字类型

在这里插入图片描述

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

1.1.1 整型

在这里插入图片描述

1.1.2 浮点型

在这里插入图片描述
整型、浮点型、定点型
浮点型: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 日期类型

在这里插入图片描述

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 中,值的数据类型与值本身是相关的,而不是与它的容器相关。

存储类描述
NULL值是一个 NULL 值。
INTEGER值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB值是一个 blob 数据,完全根据它的输入存储。
数据类型亲和类型
INT、INTEGER、TINYINT、SMALLINT、MEDIUMINT、BIGINT、UNSIGNED BIG INT、INT2、INT8INTEGER
CHARACTER(20)、VARCHAR(255)、VARYING CHARACTER(255)、NCHAR(55)、NATIVE CHARACTER(70)、NVARCHAR(100)、TEXT、CLOBTEXT
BLOB、no datatype specifiedNONE
REAL、DOUBLE、DOUBLE PRECISION、FLOATREAL
NUMERIC、DECIMAL(10,5)、BOOLEAN、DATE、DATETIMENUMERIC

2.1 Boolean 数据类型

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

2.2 Date 与 Time 数据类型

存储类日期格式
TEXT格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。
REAL从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。
INTEGER从 1970-01-01 00:00:00 UTC 算起的秒数。
posted @ 2022-04-26 14:03  周末不下雨  阅读(119)  评论(0编辑  收藏  举报