Linux學習——sqlite3

1.sqlite3的使用

1.打開數據庫

sqlite3 stu.db? //database

2.操作

輸入 sqlite3,進入軟件后,輸入 sqlite3? 軟件自帶的命令(.help,.databases,·quit,.exit)

3.增刪改查

CREATE TABLE database_name.table_name(column1 datatype  PRIMARY KEY(one or more columns),column2 datatype,column3 datatype,.....columnN datatype,
);例子:
create table stu(name, sex, age, score);
create table stu1(name text, sex text, age int, score real);
創建一張表驗證:.table //可以看到表的名字.schema//可以看到表的字段
//往表中添加信息
插入一條記錄
語法:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);//全部列都給到
insert into stu values("tom", "male", 19, 88.5);
insert into stu1 values("ousca", "fmale", 18, 98.5);//給一部分列插入數據
insert into stu1(name, sex) values("jack", "male");

注意:sql語句后面必須以分號結尾

刪除表中的數據
DELETE FROM table_name WHERE [condition];delete from 表名 where 條件;刪除表
DROP TABLE database_name.table_name;drop table 表名;

添加字段
ALTER TABLE database_name.table_name RENAME TO new_table_name;
alter table 表名 add 列名;例子:
alter table stu add stuno;
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       fmale       18          98.5                  
tom         male        19          88.5  
修改表的數據
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];update 表名 set 列1=值1 [,列2=值2,...][匹配條件];條件語句:
where 字句
where 列名 操作符 列值
where age    >     10update stu set stuno=110 where name="ousca"
name        sex         age         score       stuno     
----------  ----------  ----------  ----------  ----------
ousca       female      18          98.5        110       
tom         male        19          88.5        111 

//查詢
SELECT column1, column2, columnN FROM table_name;select 列名1, 列名2,... from 表名;select * from 表名;//查看表的所有信息sqlite3命令:
.headers on //打開表頭
.mode column //指定查詢的輸出格式, column是以列對齊的方式name        sex         age         score     
----------  ----------  ----------  ----------
ousca       female      18          98.5      
tom         male        19          88.5 
查詢:
1.查詢部分字段
select name from stu where score>80;
2.in語句
selectt * from stu where age in(18,19);
3.and語句//多個條件
select * from stu where age >18 and score > 80;
4.or語句
select * from stu where age > 18 or score > 80;
5.范圍between...and ...
select * from stu where age between 19 and 20;
6. like
select * from stu where name like "tom";
select*from stuwhere name 1ike"&tom&";//%表示匹配任意多個字符
select * from stu where name like "_tom_";表示匹配任意一個字符

4.補充

//插入時間信息
create table user1(id int,name char,age int,dt datetime);
eg:insert into user1 values (1,'張三',18,datetime('now','+8 hours')); //utcid          name        age         dt                 
----------  ----------  ----------  -------------------
1           張三          18          2025-08-29 15:38:02
//自動增長列
create table user5 (id INTEGER PRIMARY KEY ASC,name char, age int);
PRIMARY KEY//主鍵
ASC//自動增長的順序//int需要寫成INTEGER才能實現自動增長
create table user4 (id int PRIMARY KEY ASC,name char, age int) ;id          name        age         dt                 
----------  ----------  ----------  -------------------
1           李四          21          2025-08-29 15:48:10
2           王二          22          2025-08-29 15:48:21
3           張三          25          2025-08-29 15:48:34

2.函數學習

類似于文件操作 ---- stu.db (單獨的數據庫文件)

1.打開

#include <sqlite3.h>
int sqlite3_open(char *db_name,sqlite3 **db);
功能:打開數據庫。
參數:@db_name:數據庫文件名,若文件名包含ASCII碼表范圍的之外的字符,則其必需是(UTF-8)編碼。@db:數據庫標識,此結構體為數據庫操作句柄。通過此句柄可對數據庫文件進行相應操作。
返回值:成功返回     SQLITE_OK失敗返回     非SQLITE_OK

2.sql語句

sqlite3_exec 函數:
int sqlite3_exec(sqlite3*db,const char *sql,exechandler_t callback,void *arg,char **errmsg);功能:
執行sql指向的SQL 語句,若結果集不為空,函數會調用函數指針callback所指向的函數。參數:db:數據庫的標識。sql:SQL語句(一條或多條),以';'結尾。callback:是回調函數指針,當這條語句執行之后,sqlite3會去調用你提供的這個函數。arg:當執行 sqlite3_exec 的時候傳遞給回調函數的參數。errmsg:存放錯誤信息的地址,執行失敗后可以查閱這個指針。返回值:成功返回SQLITE_OK,失敗返回 非SQLITE_OK。打印錯誤信息方法:printf("%s\n"errmsg);
回調函數指針:
typedef int(*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);功能:此函數由用戶定義,當sqlite3_exec函數執行sql查詢語句后,結果集不為空時sqlite3_exec函數會自動調用此函數,每次調用此函數時會把結果集的一行信息傳給此函數。參數:@para:sqlite3_exec傳給此函數的參數,para為任意數據類型的地址。@n_column:結果集的列數。@column_value:指針數組的地址,其存放一行信息中各個列值的首地址。@column_name:指針數組的地址,其存放一行信息中各個列值對應列名的首地址。返回值:若為非0值,則通知 sqlite3_exec終止回調。
sqlite3_get_table 函數:
int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);功能:
執行Sql指向的SQL語句,函數將結果集相關的數據的地址保存在函數的參數中。參數:db:數據庫的標識。sql:SQL語句(一條或多條),以';'結尾。resultp:指針數組的地址,其記錄了結果集的數據。內存布局:先依次存放各列的列名,然后是每一行各列的值。nrow:結果集的行數(不包含列名)。ncolumn:結果集的列數。errmsg:錯誤信息。
sqlite3 free_table 函數:
void sqlite3_free_table(char **resultp);
功能:釋放sqlite3_get_table分配的內存。
參數:結果集數據的首地址。

3.關閉

int sqlite3_close(sqlite3 *db);
功能:關閉數據庫、釋放打開數據庫時申請的資源。 
參數:db:數據庫的標識。
返回值:成功返回  SQLITE_OK。失敗返回 非 SQLITE_OK。

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

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

相關文章

【線性代數基礎 | 那忘算9】基爾霍夫(拉普拉斯)矩陣 矩陣—樹定理證明 [詳細推導]

之前學的不扎實導致現在還得回來再學。 專欄指路&#xff1a;《再來一遍一定記住的算法&#xff08;那些你可能忘記了的算法&#xff09;》 前置知識&#xff1a; 生成樹&#xff1a;在一個無向連通圖中&#xff0c;能夠連接所有頂點的樹結構。 點的度數&#xff1a;與這個點…

Chrome高危零日漏洞PoC公開,已被用于野外攻擊

谷歌此前披露了Chrome瀏覽器V8 JavaScript引擎中存在一個高危零日漏洞&#xff08;CVE-2025-5419&#xff09;。而在近日&#xff0c;該漏洞的概念驗證&#xff08;PoC&#xff09;利用代碼已被公開。相關補丁已經發布&#xff0c;用戶應盡快進行更新。 **核心要點** 1. CVE-2…

HTTP 接口調用工具類(OkHttp 版)

說明 HTTP 基本知識序號方法請求體描述1GET一般沒有&#xff0c;可以有從服務器獲取資源。用于請求數據而不對數據進行更改。例如&#xff0c;從服務器獲取網頁、圖片等。2POST有向服務器發送數據以創建新資源。常用于提交表單數據或上傳文件。發送的數據包含在請求體中。3PUT有…

Spring/Spring MVC/iBATIS 應用 HTTP 到 HTTPS 遷移技術方案

Spring/Spring MVC/iBATIS 應用 HTTP 到 HTTPS 遷移技術方案概述本方案詳細介紹了將基于 Spring、Spring MVC 和 iBATIS 的傳統 Java Web 應用從 HTTP 遷移到 HTTPS 的完整流程。這種傳統架構的遷移需要考慮更多手動配置和兼容性問題。一、環境評估與準備工作1.1 當前環境分析首…

多智能體系統設計:5種編排模式解決復雜AI任務

當你有一個由研究員、文案、數據分析師和質檢員組成的團隊時&#xff0c;如果沒有合理的協調機制&#xff0c;再優秀的個體也可能產生沖突的結論、停滯的流程&#xff0c;或者解決錯誤的問題。AI智能體同樣如此。 隨著系統從單體模型向多智能體架構演進&#xff0c;編排成為核…

CVPR上的多模態檢索+視頻理解,LLM助力提效翻倍

關注gongzhongaho【CVPR頂會精選】多模態研究正處在爆發期&#xff0c;從圖文融合到視頻、語音、傳感器數據&#xff0c;模型能力邊界不斷擴展。頂會頂刊已將其視為具身智能與通用AI的核心方向。但寫論文時常遇到痛點&#xff1a;方法多、任務雜&#xff0c;缺乏統一框架&#…

Docker部署單節點使用KRaft模式的Kafka3.8.0版本與可視化界面Kafka-Map

記錄一下Docker部署單節點Kafka與部署可視化界面KafkaMap容器 目錄 一、Kafka早已經棄用了ZooKeeper 二、Docker部署單機版Kafka 1、--name kafka-server 2、--network kafka-stand 3、--restart unless-stopped 4、-p 9092:9092 5、-p 9093:9093 6、-e ALLOW_PLAINTE…

Elasticsearch面試精講 Day 2:索引、文檔與映射機制

【Elasticsearch面試精講 Day 2】索引、文檔與映射機制 在“Elasticsearch面試精講”系列的第二天&#xff0c;我們將深入探討索引&#xff08;Index&#xff09;、文檔&#xff08;Document&#xff09;與映射&#xff08;Mapping&#xff09;機制。這是Elasticsearch中最基礎…

Vue2 與 Vue3 路由鉤子的區別及用法詳解

Vue2 與 Vue3 路由鉤子的區別及用法詳解 一、核心區別概覽特性Vue2 (選項式API)Vue3 (組合式API)定義方式組件選項形式在setup()中調用函數形式鉤子名稱beforeRouteEnter/Update/LeaveonBeforeRouteUpdate/Leavethis訪問beforeRouteEnter不能訪問this無this概念&#xff0c;直接…

STM32的內存分配與堆棧

使用過cortex-M4內核單片機的朋友對下面這張圖一定不會感到陌生&#xff0c;它是ST原廠手冊里面的memory map&#xff0c;里面的信息量其實非常多&#xff0c;今天簡單說明一部分。我們在編寫stm32代碼的時候最長使用的地址有兩塊&#xff0c;第一塊是0x0000 0000~0x3FFF FFFF,…

OpenStack 03:創建實例

修改默認安全組 管理規則 添加規則 添加端口22規則 添加ping 規則 下載鏡像文件 Get images — Virtual Machine Image Guide documentation https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/42/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2 …

企業級架構師綜合能力項目案例一(各種組件集群搭建+SpringBoot整合)

架構圖 用戶請求 → Nginx → Spring Cloud Gateway → 微服務集群↓MySQL集群主從復制(ShardingSphere) Redis集群主從復制(Sentinel)ES集群 MongoDB集群(分片)RocketMQ集群 Seata分布式事務搭建集群 Nginx集群和配置┌─────────…

學習stm32 窗口看門狗

窗口看門狗1.WWDG簡介窗口看門狗用于監測單片機程序運行時效是否精準&#xff0c;主要檢測軟件異常&#xff0c;一般用于需要精準檢測程序運行時間的場合。不僅防止程序 “卡死不喂狗”&#xff0c;還能避免程序 “異常早喂狗”&#xff08;如死循環中誤執行喂狗指令&#xff0…

Selenium 等待機制:編寫穩定可靠的自動化腳本

一、為什么需要等待機制&#xff1f;網頁是動態加載的&#xff0c;元素出現的時間不確定。如果腳本在元素還沒加載完成時就嘗試操作它&#xff0c;就會拋出 NoSuchElementException 異常。三種等待方式&#xff1a;強制等待&#xff1a;time.sleep() - 簡單但低效隱式等待&…

蓓韻安禧活性葉酸獨立包裝防漏貼心設計

蓓韻安禧葉酸新升級 近期&#xff0c;蓓韻安禧在葉酸產品上進行了重要的優化升級。這次升級的核心在于產品形態和使用體驗的顯著提升&#xff0c;尤其體現在其包裝設計上。新版本采用了獨立密封的小包裝形式&#xff0c;每一份都精準包含每日所需的葉酸量。這種設計不僅有效避免…

8針腳的1.8寸IIC接口的TFT彩屏的八個引腳都需要使用嗎?

核心結論 不需要全部使用8個引腳。實際僅需連接 4根核心線&#xff08;GND, VCC, SCL, SDA&#xff09; 即可基本工作&#xff0c;其余引腳為功能增強或備用設計。具體需根據屏幕型號確認&#xff0c;但通用規則如下&#xff1a;8針腳功能分解引腳標號典型名稱是否必需作用不連…

刷題日記0831

今日計劃5道早上起來不困&#xff0c;吃好早飯開始困了&#xff0c;感覺刷不動題&#xff0c;就先做別的事&#xff0c;不困。現在別的事做好了&#xff0c;感覺能刷動題了。開始開始。7/5134. 加油站 中等超時了。看下題解。不是&#xff0c;怎么上數學了&#xff1f;假設從 x…

【2025.8.31】自學Java三個月,談談心路歷程順便給自己灌點雞湯

自學Java三個月&#xff0c;談談心得順便給自己灌點雞湯 6月1開始上班&#xff0c;到今天剛好三個月。從上班第一天決定開始自學java&#xff0c;到今天也是正好3個月整&#xff0c;想借這個機會簡單記錄一下學習java的契機和進度&#xff0c;α一些碎碎念。&#xff08;括號恐…

linux內核trace_begin和trace_end使用分析

1,strace/ftrace的實現和使用 echo 1 > /sys/kernel/debug/tracing/tracing_on echo function > /sys/kernel/debug/tracing/current_tracer 2, 手動插入追蹤點 在內核代碼中,可以使用trace_printk函數手動插入追蹤點,標記代碼段的開始和結束: trace_printk(&…

Linux-驅動積累

Linux 設備驅動概述?Linux 設備驅動是內核與硬件交互的核心橋梁&#xff0c;負責屏蔽硬件細節、提供統一操作接口。其以內核模塊為主要存在形式&#xff0c;支持動態加載 / 卸載&#xff0c;核心功能涵蓋硬件初始化、中斷處理、電源管理及數據傳輸&#xff0c;是嵌入式 Linux …