SQLite 数据库

SQLite 是一个软件库,是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。

SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。

SQLite 嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。

嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。

SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要占用内存,但其它开销很小,适合用于嵌入式设备,你需要做的仅仅是把它正确的编译到你的程序。

SQL OnLine IDE

SQLite 安装,SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理。

在 Windows 上安装 SQLite

  • 请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。

  • 您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win64-*.zip 压缩文件。

  • 创建文件夹 D:\360安全浏览器下载\SQLite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 等其它文件。

  • 添加 D:\360安全浏览器下载\SQLite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果。

D:\360安全浏览器下载\SQLite>sqlite3 testDB.db .dump > testDB.sql

D:\360安全浏览器下载\SQLite>sqlite3
SQLite version 3.41.0 2023-02-21 18:09:37
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open testDB.db
sqlite> .databases
main: D:\360安全浏览器下载\SQLite\testDB.db r/w
sqlite> .tables

SQLite创建数据库

SQLite使用起来非常方便,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。

可以使用 .open 来创建新的数据库文件:sqlite> .open testDB.db

上面的命令创建了数据库文件 testDB.db,位于 sqlite3 命令同一目录下。

打开已存在数据库也是用 .open 命令,以上命令如果 testDB.db 存在则直接会打开,不存在就创建它。

然后sqlite3程序将提示你输入SQL语句。敲入SQL语句以分号“;”结束,敲回车键之后,SQL语句就会执行。

CREATE TABLE User (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Age INT NOT NULL,
CreationDate TEXT NOT NULL,
UserWeight REAL NULL,
CreationTime TEXT NOT NULL
);

--INSERT INTO User VALUES (1, '张三', 20, '2023-02-10', 46.5,'2023-02-10 16:47:44.017');
--INSERT INTO User VALUES (NULL,'李四', 22, '2023-02-10', NULL,'2023-02-10 16:47:44.017');
--SELECT * from User;

--创建或打开已存在数据库(数据库文件testDB.db位于sqlite3命令同一目录下)
sqlite>.open testDB.db
--显示数据库
sqlite>.databases
--创建表
sqlite>CREATE TABLE 表名 (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Age INT NOT NULL,CreationDate TEXT NOT NULL, UserWeight REAL NULL, CreationTime TEXT NOT NULL);
--查看当前db文件中的表
sqlite>.tables
--删除表
sqlite>drop table 表名;
--得到表的完整信息
sqlite>.schema 表名
--附加数据库
sqlite>ATTACH DATABASE 'testDB.db' as 'TEST';
--分离数据库
sqlite>DETACH DATABASE 'TEST';
--备份数据库main
sqlite>.backup main .testDB.sql
sqlite>.backup .testDB.sql(备份默认数据库main)
--导出导入数据库(方式一:dos命令行)
sqlite3 testDB.db .dump > testDB.sql
sqlite3 testDB.db < testDB.sql
--导出导入数据库(方式二:sqlite数据库内部)
sqlite>.output testDB.sql
sqlite>.dump
sqlite>.output stdout
--导出表(sqlite数据库内部)
sqlite>.separator "##" (设置导出数据列之间的分割符)
sqlite>.output user.sql (1.新建导出数据的文件txt或sql格式)
sqlite>.dump user (2.导出表数据)
sqlite>.output stdout (3.关闭导出文件锁定状态)
--导入来自 FILE 文件的数据到 TABLE 表中
sqlite>.import FILE TABLE
--退出 SQLite 提示符
sqlite>.quit


当SQLite数据库中包含自增列(AUTOINCREMENT)时,会自动建立一个名为 sqlite_sequence 的表。
这个表包含两个列:name和seq。name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当前序号加1)。
如果想把某个自增列的序号归零,只需要修改 sqlite_sequence表就可以了:
UPDATE sqlite_sequence SET seq = 0 WHERE name='TableName';
也可以直接把该记录删掉:
DELETE FROM sqlite_sequence WHERE name='TableName';
要想将所有表的自增列都归零,直接清空sqlite_sequence表就可以了:
DELETE FROM sqlite_sequence;

 

posted @ 2023-03-04 22:08  以德为先  阅读(19)  评论(0)    收藏  举报