Android Sqlite 增删改查语法

SQLite的数据类型

sqlite只有5中数据类型:

  NULL:空值相当于Java中的null
  INTEGER:带符号的整型,相当于Java中的int型
  REAL:浮点数字,相当于Java中float/double型
  TEXT/VARCHAR:字符串文本,相当于Java中String类
  BLOB:二进制对象,相当于Java中的byte数组,用于存放图片、声音等文件

SQLite的约束

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

SQLite的创建表

创建表,此时可对表里的结构和字段进行约束限定,将约束条件放在需要约束的字段之后

语法:
  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中不区分大小写

SQLite的insert插入语句

语法

insert into table1(field1, field2) values(value1, value2);
语法详解,在表名为table1的表的field1和field2字段分别插入value1和value2的值

例:

给student表中的各个字段插入值
insert into student (name, cid, age, gender, score) values ('tom', 1, 20, 1, 80.0);

注:其实可以在student后面不带有字段名,即name,cid···等,但如果不携带字段信息但看insert语句就无法直接明了的知道插入的value是给哪个字段赋值

SQLite的update更新语句

语法:

update table1 set field1=value1 where 范围
语法详解:set后面是某个字段要更改的值,where表示限定field1字段value值在某个范围内才需要修改
set表示要修改哪个字段的值
where表示修改字段值的范围

例:

 update student set name='jack' where name='tom';
 将student表中name字段中value为tom的值修改为jack

SQLite的select查询语句

语法:

基础查询:
    select * from table1 where 范围
    语法详解:* 代表通配符,即所有的字段
    select col1, col2, col3 from table1 where 范围;
    查看col1, col2, col3字段的信息

    例:

        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 table1 limit 5 offset 5;
 查询table1中从第5行起的5行数据,OFFSET前面必须有LIMIT限定

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

排序查询:

ORDER BY关键字
 select * from table1 order by col1;
 查询table1中所有数据,然后按照col1字段的升序排列(A-Z, 0-9)
  select * from table1 order by col1, col2;
  查询table1中所有数据,然后先按照col1字段的排列,然后按照col2字段排序

  例子:
      select * from student order by score;
      查询student中所有数据,然后按照score字段的升序排列
      select * from student order by name, score;
      查询student中所有数据,然后先按照name字段的排列,然后按照score字段排序

  DESC关键字
  select * from student order by name, score DESC;
  查询student中所有数据,然后先按照name字段的排列,然后按照name字段降序排序
  注:DESC为降序排序,即(Z-A,9-0),DESC是DESCENDING缩写。
      DESC必须跟着ORDER BY关键字后面;
      DESC关键字只应用在直接位于其前面的列名;
      与DESC相反的是ASC(即ASCENDING),在升序排序时可指定ASC,但这一关键字并没什么用处,因为升序是默认的

SQLite的delete删除语句

语法:

delete from table1 where 范围
语法详解:从table中删除某一范围内的数据(只能一条一条的删除,不能删除某个字段中的值)
注:不要漏掉where,否则会清空整个表中的信息

例:

  delete from student where name='tom';
  从student表中删除名字为tom的信息

  delete from student where score< 90;
  从student表中删除分数小于90分的信息

SQLite的where过滤语句

where是过滤语句,数据会根据where自居的搜索条件进行过滤,一般情况下where跟在insert、delete、update、select后面。这是一个需要值得注意的语句,使用它能够极大的提高查询数据库的效率,而使用delete语句如果不带上过滤语句,则会把数据表中的所有信息删除!

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

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分的数据

    ANDOR连用(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表中分数在7080分之间的数据

    IN关键字:用于指定范围,范围中的每个条件都进行匹配,IN由一组逗号分隔、括在圆括号中的合法值
    select * from student where name in('tom', 'Denesy');
    查询student表中名字为tom和Denesy的数据

    注:在指定要匹配值得清单的关键字中,INOR功能相当
    IN可与andor等其他操作符使用
    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字段不为空的信息

来至:http://www.jianshu.com/p/06309249f2a0

猜你喜欢

转载自blog.csdn.net/tongsiw/article/details/68959109