在移动开发中,经常会使用数据库,而在移动开发中使用的SQLite轻量级的数据库。
1.创建表
$ CREATE TABLE 表名 (字段名1 字段类型,表名2 字段类型,... );
# 加上IF NOT EXISTS,创建表时如果存在就不创建,不会报错
$ CREATE TABLE IF NOT EXISTS 表名 (字段名1 字段类型 , 表名2 字段类型,... );
# 示例
$ CREATE TABLE IF NOT EXISTS t_shop (name text , price real);
2.刪表
$ DROP TABLE 表名;
$ DROP TABLE IF EXISTS 表名;
# 示例
$ DROP TABLE IF EXISTS t_shop;
3.插入数据
$ INSERT INTO 表名(字段1 , 字段2 ,...) VALUES (字段1的值 , 字段2的值 ,...);
# 示例
$ INSERT INTO t_shop(name , price) VALUES ('娃哈哈',2.0);
# 注意,数据库中的字符串应该用单引号'括住!!!
4.更新数据
$ UPDATE 表名 SET 字段1 = 字段1的值 , 字段2 = 字段2的值 ,...;
# 示例
$ UPDATE t_shop SET name = '农夫山泉' , price = 3.0;
# 注意:上面的示例会将t_shop里面所有记录的name都改成农夫山泉,price都是3.0!!!
5.删除数据
$ DELETE FROM 表名;
# 示例
$ DELETE FROM t_shop;
# 注意:上面的示例会删除t_shop所有的记录!!!
6.条件语句
$ WHERE 字段 = 某个值; // 不能用两个=
$ WHERE 字段 is 某个值; // is相当于=
$ WHERE 字段 != 某个值;
$ WHERE 字段 is not 某个值; // is not相当于!=
$ WHERE 字段 > 某个值;
$ WHERE 字段1 = 某个值 AND 字段2 > 某个值; // AND相当于C语言中的&&
$ WHERE 字段1 = 某个值 OR 字段2 > 某个值; // OR相当于C语言中的 |
# 示例
# 将t_shop表里记录price等于2.0的名称改为农夫山泉
$ UPDATE t_shop SET name = '农夫山泉' WHERE price = 2.0;
7.查询语句
$ SELECT 字段1 , 字段2 ,... FROM 表名;
$ SELECT * FROM 表名; // 查询所有的字段
# 示例
$ SELECT * FROM t_shop;
$ SELECT name , price FROM t_shop;
$ SELECT * FROM WHERE price = 3.0; // 条件查询
8.起别名
$ SELECT 字段1 别名 , 字段2 别名 , ... FROM 表名 别名;
$ SELECT 字段1 别名 , 字段2 AS 别名 , ... FROM 表名 AS 别名;
$ SELECT 别名.字段1 , 别名.字段2 , ... FROM 表名 AS 别名;
# 示例
$ SELECT name myname , price myage FROM t_shop;
# 给name起个叫myname的别名,给price起个叫myprice的别名
$ SELECT s.name , s.price FROM t_shop s;
# 给t_shop起个别名s,用s来引用表中的字段
9.计算记录的数量
$ SELECT COUNT [字段] FROM 表名;
$ SELECT COUNT [*] FROM 表名;
# 示例
$ SELECT COUNT [name] FROM t_shop;
$ SELECT COUNT [*] FROM t_shop;
10.排序
查询出来的结果可以用order by进行排序
$ SELECT * FROM t_shop ORDER BY 字段;
$ SELECT * FROM t_shop ORDER BY price;
默认是按照升序排序(由大到小),也可以变为降序(由小到大)
$ SELECT * FROM t_shop ORDER BY price DESC; // 降序
$ SELECT * FROM t_shop ORDER BY price ASC; // 升序(默认)
# 多个字段进行排序
$ SELECT * FROM t_shop ORDER BY price ASC , name DESC;
11.limit限制
使用limit可以精确的控制查询结果的数量,比如每次只查询10条数据,做分页
$ SELECT * FROM 表名 LIMIT 数值1 , 数值2;
# 跳过前面4条记录,取8条记录
$ SELECT * FROM t_shop LIMIT 4 , 8;
# 取最前面4条记录
$ SELECT * FROM t_shop LIMIT 4;
12.约束
建表时给特定的字段设置一些约束条件,常见的约束有
$ not null :规定字段的值不能为null
$ unique :规定字段的值必须唯一
$ default : 规定字段的默认值
# 尽量给字段设定严格的约束性,以保证数据的规范性。
# 示例
$ CREAT TABLE t_student (id integer , name text not null unique , age integer not null default 1);
13.主键
解释:主键(Primary Key,简称PK)用来唯一的标识某一条记录,主键可以是一个字段或多个字段。
作用:良好的数据库编程规范应该保证每条记录的唯一性,每张表都必须有一个主键,用来标识记录的唯一性。
注意:1>主键应当是对用户没有意义的
2>永远也不要更新主键
3>主键不应包含动态变化的数据
4>主键应当由计算机主动生成
5>主键字段包含了not null 和 unique
$ create table t_student (id integer primary key , name text , age integer);
# 如果想要主键自动增长(必须是integer类型),应该增加autoincrement
$ create table t_student (id integer primary key autoincrement , name text , age integer);
14.外键
利用外键约束可以建立表与表之间的联系,外键的一般情况是:一张表的字段引用着另外一张表的主键字段。
# 新建一个外键
$ create table t_student (id integer primary key autoincrement , name text , age integer , constraint fk_student_class foreign key [class_id] references t_class[id]);
15.表连接查询
需要联合多张表才能查到想要的数据
表连接的类型
内连接:inner join 或者 join (显示的是左右表都有完整字段值的记录)
左外连接:left outer join (保证左表数据的完整性)
$ select s.name,s.age from t_student s, t_class c where s.class_id = c.id and c.name = ‘0316iOS’;