每天掌握一個Linux命令 - sqlite3

Linux 命令工具 sqlite3 使用指南

一、工具概述

sqlite3 是 SQLite 數據庫的命令行工具,用于在 Linux 系統中直接操作 SQLite 數據庫(輕量級、無服務器、嵌入式關系型數據庫)。
核心特點

  • 無需安裝數據庫服務,直接通過命令行操作 .db 文件。
  • 支持 SQL92 標準,語法簡潔,適合快速開發和小型項目。
  • 數據存儲在單一文件中,方便移植和備份。

二、安裝方式

1. 系統自帶(多數 Linux 發行版)

直接在終端輸入 sqlite3 命令,若提示版本信息則已安裝:

sqlite3 --version  # 輸出版本號(如 3.36.0)

2. 手動安裝(以 Ubuntu/Debian 為例)

sudo apt update
sudo apt install sqlite3  # 安裝命令行工具
sudo apt install libsqlite3-dev  # 安裝開發庫(可選,用于編譯程序)

3. 源碼編譯(適用于自定義版本)

wget https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release  # 下載源碼
tar -zxvf sqlite.tar.gz
cd sqlite
./configure
make && make install

三、核心功能

功能分類說明
數據庫操作創建/打開數據庫、刪除表、備份數據庫文件
數據操作增刪改查(CRUD)、事務管理、聚合函數計算
元數據查看顯示表結構、列出數據庫中的表和索引、查看 SQL 語句執行計劃
工具命令導出數據為 CSV/JSON、執行外部 SQL 文件、設置輸出格式(表格/列模式)

四、基礎用法

1. 連接/創建數據庫

sqlite3 demo.db  # 若文件不存在,創建新數據庫;存在則直接打開

退出數據庫

.exit  -- 或 .quit

2. 執行 SQL 語句

sqlite3 交互模式下直接輸入 SQL 命令(需以 ; 結尾):

-- 創建表
CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER,email TEXT UNIQUE
);-- 插入數據
INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');-- 查詢數據
SELECT * FROM users;

3. 常用元命令(以 . 開頭,無需 ; 結尾)

元命令作用
.tables列出所有表
.schema [表名]顯示表結構或指定表的建表語句
.headers on開啟查詢結果的列名顯示
.mode column設置結果格式為列模式(默認是列表)
.output data.csv將查詢結果輸出到文件(需配合 .mode

五、進階操作

1. 事務管理

BEGIN TRANSACTION;  -- 開始事務
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
UPDATE users SET age = 30 WHERE name = 'Bob';
COMMIT;  -- 提交事務(或 ROLLBACK; 回滾)

2. 數據導出與導入

導出為 CSV 文件
.mode csv
.output users.csv
SELECT * FROM users;
從 SQL 文件導入數據
sqlite3 demo.db < data.sql  # 執行 data.sql 中的 SQL 語句

3. 執行計劃分析

EXPLAIN QUERY PLAN SELECT * FROM users WHERE age > 25;  -- 查看查詢優化策略

4. 數據庫備份與恢復

# 備份數據庫文件(直接復制 .db 文件)
cp demo.db demo_backup.db# 恢復(覆蓋原文件,需確保數據庫未被占用)
cp demo_backup.db demo.db

六、實戰案例:學生成績管理系統

場景:管理學生、課程、成績數據

1. 創建數據庫和表結構
CREATE DATABASE school;  -- SQLite 無需顯式創建數據庫,直接操作文件即可
.open school.db  -- 打開數據庫文件CREATE TABLE students (sid INTEGER PRIMARY KEY,sname TEXT NOT NULL,age INTEGER,gender TEXT
);CREATE TABLE courses (cid INTEGER PRIMARY KEY,cname TEXT NOT NULL,credit INTEGER
);CREATE TABLE scores (sid INTEGER,cid INTEGER,score REAL,PRIMARY KEY (sid, cid),FOREIGN KEY (sid) REFERENCES students(sid),FOREIGN KEY (cid) REFERENCES courses(cid)
);
2. 插入測試數據
INSERT INTO students VALUES (1, 'Tom', 18, 'Male');
INSERT INTO courses VALUES (101, 'Math', 4);
INSERT INTO scores VALUES (1, 101, 85.5);
3. 查詢平均成績
.headers on
.mode column
SELECT s.sname, AVG(sc.score) AS avg_score
FROM students s
JOIN scores sc ON s.sid = sc.sid
GROUP BY s.sid;

七、注意事項

  1. 文件權限

    • 操作數據庫文件時需注意讀寫權限,避免因權限不足導致操作失敗(如 sqlite3 demo.db 時提示 Permission denied)。
  2. 事務安全

    • 高并發場景下需謹慎使用事務(SQLite 單文件模式在寫入時會鎖定數據庫,適合低并發場景)。
  3. 數據類型

    • SQLite 采用 弱類型(列不強制約束數據類型),但建議遵循表定義的類型規范,避免邏輯錯誤。
  4. 文件大小

    • 單個 SQLite 文件最大支持約 140 TB(受限于文件系統),但實際應用中建議用于中小規模數據。
  5. 版本兼容

    • 低版本 SQLite 可能不支持部分 SQL 語法(如窗口函數),建議升級到最新版本(當前最新版本可通過 sqlite3 --version 查看)。

通過以上內容,可快速掌握 sqlite3 命令行工具的核心用法,適用于開發調試、小型數據管理等場景。如需處理大規模數據或高并發場景,建議結合應用層邏輯或遷移至 PostgreSQL、MySQL 等數據庫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82675.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode:2160. 拆分數位后四位數字的最小和(python3解法,數學相關算法題)

難度&#xff1a;簡單 給你一個四位 正 整數 num 。請你使用 num 中的 數位 &#xff0c;將 num 拆成兩個新的整數 new1 和 new2 。new1 和 new2 中可以有 前導 0 &#xff0c;且 num 中 所有 數位都必須使用。 比方說&#xff0c;給你 num 2932 &#xff0c;你擁有的數位包括…

Python打卡第38天

浙大疏錦行 作業&#xff1a; 了解下cifar數據集&#xff0c;嘗試獲取其中一張圖片 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加載數據的工具 from torchvision im…

AI 數據采集實戰指南:基于 Bright Data 快速獲取招標訊息

AI 數據采集實戰指南&#xff1a;基于Bright Data快速獲取招標訊息 在招標行業中&#xff0c;快速、準確地獲取招標公告、項目詳情、投標截止日期和其他關鍵招標信息&#xff0c;是投標企業提高競標成功率的核心競爭力。然而&#xff0c;招標信息往往分散在不同的平臺和網頁&a…

TCP 三次握手,第一次握手報文丟失會發生什么?

文章目錄 RTO(Retransmission Timeout)注意 客戶端想與服務端建立 TCP 連接時&#xff0c;先發送 SYN 報文&#xff0c;在這之后&#xff0c;如果客戶端遲遲收不到服務端的 SYNACK 報文&#xff0c;就會觸發「超時重傳」機制&#xff0c;重新發送 SYN 報文&#xff0c;而且重傳…

【DeepSeek論文精讀】12. DeepSeek-Prover-V2: 通過強化學習實現子目標分解的形式化數學推理

歡迎關注[【AIGC論文精讀】](https://blog.csdn.net/youcans/category_12321605.html&#xff09;原創作品 【DeepSeek論文精讀】1. 從 DeepSeek LLM 到 DeepSeek R1 【DeepSeek論文精讀】10. DeepSeek-Coder-V2: 突破閉源模型在代碼智能領域的障礙 【DeepSeek論文精讀】12. De…

第十一節:第一部分:正則表達式:應用案例、爬取信息、搜索替換

正則表達式介紹 String提供的正則表達式的方法的書寫規則 正則表達式總結 正則表達式作用&#xff1a; 作用三&#xff1a;搜索替換 案例分析及代碼&#xff08;圖片解析&#xff09; 代碼&#xff1a; 代碼一&#xff1a;校驗手機號和郵箱格式是否正確 package com.itheima.…

視頻監控匯聚平臺EasyCVR工業與安全監控:防爆攝像機的安全應用與注意事項

石油、化工、煤礦等行業存在易燃易爆氣體、粉塵&#xff0c;普通監控設備易因電火花、高溫引發爆炸火災。隨著工業規模擴大&#xff0c;安全生產監控需求激增&#xff0c;防爆攝像機成為保障安全的關鍵。加之國家法規與行業標準對危險環境監控設備要求嚴格&#xff0c;規范其應…

重學計算機網絡之命令整理

配置權限相關 1.用戶執行模式&#xff1a;查看網絡設備狀態信息 2.特權執行模式&#xff1a;查看和修改網絡設備的狀態和控制信息 3.全局配置模式&#xff1a;對整個網絡設備進行全局性參數配置 4.接口配置模式&#xff1a;對網絡設備的接口進行配置 enable #進入特權執行模式…

數據結構與算法Day3:緒論第三節抽象數據類型、算法及其描述

各位親愛的讀者&#xff0c;大家好&#xff01;今天博主給大家帶來的內容是C語言數據結構與算法當中抽象數據類型、算法及其分析的相關知識。 一.抽象數據類型 抽象數據類型&#xff1a;指的是用戶進行軟件系統設計時從問題的數據模型中抽象出來的邏輯數據結構和邏輯數據結構上…

ABC 350

E. Toward 0 從大規模向小規模&#xff0c;用記憶化搜索&#xff0c;只需要分好類&#xff0c;有哪幾種搜法。 期望實際上就是把每一種情況的答案答案都算出來&#xff0c;然后取個平均值 &#xff0c;并不困難。 f ( i ) [ f ( i / 6 ) f ( i / 5 ) f ( i / 4 ) f ( i / 3…

多相電機驅動控制學習(1)——基于雙dq坐標系的六相/雙三相PMSM驅動控制

1.引言 最近想學習一下多相電機。想從相對簡單的開始吧&#xff0c;先學一個基于雙dq的六相/雙三相PMSM驅動控制&#xff08;考慮中性點隔離以及不隔離的情況&#xff0c;即考慮是否有零序電流回路&#xff09;&#xff0c;后面有時間再學學基于VSD的六相/雙三相PMSM驅動控制。…

筆記: 在WPF中ContentElement 和 UIElement 的主要區別

一、目的&#xff1a;簡要姐掃在WPF中ContentElement 和 UIElement 的主要區別 ContentElement 和 UIElement 是 WPF 中的兩個基類&#xff0c;它們在功能和用途上有顯著的區別。 二、主要區別 ContentElement 主要特點: ? 沒有視覺表示: ContentElement 本身不直接渲染任…

Android-Glide學習總結

Glide三級緩存? 面試官 我看你簡歷里提到熟悉 Glide&#xff0c;能聊聊它的緩存機制嗎&#xff1f;比如加載圖片的時候&#xff0c;Glide 是怎么決定從內存還是磁盤讀取的&#xff1f; ?你? 哦&#xff0c;Glide 的緩存機制是吧&#xff1f;嗯&#xff0c;這個我之前在做項…

安卓證書的申請(保姆級圖文)

目錄 確認安裝了對應版本的jdk生成證書文件1. -genkey2. -alias test_certalias3. -keyalg RSA4. -keysize 20485. -validity 365006. -keystore test_cert.keystore 查看證書內容總結 歡迎關注 『發現你走遠了』 博客&#xff0c;持續更新中 歡迎關注 『發現你走遠了』 博客&a…

Unity性能優化

SetPass calls表示在當前攝像機的渲染過程中&#xff0c;Unity切換著色器通道&#xff08;Shader Pass&#xff09;來渲染游戲對象的次數。一個著色器&#xff08;Shader&#xff09;可以包含多個著色器通道&#xff0c;每個著色器通道可以通過不同的方式來渲染游戲對象。但每次…

Python+AI Agent:解鎖MCP Servers的智能潛力

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦&#xff1a;「storms…

uni-app學習筆記十五-vue3頁面生命周期(一)

頁面生命周期概覽 vue3頁面生命周期如下圖所示&#xff1a; onLoad 此時頁面還未顯示&#xff0c;沒有開始進入的轉場動畫&#xff0c;頁面dom還不存在。 所以這里不能直接操作dom&#xff08;可以修改data&#xff0c;因為vue框架會等待dom準備后再更新界面&#xff09;&am…

【排序算法】快速排序詳解--附詳細流程代碼

快速排序算法 介紹 快速排序&#xff08;Quick Sort&#xff09;是一種高效的分治排序算法&#xff0c;由英國計算機科學家 Tony Hoare 于 1960 年提出。它是實際應用中最常用的排序算法之一。快速排序的基本思想是&#xff1a;選擇一個"基準"&#xff08;pivot&am…

【監控】Prometheus中的告警機制介紹

prometheus實戰之三&#xff1a;告警規則_驗證prometheus告警規則-CSDN博客 Prometheus是一款開源的系統監控和告警工具&#xff0c;其告警功能是保障系統穩定運行的重要部分。以下將從告警的整體架構、核心概念、規則配置以及具體的通知流程等方面對Prometheus中的告警進行介…

53、用例(Use Case)詳解

1. 定義與核心概念 用例&#xff08;Use Case&#xff09; 是軟件工程中用于描述系統功能需求的核心工具&#xff0c;它通過結構化的方式定義系統與外部參與者&#xff08;用戶、其他系統&#xff09;之間的交互行為&#xff0c;以實現具體的業務目標。用例強調從用戶視角出發…