91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見(jiàn)的數(shù)據(jù)庫(kù)管理

痞子衡嵌入式 ? 來(lái)源:痞子衡嵌入式 ? 作者:痞子衡嵌入式 ? 2022-10-10 16:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

摘要:數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)和管理數(shù)據(jù)的專(zhuān)用軟件,使得管理數(shù)據(jù)更加安全,方便和高效。數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的管理的基本單位是表(table),在嵌入式linux中有時(shí)候它也需要用到數(shù)據(jù)庫(kù),聽(tīng)起來(lái)好難,其實(shí)就是幾個(gè)函數(shù),掌握了就好。

一、常見(jiàn)的數(shù)據(jù)庫(kù)

大型數(shù)據(jù)庫(kù)(大型機(jī))Oracle(億級(jí)),中型數(shù)據(jù)庫(kù)(分布式超大型)mysql(百萬(wàn)級(jí)),輕型數(shù)據(jù)庫(kù)(嵌入式設(shè)備)sqlite(萬(wàn)級(jí)),訪問(wèn)數(shù)據(jù)庫(kù)使用SQL語(yǔ)句,適用于所有的數(shù)據(jù)庫(kù)。

二、安裝SQLite3

有C環(huán)境就可以調(diào)用sqlite

2.1直接用命令安裝

sudoapt-getupdate
sudoapt-getinstallsqlite3

2.2 直接編譯源碼

將源碼拷貝到Ubuntu的非共享目錄解壓

c7752a36-4858-11ed-a3b6-dac502259ad0.png解壓命令:

tarzvxfsqlite-autoconf-3380500.tar.gz

配置

cdsqlite-snapshot-201708031550
./configure--prefix=/home/gec/sqlite

編譯

make

安裝

makeinstall

三、SQLite的使用

新建數(shù)據(jù)庫(kù)文件
sqlite3數(shù)據(jù)庫(kù)文件的路徑//打開(kāi)/創(chuàng)建
//比如:sqlite3 first.db
c7884382-4858-11ed-a3b6-dac502259ad0.png

3.1 基本操作命令

.exit/.quit--------退出數(shù)據(jù)庫(kù)命令行
.help--------------幫助說(shuō)明信息
.tables------------查看當(dāng)前數(shù)據(jù)庫(kù)中所有的表

3.2 數(shù)據(jù)庫(kù)訪問(wèn)的SQL語(yǔ)句

基本語(yǔ)法:

所有的SQL語(yǔ)句都以分號(hào)(;)結(jié)束
不區(qū)分大小寫(xiě)

3.3 新建表格

createtable表名(字段名1字段類(lèi)型1,字段名2字段類(lèi)型2,字段名3字段類(lèi)型3,...);
比如:
//創(chuàng)建一個(gè)stutbl的表,表中有3個(gè)字段
//分別是整數(shù)類(lèi)型的學(xué)號(hào)id,字符串類(lèi)型的name和整數(shù)類(lèi)型的age
createtablezhiguoxin(idint,namechar[20],ageint);
//不存在則創(chuàng)建
createtableifnotexistszhiguoxin(idint,namechar[20],ageint);
//如果希望表中某個(gè)字段的內(nèi)容不重復(fù),可以用unique修飾該字段
createtableifnotexistszhiguoxin(idintunique,namechar[20],ageint);
c79738ba-4858-11ed-a3b6-dac502259ad0.png

3.4 刪除表格

droptable表名;
//droptablezhiguoxin;

3.5 往表格中插入數(shù)據(jù)

insertinto表名values(字段值1,字段值2,字段值3,....);
//字段值如果是字符串,必須用''(單引號(hào))括起來(lái)
比如:
insertintozhiguoxinvalues(1001,'劉堯',18);
insertintozhiguoxinvalues(1002,'聶衍文',19);
insertintozhiguoxinvalues(1003,'楊佳晨',20);
insertintozhiguoxinvalues(1004,'馮華陽(yáng)',21);
c7a4d7ea-4858-11ed-a3b6-dac502259ad0.png

完成插入之后,zhiguoxin 的表格內(nèi)容如下:

id name age
1001 劉堯 18
1002 聶衍文 19
1003 楊佳晨 20
1004 馮華陽(yáng) 21

3.6 查詢(xún)表中的數(shù)據(jù)

//查詢(xún)表中的所有數(shù)據(jù)

select*from表名;
//select*fromzhiguoxin;
c7b6874c-4858-11ed-a3b6-dac502259ad0.png

3.7 查看數(shù)據(jù)庫(kù)

可以把first.db數(shù)據(jù)庫(kù)文件拷貝至windows下,使用SQLite Developer打開(kāi)即可看到。SQLite Developer下載地址

https://mydown.yesky.com/pcsoft/443425.html
c7cb2a76-4858-11ed-a3b6-dac502259ad0.png

3.8 按條件查找

1.使用where指定查詢(xún)條件

select*fromzhiguoxinwhereid=1003;//查詢(xún)id值為1003的條目
select*fromzhiguoxinwhereage>=19andage<21;
select?*?from?zhiguoxin?where?age>=19orage<21;
c7dfe682-4858-11ed-a3b6-dac502259ad0.png

2.指定查詢(xún)的字段

selectid,name,agefromzhiguoxin;//只查詢(xún)id,name,age的字段
c7f59fae-4858-11ed-a3b6-dac502259ad0.png

3.使用where+like實(shí)現(xiàn)模糊查詢(xún)

select*fromzhiguoxinwherenamelike'劉%';//查找名字以劉開(kāi)頭的條目
c8048802-4858-11ed-a3b6-dac502259ad0.png

4.使用order by實(shí)現(xiàn)查詢(xún)結(jié)果按某個(gè)字段的值升序/降序輸出

select*fromzhiguoxinorderbyagedesc;//按年齡降序排序
select*fromzhiguoxinorderbyidasc;//按id升序排序
c8162c92-4858-11ed-a3b6-dac502259ad0.png

3.9 刪除表中的條目

deletefrom表名where條件;//刪除所有符合條件的條目
比如:
deletefromzhiguoxinwhereid=1001;
c82a5884-4858-11ed-a3b6-dac502259ad0.png

3.10 更新(修改)表中的條目

update表名set字段名1=字段值1,字段名2=字段值2...where條件;//修改符合條件的條目
比如:
updatezhiguoxinsetage=100whereid=1002;
c83a71b0-4858-11ed-a3b6-dac502259ad0.png

3.11 SQLite中字段類(lèi)型

數(shù)字:

int-------整型
smallint----短整型
tinyint-----微型整數(shù)(0~255)
bit---------0or1
float------單精度浮點(diǎn)型
real-------雙精度浮點(diǎn)型

字符串:

char----------非unicode定長(zhǎng)字符串

四、SQLite的C語(yǔ)言訪問(wèn)接口

sqlite本身自帶C語(yǔ)言訪問(wèn)接口,在C語(yǔ)言的環(huán)境下可以直接使用,使用這些接口的代碼需要 sqlite的源碼編譯進(jìn)可執(zhí)行程序 或者 編譯時(shí)鏈接sqlite的庫(kù)。

4.1 打開(kāi) sqlite3_open

intsqlite3_open(
constchar*filename,/*數(shù)據(jù)庫(kù)的文件路徑*/
sqlite3**ppDb/*輸出參數(shù):傳出代表打開(kāi)數(shù)據(jù)庫(kù)的句柄*/
);
//成功返回SQLITE_OK,否則打開(kāi)失敗char ----------非unicode定長(zhǎng)字符串< 8000
varchar :非unicode變長(zhǎng)字符串?

4.2 關(guān)閉 sqlite3_close

intsqlite3_close(sqlite3*pDb);
//傳入要關(guān)閉的數(shù)據(jù)庫(kù)的句柄

4.3 編譯方法

1.直接編譯源碼
gccsqlite3.csqlite_test.c-pthread-ldl-osqlite_test
2.鏈接sqlite3的動(dòng)態(tài)庫(kù)
gccsqlite_test.c-pthread-ldl-lsqlite3-L/home/gec/sqlite/lib-osqlite_test
//如果運(yùn)行時(shí)找不到sqlite3的庫(kù),可以將編譯出來(lái)的庫(kù)文件拷貝到/usr/lib目錄下(cp-r)

4.4 執(zhí)行SQL語(yǔ)句的接口 sqlite3_exec

intsqlite3_exec(
sqlite3*pDb,/*打開(kāi)的數(shù)據(jù)庫(kù)的句柄*/
constchar*sql,/*要執(zhí)行的SQL語(yǔ)句*/
int(*callback)(void*arg,intcol,char**str,char**name),
/*回調(diào)函數(shù),處理SQL語(yǔ)句執(zhí)行返回的結(jié)果(查詢(xún)),一條結(jié)果調(diào)用一次
arg-exec的第四個(gè)參數(shù)
col-本條結(jié)果的字段數(shù)
str-記錄字段值的數(shù)組
name-記錄字段名的數(shù)組
回調(diào)函數(shù)必須返回SQLITE_OK*/
void*arg,/*傳遞給回調(diào)函數(shù)的第一個(gè)參數(shù)*/
char**errmsg/*錯(cuò)誤信息*/
);
//成功返回SQLITE_OK,否則執(zhí)行失敗

幾個(gè)例子

//連接數(shù)據(jù)庫(kù)
intConnection_Sqlite3DataBase()
{
rc=sqlite3_open("./face_database/face.db",&db);
if(rc!=SQLITE_OK)
{
fprintf(stderr,"Can'topendatabase:%s
",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else
printf("Youhaveopenedasqlite3databasenamedbind.dbsuccessfully!
Congratulation!Havefun!
");
return0;
}
//將圖片插入到數(shù)據(jù)庫(kù)
voidinsert_face_data_toDataBase(constchar*name,MByte*face_feature,MInt32featureSize)
{
sqlite3_prepare(db,"insertintoface_data_table(name,face_feature,feature_size)values(?,?,?);",-1,&stmt,NULL);
sqlite3_bind_text(stmt,1,name,strlen(name),NULL);
sqlite3_bind_blob(stmt,2,face_feature,featureSize,NULL);
sqlite3_bind_int(stmt,3,featureSize);
sqlite3_step(stmt);
}
c84c9bd8-4858-11ed-a3b6-dac502259ad0.png
審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5149

    文章

    19659

    瀏覽量

    317354
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3926

    瀏覽量

    66184
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64828

原文標(biāo)題:手把手教你在嵌入式設(shè)備中使用SQLite3

文章出處:【微信號(hào):pzh_mcu,微信公眾號(hào):痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)據(jù)庫(kù)復(fù)制的設(shè)計(jì)和管理

    【摘 要】 介紹數(shù)據(jù)庫(kù)復(fù)制在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的應(yīng)用、設(shè)計(jì)和管理,給出了設(shè)計(jì)步驟和設(shè)計(jì)時(shí)考慮的因素。對(duì)設(shè)計(jì)和應(yīng)用中出現(xiàn)的沖突問(wèn)題進(jìn)行了分析并給出了解決辦法。對(duì)
    發(fā)表于 05-11 19:35 ?822次閱讀

    數(shù)據(jù)庫(kù)管理系統(tǒng)層次安全技術(shù)

    數(shù)據(jù)庫(kù)管理系統(tǒng)層次安全技術(shù) 數(shù)據(jù)庫(kù)系統(tǒng)的安全性很大程度上依賴(lài)于數(shù)據(jù)庫(kù)管理系統(tǒng)。如果數(shù)據(jù)庫(kù)
    發(fā)表于 06-17 07:45 ?769次閱讀

    Informix數(shù)據(jù)庫(kù)管理

    Informix數(shù)據(jù)庫(kù)管理: 一、Informix數(shù)據(jù)庫(kù)的安裝
    發(fā)表于 08-01 15:29 ?1388次閱讀

    數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是什么意思

    數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是什么意思 數(shù)據(jù)庫(kù)管理系統(tǒng)提供了定義數(shù)
    發(fā)表于 03-18 15:21 ?1.1w次閱讀

    保護(hù)MySQL數(shù)據(jù)倉(cāng)庫(kù)的最佳實(shí)踐

    數(shù)據(jù)倉(cāng)庫(kù)中最常見(jiàn)數(shù)據(jù)庫(kù)管理系統(tǒng)可能就是開(kāi)源的MySQL數(shù)據(jù)庫(kù)。以下5個(gè)小技巧重點(diǎn)介紹了一些保護(hù)MySQL
    發(fā)表于 09-27 14:10 ?0次下載

    數(shù)據(jù)庫(kù)教程之數(shù)據(jù)庫(kù)的創(chuàng)建與管理詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫(kù)教程之數(shù)據(jù)庫(kù)的創(chuàng)建與管理詳細(xì)資料免費(fèi)下載。內(nèi)容包括了:SQL Server數(shù)據(jù)庫(kù)概述, 創(chuàng)建數(shù)據(jù)庫(kù),修改
    發(fā)表于 10-19 10:41 ?18次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>教程之<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的創(chuàng)建與<b class='flag-5'>管理</b>詳細(xì)資料免費(fèi)下載

    數(shù)據(jù)庫(kù)有哪些常見(jiàn)的應(yīng)用結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu)的使用資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫(kù)有哪些常見(jiàn)的應(yīng)用結(jié)構(gòu)數(shù)據(jù)庫(kù)應(yīng)用結(jié)構(gòu)的使用資料概述 數(shù)據(jù)庫(kù)常見(jiàn)的應(yīng)用結(jié)構(gòu)有:1.集中式結(jié)構(gòu)2.文件服務(wù)器結(jié)構(gòu)
    發(fā)表于 10-31 16:57 ?11次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>有哪些<b class='flag-5'>常見(jiàn)</b>的應(yīng)用結(jié)構(gòu)<b class='flag-5'>數(shù)據(jù)庫(kù)</b>應(yīng)用結(jié)構(gòu)的使用資料概述

    數(shù)據(jù)庫(kù)管理系統(tǒng)的功能

    本視頻主要詳細(xì)介紹了數(shù)據(jù)庫(kù)管理系統(tǒng)的功能,分別是數(shù)據(jù)定義、數(shù)據(jù)操作、數(shù)據(jù)庫(kù)的運(yùn)行管理
    的頭像 發(fā)表于 02-22 15:52 ?6259次閱讀

    數(shù)據(jù)庫(kù)系統(tǒng)的常見(jiàn)用戶(hù)

    數(shù)據(jù)庫(kù)管理員(DatabaseAdministrator,簡(jiǎn)稱(chēng)DBA),是從事管理和維護(hù)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的相關(guān)工作人員的統(tǒng)稱(chēng),屬于
    的頭像 發(fā)表于 02-22 16:28 ?9633次閱讀

    數(shù)據(jù)庫(kù)教程之SQL Server數(shù)據(jù)庫(kù)管理的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是數(shù)據(jù)庫(kù)教程之SQL Server數(shù)據(jù)庫(kù)管理的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1.了解SQL Server 的安裝、功能和特點(diǎn);2.使用企業(yè)管理器、查詢(xún)分析器和在線幫助;3
    發(fā)表于 03-01 11:00 ?26次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>教程之SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>管理</b>的詳細(xì)資料說(shuō)明

    常見(jiàn)MySQL數(shù)據(jù)庫(kù)管理工具的介紹

    最初MySQL本身沒(méi)有提供非常方便的圖形管理工具,日常的開(kāi)發(fā)和維護(hù)均在類(lèi)似DOS窗口中,用命令行進(jìn)行數(shù)據(jù)庫(kù)的操作。所以對(duì)于開(kāi)發(fā)和測(cè)試同學(xué)來(lái)說(shuō),上手略微有點(diǎn)困難,增加了學(xué)習(xí)成本。 本文詳細(xì)給出了幾款常見(jiàn)MySQL
    的頭像 發(fā)表于 03-29 13:55 ?3786次閱讀
    <b class='flag-5'>常見(jiàn)</b>MySQL<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>管理</b>工具的介紹

    數(shù)據(jù)庫(kù)建立|數(shù)據(jù)庫(kù)創(chuàng)建的方法?

    數(shù)據(jù)庫(kù)是一個(gè)存儲(chǔ)關(guān)鍵數(shù)據(jù)的文件系統(tǒng)。利用數(shù)據(jù)庫(kù)管理系統(tǒng)建立每個(gè)人的數(shù)據(jù)庫(kù)可以更好地提供安全。 數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 07-14 11:15 ?1624次閱讀

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被認(rèn)為是最流行和最常見(jiàn)的開(kāi)源
    的頭像 發(fā)表于 08-28 17:15 ?1284次閱讀

    redis與mysql的區(qū)別

    Redis與MySQL是兩種常見(jiàn)數(shù)據(jù)庫(kù)管理系統(tǒng),兩者在很多方面存在差異,本文將詳細(xì)分析Redis與MySQL的區(qū)別。 數(shù)據(jù)模型: Redis是一種基于鍵值對(duì)的NoSQL
    的頭像 發(fā)表于 11-16 11:21 ?1384次閱讀

    常見(jiàn)的存儲(chǔ)Idea數(shù)據(jù)庫(kù)的地方

    Idea的數(shù)據(jù)庫(kù)被存儲(chǔ)在許多不同的地方,取決于應(yīng)用程序和使用的技術(shù)。下面將詳細(xì)描述一些常見(jiàn)的存儲(chǔ)Idea數(shù)據(jù)庫(kù)的地方。 關(guān)系型數(shù)據(jù)庫(kù)(RDBMS):關(guān)系型
    的頭像 發(fā)表于 12-06 14:15 ?1381次閱讀
    主站蜘蛛池模板: 日本黄色大片免费观看 | 免费看性 | 免费激情网站 | 国产精品久久久久久久久免费观看 | 日本资源在线 | 日本网站黄色 | 我被黑人巨大开嫩苞在线观看 | 欧美性狂猛bbbbbbxxxx | 色老板女色狠xx网 | 久操免费在线 | 天堂男人在线 | 日本三级人妇 | 福利视频网站 | 日日夜夜狠狠干 | 男女吃奶一进一出动态图 | 影院午夜 | 久久九九色 | 天天狠狠弄夜夜狠狠躁·太爽了 | 国产伦子一区二区三区四区 | 久久免费福利视频 | 九九51精品国产免费看 | 日本免费黄色大片 | 俺来也俺去啦久久综合网 | 你懂的在线免费观看 | 91伊人网 | 午夜免费福利片观看 | 亚洲人成人77777网站 | 高清一级做a爱免费视 | 天天干天天夜 | 4438全国最大成人免费高清 | 国产美女精品一区二区三区 | 三级在线网址 | 68日本xxxxxxxxx18能看的 | 日a在线 | 大尺度视频在线观看 | 国产视频观看 | 欧日韩视频777888 | 亚洲综合色一区 | 亚洲一区免费在线 | 欧洲精品码一区二区三区免费看 | 久久天天躁狠狠躁夜夜免费观看 |