SQLite基础语法速用大法(Flutter)

前记

(可跳过这段来自本up的罗里吧嗦。。。)

在做上一个项目的时候,需要用到本地数据库,以前做公司项目用的是轻量级数据库Realm,做自己小项目用的是greenDAO,大学学的是SQL server,但是在flutter中,相关插件用的数据库是SQLite(sqflite插件),但本人还没接触过SQLite,问了后台同事,他们用的也是SQLite,说大同小异,我就想着仅凭大学记忆,快速过一遍SQLite知识点,应该挺快的,想着抓点重要的就够了。现在项目告一段落,就来写这篇博客记录一下(感觉有点标题党了哈哈哈)。

正文

小重点

1、SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。

2、注释大法:

(1)-- 这是一句注释

(2)/* 这是一句注释 */

一、数值类型

用于指定任何对象的数据类型的属性。

1、存储类

(1)NULL:NULL值(空值)。

(2)INTEGER:带符号的整数。

(3)REAL:浮点值。

(4)TEXT:文本字符串值。

(5)BLOB:二进制大对象,Binary Large Object。

2、亲和类型(优先采用)

当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式。

(1)TEXT:数值型数据插入前先转为文本格式再插入。

(2)NUMERIC:如果转换操作不会导致数据丢失以及完全可逆,则会转换为INTEGER和REAL,如果失败则会以TEXT存储。对于NULL和BLOB类型则不作类型转换存储。注意:浮点类型的文本,如"300.0",转为INTEGER不会丢失数值信息,则会转换为INTEGER类型存储。

(3)INTEGER:基本等同于NUMERIC,区别在于执行CAST表达式(转换类型)时。

        eg: 将column字段 文本类型转换为INTEGER类型。

SELECT * FROM Table ORDER BY CAST (column as INTEGER);

(4)REAL:基本等同于NUMERIC,区别在于不会将"300.0"这样的文本数据转为INTEGER类型存储。

(5)NONE:不做转换,以数据本身的数据类型存储。

3、SQLite 亲和类型(Affinity)及类型名称(以下作了解)

亲和类型(Affinity)及类型名称
数据类型 亲和类型
  • INT

  • INTEGER

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • BIGINT

  • UNSIGNED BIG INT

  • INT2

  • INT8

INTEGER
  • CHARACTER(20)

  • VARCHAR(255)

  • VARYING CHARACTER(255)

  • NCHAR(55)

  • NATIVE CHARACTER(70)

  • NVARCHAR(100)

  • TEXT

  • CLOB

TEXT
  • BLOB

  • no datatype specified

NONE
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

NUMERIC

4、Boolean数据类型

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

在我的项目中,直接存储为INTEGER类型,0为false,1为true。

5、Date 与 Time数据类型

SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。

在我的项目中,存储的是时间戳,要用时取出时间戳转换为具体的时间格式 [文本字符串] 显示。

Date 与 Time 数据类型
存储类 日期格式
TEXT 格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。
REAL 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。
INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数。

二、数据库相关操作语句

1、创建、附加、分离数据库

在此教程不作sqlite的数据操作的详细讲解,后续有时间补充。

原因:移动端的数据库操作一般根据插件的语句来。

三、表相关操作语句

SQLite语句是以关键字开始,分号结束的语句。

关键字:SELECT、INSERT、UPDATE、DELETE、ALTER、DROP。

:在此提出关注 ALTER 关键字,本人因为把 ALTER 写成 ALERT 导致语句执行错误。

1、表的创建

基本语法:(每一字段用逗号隔开,最后一个字段不用写逗号)

CREATE TABLE database_name.table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

eg:创建三张公司表,字段id自增,名称不为空,年龄不为空,工作岗位,工资。(结合Flutter中 sqflite 插件的语句写法。)

CREATE TABLE Company(
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   name TEXT NOT NULL,
   age INTEGER NOT NULL,
   job TEXT,
   salary R

你可能感兴趣的:(笔记,sqlite,数据库)