SQLite 使用
//添加列
"AlTER TABLE User ADD COLUMN sync_state integer NOT NULL DEFAULT 1"
//創建表
"CREATE TABLE IF NOT EXISTS 'localuser' ('uid' INTEGER NOT NULL PRIMARY KEY autoincrement,'user_name' TEXT , 'class_name' TEXT, 'face_code' TEXT, 'card_id' TEXT,'reader_id' TEXT NOT NULL,'sync_state' INTEGER NOT NULL DEFAULT 0)"
//創建索引
"CREATE INDEX index_User_face_code ON User (face_code)"
//創建唯一索引 CREATE UNIQUE INDEX INDEX_NAME ON table_name(column_name)
"CREATE UNIQUE INDEX index_User_face_code ON User (face_code)"
//刪除表 DROP TABLE TABLE_NAME
"DROP TABLE User"
關係表
ON DELETE
ON UPDATE
外鍵的ON DELETE和 ON UPDATE 可以用來配置 當從父表中刪除某些行時發生的行爲(ON DELETE). 或者修改存在的行的父鍵的值, 發生的行爲(ON UPDATE)
NO ACTION: 當父鍵被修改或者刪除時, 沒有特別的行爲發生
RESTRICT: 存在一個或者多個子鍵對應於相應的父鍵時, 禁止刪除(ON DELETE RESTRICT)或者修改(ON UPDATE RESTRICT) 父鍵
RESTRICT與普通的外鍵約束的區別是, 當字段(field)更新時, RESTRICT行爲立即發生
SET NULL: 父鍵被刪除(ON DELETE SET NULL) 或者修改 (ON UPDATE SET NULL)
SET DEFAULT: 類似於SET NULL
CASCADE: 將實施在父鍵上的刪除或者更新操作,傳播給與之關聯的子鍵.
ON DELETE CASCADE 級聯刪除
ON UPDATE CASCADE 級聯更新
當更新或刪除主鍵表時,那麼外鍵表也會跟隨一起更新或刪除
約束
使用SQLite建表,通常會使用id
作爲唯一標示,使用PRIMARY KEY
與AUTOCREMENT
進行修飾
而主鍵是不可以重複的。但是在這張表中還有其他的Column也不允許重複,則可以使用Unique約束
常用的約束有:
-
Unique:確保該列中的所有值是不同的
-
Not Null:確保被該約束脩飾的列不會有NULL(空)值
-
Default:當該字段沒有值時,使用默認值填充
-
Primary Key:唯一標識表中的各行數據,不會重複
-
Check:確保該列的值都滿足條件,如果不滿足,則無法插入
下面的 SQLite 創建一個新的表 COMPANY,並增加了五列。在這裏,我們爲 SALARY 列添加 CHECK,所以工資不能爲零: CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL CHECK(SALARY > 0) );
在 SQLite 中,ALTER TABLE 命令允許用戶重命名錶,或向現有表添加一個新的列。重命名列,刪除一列,或從一個表中添加或刪除約束都是不可能的
參考:https://www.cnblogs.com/xgcblog/archive/2011/08/25/2152918.html
https://www.jianshu.com/p/e2b946dc1374
https://www.sqlite.org/foreignkeys.html
https://www.runoob.com/sqlite/sqlite-data-types.html