当前位置: 首页 > news >正文

关于SQLite轻量数据库的研究

安装本地SQLite

下载地址:
https://www.sqlite.org/download.html

下载这两个包
在这里插入图片描述

解压到本地,得到这几个文件:
在这里插入图片描述

将解压后的目录添加到Path环境变量中:
在这里插入图片描述

在cmd中输入 “sqlite3” 和 “.open D:\work\sqliteInstall\mytestdb.db”
在这里插入图片描述

即可得到一个SQLite数据库文件
在这里插入图片描述

建表

在MySQL中,一般建表语句为

CREATE TABLE `ee_enterprise_info_integrity` (`id` varchar(32) NOT NULL COMMENT 'ID',`enterprise_name` varchar(256) NOT NULL COMMENT '企业名称',`social_credit_code` varchar(32) NOT NULL COMMENT '企业社会信用代码',`automatic_monitoring` varchar(2) DEFAULT '0' COMMENT '自动监控:1存在,0不存在',`vehicle_violation_monitoring` varchar(2) DEFAULT '0' COMMENT '车辆违规监控:1存在,0不存在',`electricity_monitoring` varchar(2) DEFAULT '0' COMMENT '用电监控:1存在,0不存在',`document_application` varchar(2) DEFAULT '0' COMMENT '排污许可证申办:1存在,0不存在',`execution_report` varchar(2) DEFAULT '0' COMMENT '执行报告:1存在,0不存在',`self_monitoring` varchar(2) DEFAULT '0' COMMENT '自行监测:1存在,0不存在',`general_guidelines` varchar(2) DEFAULT '0' COMMENT '通用行业检查指南:1存在,0不存在',`classification_Guidelines` varchar(2) DEFAULT '0' COMMENT '分类行业检查指南:1存在,0不存在',`administrative_law_enforcement` varchar(2) DEFAULT '0' COMMENT '行政执法:1存在,0不存在',`environmental_credit_evaluation` varchar(2) DEFAULT '0' COMMENT '环境信用评价:1存在,0不存在',`media_exposure` varchar(2) DEFAULT '0' COMMENT '媒体曝光:1存在,0不存在',`complaints_report` varchar(2) DEFAULT '0' COMMENT '投诉举报:1存在,0不存在',`enterprise_emissions` varchar(2) DEFAULT '0' COMMENT '企业排放:1存在,0不存在',`vehicle_transportation` varchar(2) DEFAULT '0' COMMENT '车辆运输:1存在,0不存在',`created_by` varchar(32) NOT NULL,`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_by` varchar(32) DEFAULT NULL,`updated_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='企业信息完整度配置表';

但在SQLite中,建表语句则需要变成:

CREATE TABLE `ee_enterprise_info_integrity` (`id` varchar(32) NOT NULL , -- 'ID'`enterprise_name` varchar(256) NOT NULL ,-- '企业名称'`social_credit_code` varchar(32) NOT NULL ,-- '企业社会信用代码'`automatic_monitoring` varchar(2) DEFAULT '0' ,-- '自动监控:1存在,0不存在'`vehicle_violation_monitoring` varchar(2) DEFAULT '0' ,-- '车辆违规监控:1存在,0不存在'`electricity_monitoring` varchar(2) DEFAULT '0' ,-- '用电监控:1存在,0不存在'`document_application` varchar(2) DEFAULT '0' ,-- '排污许可证申办:1存在,0不存在'`execution_report` varchar(2) DEFAULT '0' ,-- '执行报告:1存在,0不存在'`self_monitoring` varchar(2) DEFAULT '0' ,-- '自行监测:1存在,0不存在'`general_guidelines` varchar(2) DEFAULT '0' ,-- '通用行业检查指南:1存在,0不存在'`classification_Guidelines` varchar(2) DEFAULT '0' ,-- '分类行业检查指南:1存在,0不存在'`administrative_law_enforcement` varchar(2) DEFAULT '0' ,-- '行政执法:1存在,0不存在'`environmental_credit_evaluation` varchar(2) DEFAULT '0' ,-- '环境信用评价:1存在,0不存在'`media_exposure` varchar(2) DEFAULT '0' ,-- '媒体曝光:1存在,0不存在'`complaints_report` varchar(2) DEFAULT '0' ,-- '投诉举报:1存在,0不存在'`enterprise_emissions` varchar(2) DEFAULT '0' ,-- '企业排放:1存在,0不存在'`vehicle_transportation` varchar(2) DEFAULT '0' ,-- '车辆运输:1存在,0不存在'`created_by` varchar(32) NOT NULL,`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,-- '创建时间'`updated_by` varchar(32) DEFAULT NULL,`updated_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,-- '修改时间'PRIMARY KEY (`id`)
)

可见,在建表语句中,SQLite中,不支持“COMMENT”、“ON”、以及“InnoDB”等指定数据库类型的语法
因为SQLite只有一个存储引擎,它是内置的,称为SQLite。它以文件的形式存储数据,没有外部依赖,并且可以嵌入到应用程序中。

插入语句

在MySQL中插入语句为:

INSERT INTO `base_db`.`ee_enterprise_info_integrity` (`id`, `enterprise_name`, `social_credit_code`, `automatic_monitoring`, `vehicle_violation_monitoring`, `electricity_monitoring`, `document_application`, `execution_report`, `self_monitoring`, `general_guidelines`, `classification_Guidelines`, `administrative_law_enforcement`, `environmental_credit_evaluation`, `media_exposure`, `complaints_report`, `enterprise_emissions`, `vehicle_transportation`, `created_by`, `created_time`, `updated_by`, `updated_time`) VALUES 
('sj23ghj324g432', '测试企业', 'ESB73461282311', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '张三', '2024-07-31 14:26:06', '张三', '2024-07-31 14:26:06'),
('sj23ghj324g433', '测试企业1', 'ESB73461282313', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '张三', '2024-07-31 14:26:09', '张三', '2024-07-31 14:26:09');

将语句直接复用到SQLite中:

INSERT INTO `ee_enterprise_info_integrity` (`id`, `enterprise_name`, `social_credit_code`, `automatic_monitoring`, `vehicle_violation_monitoring`, `electricity_monitoring`, `document_application`, `execution_report`, `self_monitoring`, `general_guidelines`, `classification_Guidelines`, `administrative_law_enforcement`, `environmental_credit_evaluation`, `media_exposure`, `complaints_report`, `enterprise_emissions`, `vehicle_transportation`, `created_by`, `created_time`, `updated_by`, `updated_time`) VALUES 
('sj23ghj324g432', '测试企业', 'ESB73461282311', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '张三', '2024-07-31 14:26:06', '张三', '2024-07-31 14:26:06'),
('sj23ghj324g433', '测试企业1', 'ESB73461282313', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '张三', '2024-07-31 14:26:09', '张三', '2024-07-31 14:26:09');

这里了可以看到除了指定数据库的 **base_db.**语句,其他的都是一模一样,可见,在插入语句的语法中,MySQL和SQLite差别不大。

修改语法

在MySQL中,修改一个数据的语法为:

UPDATE ee_enterprise_info_integrity SET vehicle_violation_monitoring = '1' WHERE id = 'sj23ghj324g432'

将语法复制到SQLite中可以直接运行。
表示一般的修改语句,两个数据库是可以兼容的。

删除语法

在MySQL中,删除语句一般为

DELETE FROM `ee_enterprise_info_integrity` WHERE id = 'sj23ghj324g432';

将语法复制到SQLite中可以直接运行,
表示一般的删除语句,两个数据库是可以兼容的。

查询语句

在MySQL中,基本查询方式为:

SELECT * FROM `ee_enterprise_info_integrity` WHERE id = 'sj23ghj324g4321' AND social_credit_code IN ("ESB73461282311") AND created_time > '2024-07-30 14:26:09' OR automatic_monitoring = "1"

但这个查询语句在SQLite中就需要改变为:

SELECT * FROM `ee_enterprise_info_integrity` WHERE id = 'sj23ghj324g432' AND social_credit_code IN ('ESB73461282311') AND created_time > '2024-07-30 14:26:09' OR automatic_monitoring = '1'

可以看出两个数据库在关键字上的支持差别不大,只是有个 单引号和双引号 的区别,SQLite 不识别双引号,所有字符串查询,都需要统一使用单引号。

myBatisPlus集成及复杂查询

myBatisPlus集成

配置数据库连接及myBatisPlus:

# Sqlite
spring:datasource:url: jdbc:sqlite:D:\\work\\sqliteInstall\\mytestdb.db # 改为数据库路径driver-class-name: org.sqlite.JDBC# MyBatis-Plus
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志打印

除了数据源设置不一样以外,其他的包括实体类,mapper,service等都和MySQL一样。
经测试,所有功能包括 增删改查 都可以使用。

复杂查询

以下是连接查询及子查询测试:

SELECT * FROM ee_enterprise_info_integrity e LEFT JOIN draw_notice_table d ON e.automatic_monitoring = d.id;SELECT * FROM ee_enterprise_info_integrity e INNER JOIN draw_notice_table d ON e.automatic_monitoring = d.id;SELECT * FROM ee_enterprise_info_integrity WHERE automatic_monitoring IN (SELECT id FROM draw_notice_table WHERE id = 1
);

都可以正常执行。

相关文章:

  • 控制理论与应用Latex模版/中文Latex
  • 教你如何创建Maven项目
  • 基于uniapp 实现画板签字
  • (EtherCAT 转 EtherNet/IP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • day26 学习笔记
  • 关于vxe-select得filter-method 自定义方法得使用,忽略大小写匹配
  • 【LLM】Llama-Index 架构
  • 【三维重建与生成】GenFusion:SVD统一重建和生成
  • Java版本对应关系表
  • 如何使用ChatGPT撰写短视频爆款文案
  • ping 命令的用途与功能
  • 【刷题2025】高级数据结构(并查集+优先队列+图论)
  • <uniapp><websocket><http>基于uniapp,手机客户端通过websocket进行数据通讯(二维码扫码数据)
  • 【Axure视频教程】标准金额格式转换
  • ArrayList 与顺序表:Java 线性表深度解析
  • 【JAVAFX】自定义FXML 文件存放的位置以及使用
  • 第三天 组件系统
  • OpenAI发布GPT-4.1系列模型,近屿智能助力AI人才成长#OpenAI
  • Elasticsearch:AI 助理 - 从通才到专才
  • PDF处理控件Aspose.PDF指南:使用 C# 从 PDF 文档中删除页面
  • 学有质量、查有力度、改有成效,广大党员干部落实中央八项规定精神
  • 赵乐际主持十四届全国人大常委会第十五次会议闭幕会并作讲话
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • 举牌超200轮!中铁建7.76亿元竞得北京通州梨园宅地
  • 西夏文残碑等文物来沪,见证一段神秘灿烂的历史