久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

嵌入式數據庫Sqlite3之如何使用基本的命令操作

169次閱讀
沒有評論

共計 5505 個字符,預計需要花費 14 分鐘才能閱讀完成。

這篇文章主要介紹“嵌入式數據庫 Sqlite3 之如何使用基本的命令操作”,在日常操作中,相信很多人在嵌入式數據庫 Sqlite3 之如何使用基本的命令操作問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”嵌入式數據庫 Sqlite3 之如何使用基本的命令操作”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

SQLite

SQLite,是一款輕型的數據庫,是遵守 ACID 的關系型數據庫管理系統,它包含在一個相對小的 C 庫中。

作者 D.RichardHipp

2000 年 1 月,Hipp 開始和一個同事討論關于創建一個簡單的嵌入式 SQL 數據庫的想法,這個數據庫將使用 GNU  DBM 哈希庫 (gdbm) 做后臺,同時這個數據庫將不需要安裝和管理支持。后來,一有空閑時間,Hipp 就開始實施這項工作,2000 年 8 月,SQLite  1.0 版發布了?!驹诖讼虼笊瘾I上我的膝蓋!】

它的設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百 K 的內存就夠了。它能夠支持 Windows/Linux/Unix 等等主流的操作系統,同時能夠跟很多程序語言相結合,比如  Tcl、C#、PHP、Java 等,還有 ODBC 接口,同樣比起 Mysql、PostgreSQL 這兩款開源的世界著名數據庫管理系統來講,它的處理速度比他們都快。

SQLite 特性

鴻蒙官方戰略合作共建——HarmonyOS 技術社區

零配置一無需安裝和管理配置;

儲存在單一磁盤文件中的一個完整的數據庫;

數據庫文件可以在不同字節順序的機器間自由共享;

支持數據庫大小至 2TB;

足夠小,全部源碼大致 3 萬行 c 代碼,250KB;

比目前流行的大多數數據庫對數據的操作要快。

安裝

現在運行的主要是 sqlite3 版本,在 ubuntu 下安裝也非常方便。

sudo apt-get install sqlite sqlite3  安裝應用程序  sudo apt-get install libsqlite3-dev  安裝庫 + 頭文件,用代碼操作數據庫必須安裝

查看版本號:輸入命令 sqlite3 進入操作界面,輸入命令.version, 即可查看詳細版本號。

也可以使用下面命令,安裝圖形化操作工具:

sudo apt-get install sqlitebrowser  圖形化工具建立數據庫

除此之外,還可以部署在 windows 下,本文只討論 ubtuntu 下,采用命令行方式來操作數據庫。

數據類型

操作數據庫,主要就是操作表,表的每一列內容都有一定數據類型,比如整型值、字符串、布爾型等。

Sqlite3 主要數據類型如下:

數據類型定義數據類型     NULL 表示該值為 NULL 值。INTEGER 無符號整型值。REAL 浮點值。TEXT 文本字符串,存儲使用的編碼方式為 UTF-8、UTF-16BE、UTF-16LE。BLOB 存儲 Blob 數據,該類型數據和輸入數據完全相同,1 表示 true,0 表示 false。

同時 sqlite3 也接受如下的數據類型:

數據類型定義 smallint16 位的整數。interger32 位的整數。decimal(p,s)精確值 p 是指全部有幾個十進制數,s 是指小數點后可以有幾位小數。如果沒有特別指定,則系統會默認為 p =5 s=0。float32 位元的實數。double64 位元的實數。char(n)n 長度的字串,n 不能超過 254。varchar(n)長度不固定且其最大長度為 n 的字串,n 不能超過 4000。graphic(n)和 char(n) 一樣,不過其單位是兩個字節,n 不能超過 127。這個形態是為了支持兩個字節長度的字體,如中文字。vargraphic(n)可變長度且其最大長度為 n 的雙字元字串,n 不能超過 2000date 包含了 年份、月份、日期。time 包含了 小時、分鐘、秒。timestamp 包含了 年、月、日、時、分、秒、千分之一秒。

約束

表的每一列都有一些限制屬性,比如有的列的數據不能重復,有的則限制數據范圍等,約束就是用來進一步描述每一列數據屬性的。SQLite   數據庫常用約束如下:

名稱定義 NOT NULL- 非空 UNIQUE 唯一 PRIMARY KEY 主鍵 FOREIGN KEY 外鍵 CHECK 條件檢查 DEFAULT 默認

非空 NOT NULL

有一些字段我們可能一時不知到該填些什么,同時它也沒設定默認值,當添加數據時,我們把這樣的字段空著不填,系統認為他是 NULL   值。但是還有另外一類字段,必須被填上數據,如果不填,系統就會報錯。這樣的字段被稱為 NOT NULL 非空字段, 需要在定義表的時候事先聲明。

唯一 UNIQUE

除了主列以為,還有一些列也不能有重復值。

主鍵 PRIMARY KEY

一般是整數或者字符串,只要保證唯一就行。在 SQLite 中,主鍵如果是整數類型,該列的值可以自動增長。

外鍵 FOREIGN KEY

我們的數據庫中已經有 Teachers 表了,假如我們再建立一個 Students 表,要求 Students 表中的每一個學生都對應一個  Teachers 表中的教師。很簡單,只需要在 Students 表中建立一個 TeacherId 字段,保存對應教師的 Id 號,  這樣,學生和教師之間就建立了關系。問題是:我們有可能給學生存入一個不在 Teachers 表中的 TeacherId 值,  而且發現不了這個錯誤。這種情況下,可以把 Students 表中 TeacherId 字段聲明為一個外鍵,讓它的值對應到 Teachers 表中的 Id   字段上。這樣,一旦在 Students 表中存入一個不存在的教師 Id,系統就會報錯。

默認值 DEFAULT

有一些特別的字段列,在每一條記錄中,他的值基本上都是一樣的。只是在個別情況下才改為別的值,這樣的字段列我們可以給他設一個默認值。

條件檢查 CHECK

某些值必須符合一定的條件才允許存入,這是就需要用到這個 CHECK 約束。

常用命令

下面介紹 Shell 模式中的各常用命令的使用。

命令功能.help 可顯示 shell 模式中可使用的所有命令列表.database 顯示數據庫信息;包含當前數據庫的位置.mode  column 使得 SQL 語句處理的結果以列對齊的方式顯示.mode    listcolumn.headers on/off 打開關閉列標題顯示開關,以使得查詢結果在屏幕顯示時具有列標題.tables 列出當前打開的數據庫中共有多少張表.exit 退出 SQLite 環境.schema foods 顯示表 foods 創建時的 SQL 語句.schema 顯示所有表被創建時的語句.nullvalue STRING 查詢時用指定的串代替輸出的 NULL 串 默認為.nullvalue .show 顯示 shell 模式中定義的與輸出相關的一些設置.output file.csv 設置輸出文件格式為 CSV,文件名為 file.csv.separator , 設置 select 語句輸出的列數據間以“,”分隔.output stdout 恢復輸出內容到標準輸出設備(屏幕)

【注意】sqlite 的命令都是. 開頭的,操作語句前面是沒有. 的。

使用實例

數據庫的操作語句主要是增刪改查,下面我們通過一些實例讓大家了解數據庫的這些基本操作。

表類型

假設我們要創建一個教學管理的數據庫 jxgl.db,數據庫中要保存學生表 STUDENT。

snosnamessexsagesdept95001yikoum21cs95002pengm21cs

根據我們的常識,可知每一列的數據有以下特性:

sno 學號:整型值,每個人學號是唯一的,學校一般用學號來區分所有的學生,而且一般學號是遞增的,所以我們設置 sno 為 primary key;

sname 姓名:一般是字符串,可以重復,但是不能為空;

ssex 性別:字符串,可以為空;

sage 年齡:整型值,假定年齡要大于 14;

sdept 專業:字符串,可以為空, 此處我們默認為 CS。

下面我們一步步實現這個數據庫的所有操作。

創建教學管理“jxgl”數據庫

數據庫的打開和退出,使用如下命令。

創建表:

CREATE TABLE IF NOT EXISTS STUDENT(Sno integer primary key, Sname text not null, Ssex text,Sage integer check(Sage 14),Sdept text default  CS

該表的屬性就是按照上一節表屬性 執行結果:

查看表:

看到 STUDENT,說明該表創建好了?!咀⒁狻?/p>

鴻蒙官方戰略合作共建——HarmonyOS 技術社區

操作語句不是命令,前面不要加. ;

操作語句后面一定要; 結尾,如果漏掉了,一定要補上分號;

操作語句對字母的全角半角很敏感,所有的符號都要用半角。

插入數據

插入數據采用 insert into 語句來實現,如下所示:

INSERT INTO STUDENT VALUES(95001 , 李勇 , M ,20, CS  INSERT INTO STUDENT VALUES( 95002 , 劉晨 , F ,19, IS  INSERT INTO STUDENT VALUES( 95003 , 王敏 , F ,18, MA  INSERT INTO STUDENT VALUES( 95004 , 張立 , M ,18, IS

執行結果如下:

插入的數據只初始化部分值

設置了 not null 那一列 必須要賦值,而且表名字不區分大小寫。

insert into student(sname,sage) values (一口 ,19);

查看表

用 SELECT 語句查看表中的內容:

SELECT * FROM STUDENT;

其中的 * 表示查看所有的數據信息。

有沒有看到,結果看起來不舒服啊,下面我們來調整下顯示格式:

sqlite  .headers on  顯示列名  sqlite  .mode column  列對齊

刪除一行信息

delete from student where sname= 一口

由上圖可見,名字為“一口”的那條記錄被刪除了。

修改一條記錄的某個內容

UPDATE student SET sage=29 WHERE sname= 張立

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

修改數據表結構。

修改表結構,需要用到語句 ALTER  TABLE。下面我們向 STUDENT 表增加“spwd”列,其數據類型為 TEXT 型,用 SELECT 命令查看表中內容。

ALTER TABLE STUDENT ADD spwd TEXT default  123456

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

修改表名字

alter table student rename to stu;

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

刪除數據表。

DROP TABLE STUDENT;

刪除列

sqlite3 沒有實現刪除一列的命令,要實現這個操作,需要先將該表拷貝到一個新表,但是只集成需要的列,要刪除的列不繼承過來。可以   用以下方式操作刪除一列:

sqlite  create table test as select sno, sname,ssex,sage,sdept from stu; sqlite  drop table stu; sqlite  alter table test rename to stu;

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

由上圖可知,我們剛才增加的列 spwd 被刪除了。

sqlite 進階

where 子句

如果我不想查看所有的數據,而指向查看某一個人的信息要怎么操作呢? 我們就要借助 where 子句來實現。where 子句可以結合操作語句來進程增刪改查,是最常用的一個子句。

根據姓名查找記錄:

Select * from student where sname= 一口

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

根據學號查找記錄:

Select * from student where sno=95001;

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

根據姓名和年齡同時查找記錄:

select *from student where sname= 一口  and sage=19;

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

顯示某兩列的數據

select sno,sname from student ;

嵌入式數據庫 Sqlite3 之如何使用基本的命令操作

數據庫的備份和恢復

現在我們假設要將表 foods 備份出為 foodsdb.sql,并用命令回復該數據庫。按照以下步驟操作即可。

sqlite .dump – 把創建表及向表中插入記錄的所有 SQL 語句顯示在屏幕上 sqlite .output foodsdb.sql  – 指定 dump 命令輸出到文件的文件名 sqlite .dump  – 輸出創建并插入數據到基本表的 SQL 語句到 output 指定的文件 sqlite .output stdout  – 恢復輸出內容到標準輸出設備(屏幕)sqlite .dump – 此時輸出的 SQL 語句轉回到屏幕 sqlite Drop table foods;  – 刪除 foods 表語句說明:

上述 Drop 為 SQL 語句,用于刪除指定的表。因為是 SQL 語句,因此以“;”結尾

sqlite .dump -- 把創建表及向表中插入記錄的所有 SQL 語句顯示在屏幕上  sqlite .output foodsdb.sql -- 指定 dump 命令輸出到文件的文件名  sqlite .dump -- 輸出創建并插入數據到基本表的 SQL 語句到 output 指定的文件  sqlite .output stdout -- 恢復輸出內容到標準輸出設備(屏幕) sqlite .dump -- 此時輸出的 SQL 語句轉回到屏幕  sqlite Drop table foods; -- 刪除 foods 表語句說明:

到此,關于“嵌入式數據庫 Sqlite3 之如何使用基本的命令操作”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計5505字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 慈溪市| 虎林市| 塘沽区| 乌什县| 咸丰县| 修武县| 安图县| 侯马市| 凉城县| 保定市| 田东县| 罗山县| 临西县| 万宁市| 衢州市| 子长县| 塔河县| 德令哈市| 资溪县| 秦安县| 阿拉善左旗| 宝丰县| 麟游县| 霍邱县| 阳谷县| 宾川县| 体育| 深州市| 库车县| 定西市| 班玛县| 三河市| 阿瓦提县| 浦江县| 托克托县| 阿拉尔市| 雷山县| 昌乐县| 平湖市| 财经| 合山市|