狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQLite 入門教程

freeflydom
2024年2月24日 16:12 本文熱度 1387

不是 MySQL 用不起,而是 SQLite 更有性價比,絕大多數(shù)的 Web 應(yīng)用 SQLite 都可以滿足。

SQLite 是一個用 C 語言編寫的開源、輕量級、快速、獨立且高可靠性的 SQL 數(shù)據(jù)庫引擎,它提供了功能齊全的數(shù)據(jù)庫解決方案。SQLite 幾乎可以在所有的手機(jī)和計算機(jī)上運行,它被嵌入到無數(shù)人每天都在使用的眾多應(yīng)用程序中。

此外,SQLite 還具有穩(wěn)定的文件格式、跨平臺能力和向后兼容性等特點。SQLite 的開發(fā)者承諾,至少在 2050 年之前保持該文件格式不變。

本文將介紹 SQLite 的基礎(chǔ)知識和使用方法。

SQLite 安裝

在 SQLite 官方頁面(https://sqlite.org/download.html) 下載適合你目標(biāo)系統(tǒng)的壓縮包。

下載并解壓后,無論是在 Windows、Linux 還是 Mac OS 系統(tǒng)上,你都可以得到一個 sqlite3 命令行工具。

以下是在 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 與客戶端/服務(wù)器類型的 SQL 數(shù)據(jù)庫引擎(例如 MySQL、Oracle、PostgreSQL 或 SQL Server)不同,它們解決的問題也不同。

服務(wù)器端的 SQL 數(shù)據(jù)庫引擎旨在實現(xiàn)企業(yè)級數(shù)據(jù)的共享存儲,它們強(qiáng)調(diào)的是可擴(kuò)展性、并發(fā)性、集中化和控制性。相比之下,SQLite 通常用于為個人應(yīng)用程序和設(shè)備提供本地數(shù)據(jù)存儲,它強(qiáng)調(diào)的是經(jīng)濟(jì)、高效、可靠、獨立和簡單

SQLite 的使用場景:

  1. 嵌入式設(shè)備和物聯(lián)網(wǎng)

    SQLite 不需要額外的管理或服務(wù)啟動,非常適合用在手機(jī)、電視、機(jī)頂盒、游戲機(jī)、相機(jī)、手表等智能設(shè)備上。

  2. 網(wǎng)站

    多數(shù)低流量網(wǎng)站可以使用 SQLite 作為數(shù)據(jù)庫。根據(jù)官方網(wǎng)站的介紹,通常每天訪問量少于 10 萬次的網(wǎng)站都可以很好地運行 SQLite。SQLite 的官方網(wǎng)站(https://www.sqlite.org/)自身就使用 SQLite 作為數(shù)據(jù)庫引擎,每天處理大約 50 萬 HTTP 請求,其中約 15-20% 的請求涉及數(shù)據(jù)庫查詢

  3. 數(shù)據(jù)分析

    SQLite3 命令行工具能方便地與 CSV 和 Excel 文件進(jìn)行交互操作,適合分析大數(shù)據(jù)集。同時,許多語言(如 Python)都內(nèi)置了 SQLite 支持,可以輕松編寫腳本進(jìn)行數(shù)據(jù)操作。

  4. 緩存

    SQLite 可以作為應(yīng)用服務(wù)的緩存,減輕對中心數(shù)據(jù)庫的壓力。

  5. 內(nèi)存或者臨時數(shù)據(jù)庫

    得益于 SQLite 的簡單快速,非常使用程序演示或者日常測試。

SQLite 不適合的場景包括

  1. 需要通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫的情況。SQLite 是一個本地文件數(shù)據(jù)庫,沒有提供遠(yuǎn)程訪問功能。

  2. 要求高可用性和可擴(kuò)展性的場合。SQLite 簡單易用,但不可擴(kuò)展。

  3. 數(shù)據(jù)量極大時。盡管 SQLite 數(shù)據(jù)庫大小的限制高達(dá) 281 TB,但所有數(shù)據(jù)都必須存儲在單個磁盤上。

  4. 寫入操作高并發(fā)時。SQLite 在任何時刻只允許一個寫入操作執(zhí)行,其他寫入操作需要排隊。

SQLite3 命令操作

SQLite 提供了 sqlite3(在windows 為 sqlite3.exe)命令行工具,通過該工具可以執(zhí)行 SQLite 數(shù)據(jù)庫操作和 SQL 語句。

直接在命令提示符下執(zhí)行 ./sqlite3 啟動 sqlite3 程序,然后可以通過輸入 .help 查看幫助指南,或者輸入 .help 關(guān)鍵詞 獲取特定關(guān)鍵詞的幫助信息。

部分命令列表如下:

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 庫來執(zhí)行,SQL 語句都要以分號 ; 結(jié)尾才會開始執(zhí)行,因此你可以自由的分行輸入。

在 sqlite3 中,SQL 語句需以分號 ; 結(jié)尾才會執(zhí)行,允許跨行輸入。特殊的點命令(如 .help 和 .tables)以小數(shù)點 . 開頭,不需要分號

SQLite 新建數(shù)據(jù)庫

直接執(zhí)行 sqlite3 filename 打開或創(chuàng)建一個 SQLite 數(shù)據(jù)庫。如果文件不存在,SQLite 會自動創(chuàng)建它。

示例:打開或創(chuàng)建名為 my_sqlite.db 的 SQLite 數(shù)據(jù)庫文件。

$ sqlite3 my_sqlite.dbSQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.sqlite>

也可以首先創(chuàng)建一個空白文件,然后使用 sqlite3 命令打開它。接下來使用 CREATE TABLE 命令創(chuàng)建一個名為 user 的表,用 .tables 命令查看現(xiàn)有表格,使用 .exit 退出 sqlite3 工具。

$ 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ù)庫

使用點命令 .databases 查看當(dāng)前打開的數(shù)據(jù)庫。

sqlite> .databases
main: /Users/darcy/develop/sqlite-tools-osx-x86-3420000/my_sqlite.db r/w
sqlite>

SQLite 增刪改查

SQLite 幾乎完全兼容常見的 SQL 語句規(guī)范,因此可以直接編寫和執(zhí)行標(biāo)準(zhǔn)的 SQL 語句。

創(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);

查詢數(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 更改輸出格式

在查詢數(shù)據(jù)時,SQLite 默認(rèn)使用 | 分割每列數(shù)據(jù),這可能不便于閱讀。實際上,sqlite3 工具支持多種輸出格式,默認(rèn)為 list 模式。

以下是可用的輸出格式:ascii、box、csv、column、html、insert、json、line、list、markdown、quote、table

可以使用 .mode 命令更改輸出格式。

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>

查詢 Schema

sqlite3 工具提供了幾個方便的命令,可用于查看數(shù)據(jù)庫的 schema ,這些命令純粹作為快捷方式提供。

例如,.table 查看數(shù)據(jù)庫中的所有表:

sqlite> .tableuser

點命令 .table 相當(dāng)于下面的查詢語句。

sqlite> SELECT name FROM sqlite_schema
   ...> WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
   ...> ;user

sqlite_master 是 SQLite 中的一個特殊表,其中包含了數(shù)據(jù)庫的 schema 信息。你可以查詢這個表以獲取表的創(chuàng)建語句和索引信息。

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) |+-------+-----------+----------+----------+--------------------------------------+

使用 .indexes 查看索引,使用 .schema 查看 schema 詳情。

sqlite> .indexes
user_name
sqlite> .schemaCREATE TABLE user(name text,age int);CREATE INDEX user_name on user(name);

結(jié)果寫出到文件

使用 .output filename 命令將查詢結(jié)果寫入指定文件。

下面是一個示例,先使用 .mode json 更改輸出為 JSON 格式,然后在查詢表寫出到 sql_result.json

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 **

使用 .excel 會讓下一個查詢語句輸出到 Excel 中。

sqlite> .excel
sqlite> select * from sqlite_schema;

結(jié)果寫出到文件

sqlite> .output sql_result.txt
sqlite> select * from sqlite_schema;
sqlite> select * from user;

讀取運行 SQL 腳本

使用 .read 可以讀取指定文件中的 SQL 語句并運行,這在需要批量執(zhí)行 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ù)庫操作時,備份和恢復(fù)是至關(guān)重要的步驟,它們用于防止數(shù)據(jù)丟失并確保數(shù)據(jù)的持續(xù)性。SQLite 提供了簡單的方法來備份和恢復(fù)你的數(shù)據(jù)庫。

在 SQLite 中可以通過導(dǎo)出整個數(shù)據(jù)庫為一個 SQL 腳本來備份數(shù)據(jù)庫。此功能使用 .dump 命令實現(xiàn)。

$ ./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)出整個 my_sqlite.db 數(shù)據(jù)庫到 backup.sql 文件中。此 SQL 文件包含了重建數(shù)據(jù)庫所需的所有 SQL 語句。要恢復(fù)數(shù)據(jù)庫,只需在 sqlite3 中運行這個腳本。

示例:恢復(fù)數(shù)據(jù)到庫 my_sqlite_2 中。

$ ./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í)行 backup.sql 文件中的所有 SQL 語句,重建數(shù)據(jù)庫。通過以上的備份與恢復(fù)方法,你可以確保你的 SQLite 數(shù)據(jù)庫資料得到可靠的保護(hù),且在需要時能夠迅速恢復(fù)。

SQLite 可視化工具

命令行操作總歸不太直觀,如果你喜歡可視化操作,可以下載 SQLite Database Browser 進(jìn)行操作。

下載頁面:https://sqlitebrowser.org/dl/

附錄

SQLite 常用函數(shù)列表,見名知意不寫注釋了。

Function 1Function 2Function 3Function 4
abs(X)changes()char(X1,X2,...,XN)coalesce(X,Y,...)
concat(X,...)concat_ws(SEP,X,...)format(FORMAT,...)glob(X,Y)
hex(X)ifnull(X,Y)iif(X,Y,Z)instr(X,Y)
last_insert_rowid()length(X)like(X,Y)like(X,Y,Z)
likelihood(X,Y)likely(X)load_extension(X)load_extension(X,Y)
lower(X)ltrim(X)ltrim(X,Y)max(X,Y,...)
min(X,Y,...)nullif(X,Y)octet_length(X)printf(FORMAT,...)
quote(X)random()randomblob(N)replace(X,Y,Z)
round(X)round(X,Y)rtrim(X)rtrim(X,Y)
sign(X)soundex(X)sqlite_compileoption_get(N)sqlite_compileoption_used(X)
sqlite_offset(X)sqlite_source_id()sqlite_version()substr(X,Y)
substr(X,Y,Z)substring(X,Y)substring(X,Y,Z)total_changes()
trim(X)trim(X,Y)

參考

  1. SQLite 開源代碼:https://www.sqlite.org/cgi/src/dir?ci=trunk

  2. SQLite 文件格式介紹:https://sqlite.org/fileformat2.html

  3. SQLite 可視化工具:https://sqlitebrowser.org/dl/

  4. SQL 函數(shù)文檔:https://www.sqlite.org/lang_corefunc.html

一如既往,文章中代碼存放在 Github.com/niumoo/javaNotes.


本文作者:程序猿阿朗,轉(zhuǎn)自https://www.cnblogs.com/niumoo/p/18028632


該文章在 2024/2/24 16:12:47 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved