您的位置:

全方位指南:sqlite3命令的使用和优化

一、sqlite3 简介

SQLite是一种嵌入式关系型数据库管理系统(RDBMS),被广泛用于移动设备和嵌入式系统中。SQLite原址为:https://www.sqlite.org。SQLite采用C语言编写,通常使用sqlite3命令进行交互。

二、基础命令

1、打开数据库

sqlite3 filename

filename是指数据库文件的名称,如无则在当前目录新建一个文件名为filename的数据库文件。如果文件已存在,则打开已存在的数据库。

2、创建表格

CREATE TABLE table_name(
    column1 datatype contraint,
    column2 datatype contraint,
    ...
    columnN datatype contraint);

其中,table_name是你要创建的表格的名称;columnX是你要创建的表格中的列的名称;datatype是列的数据类型,如INTEGER、TEXT、BLOB、REAL等; contraint用于约束对该列的限制,如NOT NULL(不允许为空)、UNIQUE(唯一约束)、PRIMARY KEY(主键)等。

3、插入数据

INSERT INTO table_name(column1, column2, column3,...columnN)
VALUES(value1, value2, value3,...valueN);

其中,table_name是你要插入数据的表格的名称;columnX是你要插入数据的表格中的列的名称;valueX是你要插入的值。

4、查询数据

SELECT column1, column2,...columnN 
FROM table_name
[WHERE CONDITION];

其中,table_name是你要查询数据的表格的名称;columnX是你要查询数据的表格中的列的名称;CONDITION是查询条件,如WHERE columnX=valueX。

5、修改数据

 UPDATE table_name
SET column_name = new_value
[WHERE CONDITION];

其中,table_name是你要修改数据的表格的名称;column_name是你要修改的数据列的名称;new_value是你要修改为的数据值;CONDITION是修改条件,如WHERE columnX=valueX。

6、删除数据

DELETE FROM table_name
[WHERE CONDITION];

其中,table_name是你要删除数据的表格的名称;CONDITION是删除条件。

三、高级使用

1、索引的创建和使用

CREATE INDEX index_name ON table_name (column1, column2,...columnN);

其中,index_name为自定义索引名;table_name为需要创建索引的表名;column1, column2,...columnN 为需要创建索引的列名。索引是将表中某些列的值存储在另外一起数据结构中,此数据结构称为索引表。索引表中的数据与表中的数据相同,只是多一个列指向对应行的地址。这样在查询该表数据时,可以先通过索引表找到对应的所有地址,从而降低查询的时间。

2、事务的使用

事务是针对一组操作的操作序列,它们可以全部成功,也可以全部失败。使用事务可以确保操作的原子性,即保证在该操作被提交后,要么全部执行成功,要么全部回滚。SQLite支持隐式事务提交和显式事务提交两种方式。

 BEGIN;  // 开始事务
UPDATE table_name SET column_name = new_value WHERE CONDITION;
DELETE FROM table_name WHERE CONDITION;
COMMIT;  // 提交事务

其中,BEGIN表示开始一笔事务,COMMIT表示提交这笔事务。如果需要回滚当前的事务,则需要使用ROLLBACK命令。

3、模糊查询和正则表达式的使用

SQLite提供模糊查询的LIKE和GLOB操作符,以及使用正则表达式进行查询的REGEXP操作符。

SELECT column1, column2,...columnN 
FROM table_name
WHERE columnX LIKE '%value%';
SELECT column1, column2,...columnN 
FROM table_name
WHERE columnX GLOB '*value*';
SELECT column1, column2,...columnN 
FROM table_name
WHERE columnX REGEXP 'value';

四、优化

1、建立合适的索引。合适的索引可以极大的提高查询效率,但是过多的索引会减低数据插入、更新、删除的速度。

2、减少重复列。SQLite中,每个列在每个表中只会存在一个数据类型。如果需要在多个表中使用同一个列,那么应该将这个列单独剥离出来,然后建立外键关系。

3、使用预处理语句。SQLite中,预处理语句可以把SQL查询语句分解成两部分,提高了执行效率,避免了SQL注入等安全问题。

sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);

4、合理使用内存。SQLite默认缓存大小为2KB,如果需要修改缓存大小,则可以使用PRAGMA命令进行修改。

PRAGMA cache_size = 64000;

5、使用WAL模式。WAL是一种SQLite3提供的日志模式,可以大幅度提升插入和更新操作的性能。

PRAGMA journal_mode = WAL;

五、总结

本文对SQLite3命令的基础使用和优化进行了详细的阐述,从而使读者在使用和优化SQLite,提高数据查询效率和安全性方面可以有所启发。