SQLite 入門(mén)教程
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
SQLite 是一個(gè)用 C 語(yǔ)言編寫(xiě)的開(kāi)源、輕量級(jí)、快速、獨(dú)立且高可靠性的 SQL 數(shù)據(jù)庫(kù)引擎,它提供了功能齊全的數(shù)據(jù)庫(kù)解決方案。SQLite 幾乎可以在所有的手機(jī)和計(jì)算機(jī)上運(yùn)行,它被嵌入到無(wú)數(shù)人每天都在使用的眾多應(yīng)用程序中。 此外,SQLite 還具有穩(wěn)定的文件格式、跨平臺(tái)能力和向后兼容性等特點(diǎn)。SQLite 的開(kāi)發(fā)者承諾,至少在 2050 年之前保持該文件格式不變。 本文將介紹 SQLite 的基礎(chǔ)知識(shí)和使用方法。 SQLite 安裝在 SQLite 官方頁(yè)面(https://sqlite.org/download.html) 下載適合你目標(biāo)系統(tǒng)的壓縮包。 下載并解壓后,無(wú)論是在 Windows、Linux 還是 Mac OS 系統(tǒng)上,你都可以得到一個(gè) 以下是在 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 使用場(chǎng)景SQLite 與客戶(hù)端/服務(wù)器類(lèi)型的 SQL 數(shù)據(jù)庫(kù)引擎(例如 MySQL、Oracle、PostgreSQL 或 SQL Server)不同,它們解決的問(wèn)題也不同。 服務(wù)器端的 SQL 數(shù)據(jù)庫(kù)引擎旨在實(shí)現(xiàn)企業(yè)級(jí)數(shù)據(jù)的共享存儲(chǔ),它們強(qiáng)調(diào)的是可擴(kuò)展性、并發(fā)性、集中化和控制性。相比之下,SQLite 通常用于為個(gè)人應(yīng)用程序和設(shè)備提供本地?cái)?shù)據(jù)存儲(chǔ),它強(qiáng)調(diào)的是經(jīng)濟(jì)、高效、可靠、獨(dú)立和簡(jiǎn)單。 SQLite 的使用場(chǎng)景:
SQLite 不適合的場(chǎng)景包括:
SQLite3 命令操作SQLite 提供了 直接在命令提示符下執(zhí)行 部分命令列表如下: 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 庫(kù)來(lái)執(zhí)行,SQL 語(yǔ)句都要以分號(hào) 在 sqlite3 中,SQL 語(yǔ)句需以分號(hào) SQLite 新建數(shù)據(jù)庫(kù)直接執(zhí)行 示例:打開(kāi)或創(chuàng)建名為 $ sqlite3 my_sqlite.dbSQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints.sqlite> 也可以首先創(chuàng)建一個(gè)空白文件,然后使用 $ 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 查看當(dāng)前數(shù)據(jù)庫(kù)使用點(diǎn)命令 sqlite> .databases main: /Users/darcy/develop/sqlite-tools-osx-x86-3420000/my_sqlite.db r/w sqlite> SQLite 增刪改查SQLite 幾乎完全兼容常見(jiàn)的 SQL 語(yǔ)句規(guī)范,因此可以直接編寫(xiě)和執(zhí)行標(biāo)準(zhǔn)的 SQL 語(yǔ)句。 創(chuàng)建表: sqlite> create table user(name text,age int); sqlite> 插入數(shù)據(jù): sqlite> insert into user values('aLang',20); sqlite> insert into user values('Darcy',30); sqlite> insert into user values('XiaoMing',40); 查詢(xún)數(shù)據(jù): sqlite> select * from user; aLang|20Darcy|30XiaoMing|40 添加索引,為 user 表的 name 創(chuàng)建名為 user_name 的索引: sqlite> create index user_name on user(name); SQLite 更改輸出格式在查詢(xún)數(shù)據(jù)時(shí),SQLite 默認(rèn)使用 以下是可用的輸出格式: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> 查詢(xún) Schemasqlite3 工具提供了幾個(gè)方便的命令,可用于查看數(shù)據(jù)庫(kù)的 schema ,這些命令純粹作為快捷方式提供。 例如, sqlite> .tableuser 點(diǎn)命令 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); 結(jié)果寫(xiě)出到文件使用 下面是一個(gè)示例,先使用 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}] **寫(xiě)出并打開(kāi) EXCEL ** 使用 sqlite> .excel sqlite> select * from sqlite_schema; 結(jié)果寫(xiě)出到文件 sqlite> .output sql_result.txt sqlite> select * from sqlite_schema; sqlite> select * from user; 讀取運(yùn)行 SQL 腳本使用 創(chuàng)建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 備份與恢復(fù)在涉及數(shù)據(jù)庫(kù)操作時(shí),備份和恢復(fù)是至關(guān)重要的步驟,它們用于防止數(shù)據(jù)丟失并確保數(shù)據(jù)的持續(xù)性。SQLite 提供了簡(jiǎn)單的方法來(lái)備份和恢復(fù)你的數(shù)據(jù)庫(kù)。 在 SQLite 中可以通過(guò)導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)為一個(gè) SQL 腳本來(lái)備份數(shù)據(jù)庫(kù)。此功能使用 $ ./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; 這將導(dǎo)出整個(gè) 示例:恢復(fù)數(shù)據(jù)到庫(kù) $ ./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 這將執(zhí)行 SQLite 可視化工具命令行操作總歸不太直觀(guān),如果你喜歡可視化操作,可以下載 SQLite Database Browser 進(jìn)行操作。 下載頁(yè)面:https://sqlitebrowser.org/dl/ 附錄SQLite 常用函數(shù)列表,見(jiàn)名知意不寫(xiě)注釋了。
參考
一如既往,文章中代碼存放在 Github.com/niumoo/javaNotes. 本文作者:程序猿阿朗,轉(zhuǎn)自https://www.cnblogs.com/niumoo/p/18028632 該文章在 2024/2/24 16:12:47 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |