最新版本的 Mac OS X 会预安装 SQLite, 使用sqlite3查看当前版本.
打开终端
/**
* 创建一个数据库
*/
sqlite3 DatabaseName.db
/**
* CREATE TABLE 是告诉数据库系统创建一个新表的关键字
* IF NOT EXISTS 判断是否存在该表(不是必须条件)
* Person 表名
* (字段1 属性, 字段2 属性) 表的字段属性
*/
CREATE TABLE IF NOT EXISTS Person(字段1 属性, 字段2 属性);
/**
* 删除表
*/
DROP TABLE 表名;
/**
* 给已创建的表添加字段, 只能添加新的字段, 但是却不能删除字段
*/
ALTER TABLE 表名 add 字段 字段属性;
/**
* 添加一条数据
*/
--第一种方法
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
--这种方式可指定添加数据的字段
--第二种方式
--如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
/**
* 查询数据, 查找该表中的所有数据, 一般不要这样写, 这样写语义太模糊, 不利于团队合作与维护代码
*/
SELECT * FROM 表名;
--最好这样写
SELECT 字段1, 字段2, 字段N FROM 表名;
--这样写对于要查询的字段一目了然
/**
* 更新数据
*/
UPDATE 表名
SET 字段1 = value1, 字段2 = value2...., 字段N = valueN
WHERE [condition];
e.g :
UPDATE Person SET name = '阿飞' WHERE id = 1;
/**
* 删除数据
*/
DELETE FROM 表名
WHERE [condition];
e.g :
DELETE FROM Person WHERE id = 1;
设置别名
--首先, 这两张写法效果是一样的
SELECT NAME FROM Person;
SELECT Person .NAME FROM Person;
/**
* AS作为关键词来设置Person的别名为p
*/
SELECT p.name, p.id FROM Person AS p;
<==> SELECT name, id FROM Person;
数据分页
/**
* LIMIT 数据量 offset 位置
* LIMIT 2 offset 1 , 表示从索引值1开始, 返回2条数据
*/
SELECT * FROM Person LIMIT 2 offset 1;
--次返回两条数据
SELECT * FROM Person LIMIT 2;
UNION 操作符
SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
--SQL UNION 语法
SELECT 字段 FROM 表1
UNION
SELECT 字段 FROM 表2;
--默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
--SQL UNION ALL 语法
SELECT 字段 FROM 表1
UNION ALL
SELECT 字段 FROM 表2;
--UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
e.g:
sqlite> select name from class
...> union all
...> select name from person;
备份表
1.两个表的数据结构一样
第一步. 首先创建一个需要备份的表
--使用以下语句来拷贝表结构
CREATE TABLE 新表 AS SELECT * FROM 旧表
或者
--创建一个表.
CREATE TABLE 新表 (字段1, 字段2);
第二步, 拷贝数据
insert into 新表 select * from 旧表;
2.如果两个表的数据结构不一样则
第一步, 首先创建一个表
CREATE TABLE 新表 (字段1, 字段2);
第二步
insert into 新表 select 字段1, 字段2 from 旧表;
导出数据库
sqlite3 test.db .dump > test.sql
通过sql文件恢复数据库
--首先创建一个新的数据库文件
sqlite3 aNew.db;
--恢复
sqlite3 aNew.db < test.sql