SQLite 入门教程
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
SQLite 是一个用 C 语言编写的开源、轻量级、快速、独立且高可靠性的 SQL 数据库引擎,它提供了功能齐全的数据库解决方案。SQLite 几乎可以在所有的手机和计算机上运行,它被嵌入到无数人每天都在使用的众多应用程序中。 此外,SQLite 还具有稳定的文件格式、跨平台能力和向后兼容性等特点。SQLite 的开发者承诺,至少在 2050 年之前保持该文件格式不变。 本文将介绍 SQLite 的基础知识和使用方法。 SQLite 安装在 SQLite 官方页面(https://sqlite.org/download.html) 下载适合你目标系统的压缩包。 下载并解压后,无论是在 Windows、Linux 还是 Mac OS 系统上,你都可以得到一个 以下是在 Mac OS 上解压后得到的命令行工具示例: ➜ sqlite-tools-osx-x64-3450100 ls -l total 14952 -rwxr-xr-x@ 1 darcy staff 1907136 1 31 00:27 sqldiff -rwxr-xr-x@ 1 darcy staff 2263792 1 31 00:25 sqlite3 -rwxr-xr-x@ 1 darcy staff 3478872 1 31 00:27 sqlite3_analyzer SQLite 使用场景SQLite 与客户端/服务器类型的 SQL 数据库引擎(例如 MySQL、Oracle、PostgreSQL 或 SQL Server)不同,它们解决的问题也不同。 服务器端的 SQL 数据库引擎旨在实现企业级数据的共享存储,它们强调的是可扩展性、并发性、集中化和控制性。相比之下,SQLite 通常用于为个人应用程序和设备提供本地数据存储,它强调的是经济、高效、可靠、独立和简单。 SQLite 的使用场景:
SQLite 不适合的场景包括:
SQLite3 命令操作SQLite 提供了 直接在命令提示符下执行 部分命令列表如下: sqlite> .help.databases List names and files of attached databases .dbconfig ?op? ?val? List or change sqlite3_db_config() options .dbinfo ?DB? Show status information about the database .excel Display the output of next command in spreadsheet .exit ?CODE? Exit this program with return-code CODE .expert EXPERIMENTAL. Suggest indexes for queries .explain ?on|off|auto? Change the EXPLAIN formatting mode. Default: auto .help ?-all? ?PATTERN? Show help text for PATTERN .hex-rekey OLD NEW NEW Change the encryption key using hexadecimal .indexes ?TABLE? Show names of indexes .mode MODE ?OPTIONS? Set output mode .open ?OPTIONS? ?FILE? Close existing database and reopen FILE .output ?FILE? Send output to FILE or stdout if FILE is omitted .quit Exit this program .read FILE Read input from FILE or command output .schema ?PATTERN? Show the CREATE statements matching PATTERN .show Show the current values for various settings .tables ?TABLE? List names of tables matching LIKE pattern TABLE ....... sqlite3 只是读取输入行信息,然后传递给 SQLite 库来执行,SQL 语句都要以分号 在 sqlite3 中,SQL 语句需以分号 SQLite 新建数据库直接执行 示例:打开或创建名为 $ sqlite3 my_sqlite.dbSQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints.sqlite> 也可以首先创建一个空白文件,然后使用 $ touch test.db $ sqlite3 test.db SQLite version 3.39.5 2022-10-14 20:58:05Enter ".help" for usage hints. sqlite> create table user(name text,age int); sqlite> .tablesusersqlite> SQLite 查看当前数据库使用点命令 sqlite> .databases main: /Users/darcy/develop/sqlite-tools-osx-x86-3420000/my_sqlite.db r/w sqlite> SQLite 增删改查SQLite 几乎完全兼容常见的 SQL 语句规范,因此可以直接编写和执行标准的 SQL 语句。 创建表: sqlite> create table user(name text,age int); sqlite> 插入数据: sqlite> insert into user values('aLang',20); sqlite> insert into user values('Darcy',30); sqlite> insert into user values('XiaoMing',40); 查询数据: sqlite> select * from user; aLang|20Darcy|30XiaoMing|40 添加索引,为 user 表的 name 创建名为 user_name 的索引: sqlite> create index user_name on user(name); SQLite 更改输出格式在查询数据时,SQLite 默认使用 以下是可用的输出格式:ascii、box、csv、column、html、insert、json、line、list、markdown、quote、table。 可以使用 Box 格式: sqlite> .mode box sqlite> select * from user; ┌──────────┬─────┐ │ name │ age │ ├──────────┼─────┤ │ aLang │ 20 │ │ Darcy │ 30 │ │ XiaoMing │ 40 │ └──────────┴─────┘ json 格式: sqlite> .mode json sqlite> select * from user; [{"name":"aLang","age":20}, {"name":"Darcy","age":30}, {"name":"XiaoMing","age":40}] column 格式: sqlite> .mode columnsqlite> select * from user; name age-------- ---aLang 20Darcy 30XiaoMing 40 table 格式: sqlite> .mode tablesqlite> select * from user;+----------+-----+| name | age |+----------+-----+| aLang | 20 || Darcy | 30 || XiaoMing | 40 |+----------+-----+sqlite> 查询 Schemasqlite3 工具提供了几个方便的命令,可用于查看数据库的 schema ,这些命令纯粹作为快捷方式提供。 例如, sqlite> .tableuser 点命令 sqlite> SELECT name FROM sqlite_schema ...> WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ...> ;user
sqlite> .mode tablesqlite> select * from sqlite_schema;+-------+-----------+----------+----------+--------------------------------------+| type | name | tbl_name | rootpage | sql |+-------+-----------+----------+----------+--------------------------------------+| table | user | user | 2 | CREATE TABLE user(name text,age int) || index | user_name | user | 3 | CREATE INDEX user_name on user(name) |+-------+-----------+----------+----------+--------------------------------------+ 使用 sqlite> .indexes user_name sqlite> .schemaCREATE TABLE user(name text,age int);CREATE INDEX user_name on user(name); 结果写出到文件使用 下面是一个示例,先使用 sqlite> .output sql_result.json sqlite> .mode json sqlite> select * from user; sqlite> .exit $ cat sql_result.json [{"name":"aLang","age":20}, {"name":"Darcy","age":30}, {"name":"XiaoMing","age":40}] **写出并打开 EXCEL ** 使用 sqlite> .excel sqlite> select * from sqlite_schema; 结果写出到文件 sqlite> .output sql_result.txt sqlite> select * from sqlite_schema; sqlite> select * from user; 读取运行 SQL 脚本使用 创建SQL文件: $ echo "select * from user" > sql_query.sql$ cat sql_query.sqlselect * from user$ ./sqlite3 my_sqlite.dbSQLite version 3.42.0 2023-05-16 12:36:15 Enter ".help" for usage hints.sqlite> .mode tablesqlite> .read sql_query.sql+----------+-----+ | name | age | +----------+-----+ | aLang | 20 | | Darcy | 30 | | XiaoMing | 40 | +----------+-----+sqlite> SQLite 备份与恢复在涉及数据库操作时,备份和恢复是至关重要的步骤,它们用于防止数据丢失并确保数据的持续性。SQLite 提供了简单的方法来备份和恢复你的数据库。 在 SQLite 中可以通过导出整个数据库为一个 SQL 脚本来备份数据库。此功能使用 $ ./sqlite3 my_sqlite.db SQLite version 3.42.0 2023-05-16 12:36:15Enter ".help" for usage hints. sqlite> .output backup.sql sqlite> .dump sqlite> .exit $ cat backup.sql PRAGMA foreign_keys=OFF;BEGIN TRANSACTION;CREATE TABLE user(name text,age int);INSERT INTO user VALUES('aLang',20);INSERT INTO user VALUES('Darcy',30);INSERT INTO user VALUES('XiaoMing',40);CREATE INDEX user_name on user(name);COMMIT; 这将导出整个 示例:恢复数据到库 $ ./sqlite3 my_sqlite_2.db SQLite version 3.42.0 2023-05-16 12:36:15Enter ".help" for usage hints. sqlite> .read backup.sql sqlite> select * from user; aLang|20Darcy|30XiaoMing|40 这将执行 SQLite 可视化工具命令行操作总归不太直观,如果你喜欢可视化操作,可以下载 SQLite Database Browser 进行操作。 下载页面:https://sqlitebrowser.org/dl/ 附录SQLite 常用函数列表,见名知意不写注释了。
参考
一如既往,文章中代码存放在 Github.com/niumoo/javaNotes. 本文作者:程序猿阿朗,转自https://www.cnblogs.com/niumoo/p/18028632 该文章在 2024/2/24 16:12:47 编辑过 |
关键字查询
相关文章
正在查询... |