sqlite 數據庫簡單了解

iOS 開發中 sqlite 數據庫也是一個不錯的選擇,那么就需要掌握一些基本的數據庫知識。

建表

CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY, name text NOT NULL, age integer NOT NULL);

刪表

DROP TABLE t_student;

INSERT INTO t_student (name, age) VALUES (?,?);

delete from t_student where id = ?;

update t_student set name = ? where name = ?

select * from t_student;// 全部查詢
select * from t_student where id<?;// 根據條件查詢,視業務而定

字段類型

sqlite 采用的是動態數據類型,會根據存入值自動判斷,具有以下五種數據類型:
1.NULL:空值。
2.INTEGER:帶符號的整型,具體取決于存入數字的范圍大小。
3.REAL:浮點數字,存儲為8-byte 浮點數。
4.TEXT:字符串文本。
5.BLOB:二進制對象。

但實際上,sqlite3 也接受如下的數據類型:
smallint 16 位元的整數。
integer 32 位元的整數。
decimal(p,s) p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點后有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
float 32位元的實數。
double 64位元的實數。
char(n) n 長度的字串,n 不能超過 254。
varchar(n) 長度不固定且其最大長度為 n 的字串,n 不能超過 4000。
graphic(n)char(n) 一樣,不過其單位是兩個字元 double-bytes, n 不能超過 127。這個形態是為了支援兩個字元長度的字體,例如中文字。
vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n 不能超過 2000
date 包含了 年份、月份、日期。
time 包含了 小時、分鐘、秒。
timestamp 包含了 年、月、日、時、分、秒、千分之一秒。
datetime 包含日期時間格式,必須寫成 2010-08-05 不能寫為 2010-8-5,否則在讀取時會產生錯誤!

char、varchar、text 和 nchar、nvarchar、ntext 的區別

1、CHAR 存儲定長數據,索引效率極高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充。

2、VARCHAR 存儲變長數據,但存儲效率沒有CHAR高。。VARCHAR類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用于保存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、TEXT 存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。

4、NCHAR、NVARCHAR、NTEXT 存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。
nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。
所以一般來說,如果含有中文字符,用nchar/nvarchar,如果純英文和數字,用char/varchar

利用終端簡單操作數據庫

作為一個移動開發人員使用 navicat 太重了,很多時候終端就可以完美滿足需求。

開啟數據庫

sqlite3 /Users/Barney/Desktop/AYDataBase.sqlite

查看所有的表
.tables

查看建表語句
.schema

完整例子

Last login: Mon May 15 14:59:50 on ttys002
iMac:~ Barney$ sqlite3 /Users/Barney/Desktop/AYDataBase.sqlite
SQLite version 3.16.0 2016-11-04 19:09:39
Enter ".help" for usage hints.
sqlite> .tables
OneModel
sqlite> .schema
CREATE TABLE OneModel (addid INTEGER PRIMARY KEY AUTOINCREMENT,age Text (1024),name Text (1024));
sqlite>

參考資料:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容