/** 创建表*/
CREATE TABLE IF NOT EXISTS table_student (
primaryId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name TEXT NOT NULL,
age INTEGER,
height REAL,
createTime datetime default (datetime('now', 'localtime')),
updateTime datetime default (datetime('now', 'localtime')),
kv BLOB
);
/** 删除表*/
DROP TABLE table_student;
/** 删除表中所有数据*/
DELETE FROM table_student;
/** 表新增列/表重命名*/
ALTER TABLE table_student
ADD COLUMN school TEXT;
ALTER TABLE table_student
ADD COLUMN school TEXT DEFAULT '默认值' NOT NULL;
ALTER TABLE table_student
RENAME TO new_table_student;
/** 增*/
INSERT INTO table_student(name, age, height)
VALUES ('zhangsan', 15, 1.63);
INSERT INTO first_table_name(column1, column2, ... , columnN)
SELECT column1, column2, ..., columnN FROM second_table_name;
/** 删*/
DELETE FROM table_name WHERE {CONDITION};
/** 改*/
UPDATE table_name
SET column1 = value1, column2 = value2, ..., columnN = valueN
WHERE {CONDITION};
UPDATE table_student
SET name = 'fuck', age = 25, updateTime = datetime('now', 'localtime')
WHERE name = 'lisi';
/** 查*/
SELECT COUNT(*) FROM table_name WHERE {CONDITION};
/** 查询表中column_name字段对应值非NULL的数量*/
SELECT COUNT(column_name) FROM table_name WHERE {CONDITION};
/** 1.查询表中所有数据*/
SELECT * FROM table_student;
/** 2.查询表中name以‘li’开头的所有数据,大小写敏感
星号(*)代表零个、一个或多个数字或字符;
问号(?)代表一个单一的数字或字符
*/
SELECT * FROM table_student WHERE name GLOB 'li*';
/** 3.查询表中name以‘li’开头的所有数据,大小写不敏感
百分号(%)代表零个、一个或多个数字或字符;
下划线(_)代表一个单一的数字或字符
*/
SELECT * FROM table_student WHERE name LIKE 'li%';
/** 4.查询所有在数据库中创建的表*/
SELECT tbl_name
FROM sqlite_master
WHERE type = 'table';
/** 5.查询表完整信息(如:创建表sql语句)*/
SELECT sql
FROM sqlite_master
WHERE type = 'table'
AND tbl_name = 'table_student';
/** 6.获取当前本地时间*/
SELECT datetime('now', 'localtime');
/** 7.Limit子句限制由SELECT语句返回的数据数量*/
SELECT * FROM table_name LIMIT 10;
SELECT * FROM table_name LIMIT 10 OFFSET 10;
/** 8.ORDER BY子句是用来基于一个或多个列按升序或降序顺序排列数据*/
SELECT *
FROM table_name
WHERE conditions
ORDER BY column1, column2, ..., columnN
{ASC|DESC};
/** 9.GROUP BY子句用于与SELECT语句一起使用,来对相同的数据进行分组
GROUP BY子句放在WHERE子句之后,放在ORDER BY子句之前
*/
SELECT *
FROM table_name
WHERE conditions
GROUP BY column1, column2, ..., columnN
ORDER BY column1, column2, ..., columnN;
/** 10.HAVING子句允许指定条件来过滤将出现在最终结果中的分组结果
HAVING 子句必须放在GROUP BY子句之后,必须放在ORDER BY子句之前
*/
SELECT *
FROM table_name
WHERE conditions
GROUP BY column1, column2
HAVING conditions
ORDER BY column1, column2;
SELECT * FROM table_student
GROUP BY name
HAVING count(name) > 2;
/** 11.DISTINCT关键字与SELECT语句一起使用,来消除所有重复的记录,并只获取唯一一次记录*/
SELECT DISTINCT column1
FROM table_name
WHERE [condition];
SELECT DISTINCT name FROM table_student;
/** 获取时间*/
/** 获取当前月最后一天*/
SELECT date('now','start of month','+1 month','-1 day');
/** 当前的UNIX时间戳(即从1970-01-01 00:00:00算起的秒数)
%s 从1970-01-01 00:00:00算起的秒数
*/
SELECT strftime('%s','now');
/** 当前本地时间(2017-12-28 15:42:30)*/
SELECT datetime('now', 'localtime');
iOS sqlite3语句学习
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、SQLite3 SQLite是iOS开发普遍用的数据库,占用资源非常少 ,最初设计目标是用于嵌入式系统,在嵌入...
- 献给一起学习的小伙伴 做OC开发也快2年了,最近公司要求Swift来开发,组里的小伙伴就叫我整理个资料给他们,所以...