- 存在就插入,不存在则更新
//先进行插入操作,如果unique冲突,则执行replace操作,先delete后insert.会造成没有传入的字段恢复初始值
mDatabase.insertWithOnConflict(tablename, null,contentValues, SQLiteDatabase.CONFLICT_REPLACE);
//通过源码观察,等于执行了下面sql语句
insert or replace into table (colname,cloname....) values (value,value...)
- 在WHRER字句中规定查询多个值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
//例如,在Student表中查找小明和小红的age
SELECT age From Student WHERE name IN ('小明','小红')
- 计算某列的和
//计算某列的和
SELECT SUM(column_name) FROM table_name
//计算多列的和
SELECT SUM(column_name1 + column_name2 +...) FROM table_name
- 级联删除
/**将a表的某一字段设为外键,关联到b表的某一字段(b表的该字段必须唯一,如 primary key 或者 unique),添加级联删除功能。
即:删除a表下该字段则b表下相关联字段下的相等行会被删除。
用途:如联系人列表,如果某联系人被删除,则处在其他表中关于该联系人的信息也都应该被删除。
*/
FOREIGN KEY (b.colume2_name) REFERENCES a_table_name (a.colume1_name) ON DELETE CASCADE
注:由于sqlite默认关闭外键功能,所以每次在要进行外键操作前必须执行以下代码
//打开外键功能
mDatabase.execSQL("PRAGMA foreign_keys=ON");