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>