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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |