Android 数据库使用

释放双眼,带上耳机,听听看~!

Sqlite3 的数据类型

NULL  :相当于java中的null
INTEGER :带符号的整形,类似于java中的int型
REAL :浮点数字。类似java中的float或double型。
TEXT/VARCHAR :字符串文本。相当于java中的string类
BLOB :二进制对象。相当于java中的

Sqlite3中的约束

Sqlite3约束:就是限制数据库字段的条件。
例如某个表中的age字段不能为空,那就可以这么写age INTEGER NOT NULL

  NOT NULL :非空
UNIQUE : 唯一
PRIMARY KEY :主键
FOREIGN KEY : 外键
CHECK :条件检查
DEFAULT : 默认

创建表

语法:
create table tabname(col1 type1 [not null][primary key], col2 type2[not null], ··· )
注:
tabname为表名
col1、col2为字段名字
type1、type2为字段类型
在[]中的约束条件是可以选的

例如:

字段名       类型            长度           约束            说明
id        INTEGER                       主键,自增长       编号
name      VARCHAR           20            非空            姓名
cid       INTEGER                                        所在班级
age       INTEGER                      大于18且小于60     年龄
gender    BIT                          默认为1,表示男     性别
score     REAL                                           成绩
create table student(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20) NOT NULL,
cid INTEGER,
age INTEGER CHECK(age>18 and age<60),
gender BIT DEFAULT(1),
score REAL);
注:SQL中不区分大小写

insert插入语句

语法

insert into tabname(field1,field2) values(values1,values2)
在tabname表中的field1和field2字段中,分别插入values1和values2的值。

例如:

给student表的字段中插入值
insert into student (name,age) values('fneg',23);

update更新

语法

 update table set field1=value1 where 范围
语法 : set后面是某个字段和要更改的值,where表示限定field1字段值value在某个范围内才修改。
set: 表示要修改的字段和值
where:表示修改字段值得范围

例如

update table set name='fengxing' where name='Tom'
解释 更细Table表中 字段name值为Tom,更改为fengxing。

selecte查询语句

语法

 select * from table where 范围
*代表通配符,表示表中的所有的字段。
select field1,field2,field3 where 范围
查询字段field1,field2,field3的信息。

例如

select select * from student where name="jack"
查询student表中名字叫jack的所有字段的信息
select id, name, score from student;
查询student表中所有学生的编号、名字、分数

限制查询
LIMIT 关键字

  select * from table1 LIMIT 5
查询table1中前5行中的数据,LIMIT关键字后面加数字可限定返回多少条数据

OFFSET关键字

select * from table LIMIT5 OFFSET 5
查询table表中从第五行起的5行数据。OFFSET前面必须有LIMIT限定

例子:

例子:
select * from student limit 5;
查询table1中前5行中的数据
select * from limit 5 offset 5;
查询table1中从第5行起的5行数据

排序查询
语法

select * from student where order by name ASC;
查询table1中所有数据,然后按照col1字段的升序排列(A-Z, 0-9)
select * from student where order by name ,age ;
查询table1中所有数据,然后按照name字段的升序排列,然后按照age升序排列。
select * form student where order by age DESC;
默认写法
select * from student where order by age;

where过滤语句

注:当ORDER BY关键字和where一起使用的时候,ORDER BY应该位于where后面,否则会报错。

例子:
select * from student where score>70.0 ORDER BY name;
查询student表中成绩大于70分的数据,同时按照名字升序排列
高级过滤:
AND关键字:必须满足前后两个条件的数据
select * from student where score>60 and score< 100;
查询student表中成绩大于60分并且小于100分的数据
OR关键字:只要满足前后任意一个条件即可
select * from student where score>90 or score<70;
查询student表中成绩大于90分并且或者小于70分的数据
AND和OR连用(and的优先级比or要高,两者连用的时候最后在各自的条件中添加圆括号()进行分组)
select * from student where (score>90 or score<70) and (age>19);
BETWEEN关键字:
select * from student where score between 70 and 80;
查询student表中分数在70至80分之间的数据
IN关键字:用于指定范围,范围中的每个条件都进行匹配,IN由一组逗号分隔、括在圆括号中的合法值
select * from student where name in('tom', 'Denesy');
查询student表中名字为tom和Denesy的数据
注:在指定要匹配值得清单的关键字中,IN和OR功能相当
IN可与and和or等其他操作符使用
IN操作符比一组OR操作符执行快
可以包含其他的SELECT语句
NOT关键字:否定其后条件的关键字
select * from student where not name='tom';
获取不包含名字为tom的信息
select * from student where not score>80;
获取分数不是大于80分的信息
空值检查:
select * from student where score is not null;
查询student表中score字段不为空的信息

delete 删除语句

delete from table1 where 范围
语法详解:从table中删除某一范围内的数据(只能一条一条的删除,不能删除某个字段中的值)
注:不要漏掉where,否则会清空整个表中的信息
  delete from student where name='tom';
从student表中删除名字为tom的信息
delete from student where score< 90;
从student表中删除分数小于90分的信息

Android中 数据库的操作

columns 需要查询的字段,全部查询就写null,部分就写new String[]{"id","name","sex"}
selection 查询条件,where后的条件语句,不带内容 例如:id>? and name=?
selectionArgs 查询条件对于的内容 例如:{"10","xiaoming"}
groupBy 分组
having 分组的过滤条件
orderBy 排序,例如 "id asc"(desc-降序 asc-升序)
limit 查询显示的条数(分页,可以不写,默认全部显示)
例如"100"(前100条数据),
也可以只取 前4条,例如"0,4"(从第1条数据开始取,取4条数据,下标从0开始)。
例如"3,4"(从第4条数据开始取,取4条数据)

创建表

public class MyDatabaseHelper extends SQLiteOpenHelper {
// 创建Book数据表语法
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "bookname text)";
// 通过构造方法创建数据库,其中name为数据库名称
public MyDatabaseHelper(Context context, String name) {
super(context, name, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 执行创建数据表的语法
db.execSQL(CREATE_BOOK);
}
···
}

COUNT用法

COUNT语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

COUNT() 语法
COUNT(
) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

人已赞赏
Android文章

Android开发使用RecyclerView实现底部翻页的操作方法

2020-2-3 8:07:00

Android文章

Android开发实现大图片拖拽和缩放

2020-2-3 10:01:55

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索