sqlite入门

2 篇文章 0 订阅
1 篇文章 0 订阅
SQLite是一个轻量级的进程内数据库,无需配置和服务器。文章介绍了SQLite相对于MySQL的优势,如无需部署和配置,以及如何在SpringBoot项目中使用MyBatis-Plus进行集成,包括配置数据库URL、建表语句和数据插入。同时,文章提到了SQLite的一些限制,如不支持某些MySQL的特性,并提供了常用SQLite命令示例。
摘要由CSDN通过智能技术生成

是什么

SQLite是一个数据库,与常用mysql相比,sqlite是进程内的数据库,无需配置、无需服务器。

为什么要用

与mysql相比,sqlite有几个比较好的特点:

  1. 不需要单独部署,跟着程序启动初始化即可使用;

  1. 不需要配置,即不需要安装和管理;

  1. 单一文件存储在磁盘;

  1. 非常小,据说<=400KB;

  1. 支持多进程或线程安全访问,支持事务,完全兼容ACID;

  1. 等等。

之所以用它,对我来说,主要取决于前两点优势。

怎么用

以springboot+mybatis-plus+sqlite为例

项目结构:

建表语句:

-- ------------------ Table structure for user-- ---------
DROP TABLE IF EXISTS `user`;CREATE TABLE `user`(    `id`     INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,    `name`   CHAR(100) NOT NULL,    `sex`    tinyint(2)     DEFAULT NULL,    `address` VARCHAR(200)  DEFAULT NULL);

测试数据:

------------------------------ Records of user-- ------------------------
INSERT INTO `user` (`id`, `name`, `sex`, `address`) VALUES (1, '姓名1', 1, '测试地址1');INSERT INTO `user` (`id`, `name`, `sex`, `address`) VALUES (2, '姓名2', 2, '测试地址2');INSERT INTO `user` (`id`, `name`, `sex`, `address`) VALUES (3, '姓名3', 1, '测试地址3');

application.yml

server:  
    port: 80
spring:  
    datasource:    
        url: jdbc:sqlite:src/main/resources/db/user.db    
        driver-class-name: org.sqlite.JDBC    
        # username: 选用 sqlite 数据库不需要配置此项    
        # password: 选用 sqlite 数据库不需要配置此项    
        # DDL建表语句    
        schema: classpath:db/schema.sql    
        # DML添加数据    
        data: classpath:db/data.sql    
        initialization-mode: always    
        continue-on-error: true
mybatis-plus:  
    mapper-locations: classpath:mapper/*Mapper.xml  
    type-aliases-package: com.example.sqlite.model

启动测试:

访问:http://localhost/user?id=1

结构:{"id":1,"name":"姓名1","sex":1,"address":"测试地址1"}

闭坑:

  1. 配置数据库文件(user.db),分三种情况:

  1. 相对路径两种

  1. 放在resources文件夹下,spring.datasource.url=jdbc:sqlite::resource:db/user.db,据说只适合只读场景,不推荐使用。实测初始化语句确实不会执行。

  1. jdbc:sqlite:src/main/resources/db/user.db,相对根路径(src同级),可正常使用

  1. 绝对路径一种

  1. D:\IdeaProjects\springboot-sqlite\src\main\resources\db\user.db,绝对路径,可正常使用

  1. 与mysql几点区别:

  1. 建表

  1. 不支持comment注释

  1. 不支持charset

  1. 不支持collate

  1. 不支持索引(建表时不支持,支持DDL创建索引)

  1. TIMESTAMP支持DEFAULT CURRENT_TIMESTAMP,不支持ON UPDATE CURRENT_TIMESTAMP

  1. 支持主键自增,关键字不同(mysql:AUTO_INCREMENT ,sqlite:AUTOINCREMENT),且只能使用在 INTEGER类型的PRIMARY KEY上

常用命令:

  1. 创建数据库:

  1. sqlite3 db_test.db

  1. 查看数据路径

  1. .databases

  1. 创建数据表:

  1. create table employee (empid int ,deptid int ,salary decimal(10,2));

  1. 查看表

  1. .tables

  1. 查看建表语句

  1. .schema table_name

  1. 默认编码:utf8

  1. 查看当前编码:pragma encoding

  1. 修改编码:pragma encoding = UTF8/UTF16

  1. 插入数据:

  1. insert into employee values(1,10,5500.00);

  1. 查看索引

  1. 列出表上所有可用的索引.indices 或 .indexes table_name

  1. 退出编辑器

  1. .quit

参考文档:

https://m.runoob.com/sqlite/sqlite-intro.html

https://blog.csdn.net/java_t_t/article/details/125650096

https://www.cnblogs.com/cphovo/p/16373934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值