Android 数据库知识点总结

注0:本文也同样整理于 6 月 13 日
注1:去年我最怕的两个知识点是多线程和数据库,而现在,我虽然都能使用了,但是,应届生简历怎么没人回 QAQ

  • Android 数据库知识点总结
    SQLite 基础知识
    概述
    轻量型的数据库,被广泛使用在多个操作系统平台上。优势在于 Android SDK 集成。解决方案繁多。
    Android 还可以使用其他第三方数据库,例如,db4o 面向对象数据库
    SQLite 数据库如何查询表 table1 的第 20 条到第 30 条记录。
    查询语句:select * from table1 limit 19, 11
    插入表数据,如果存在则更新,不存在则正常插入语句
    replace into table1(id, name) value(1, 'bill');
    复制 table1 表结构的数据到 table2 上
    cerate table table2 as select * from table1
    创建视图的 SQL 语句
    创建视图(查询 table1 表的所有记录)
    create view if not exists view1 as select * from table1
    SQLite 函数
    核心函数
    abs(X) 函数的返回值
    abs 函数会自动尝试将当前字段值转换为整形,再取绝对值。
    但考虑到 X 未取实际值,所以有以下几种情况
    - X 为正值和 0 ,执行后返回 X 本身
    - X 为负值, 返回 X 的绝对值
    - X 为 NULL , 返回 NULL

              - X 为字符串、Blob 等不能转换为数值的类型,返回 0 。 Tips:如果为数值字符串,则按数值处理
              - X 的值超出 64 位整数值范围,抛出一个溢出错误
          获取最近一次执行 SQL 语句所影响的记录行数
              使用 changes 函数
              insert into table1 values(1, 'bill');
              -- 返回 insert 语句影响的记录行数
              select changes();
          查询一张表中需要的字段
              select coalesce(name, id) as value from table1
              除了使用 coalesce 函数外,如果只查询两个参数,还可以用 ifnull 函数
              select ifnull(name, id) as value from table1
          length(X) 函数返回值
              - X 是字符串类型的值, 返回字符串包含的字符数
              - X 是 Blob 类型的值, 返回二进制数据中包含的字节数
              - X 为 NULL, 返回 NULL
              - X 是整数值, 将 X 作为字符串处理,例如,length(123) 的值是 3
          使用 like 子句和 like 函数查询 table1 中 name 字段值包含 bill 的记录
              函数
                  select * from table1 where like ('%bill%', name)
              SQL 语句
                  select * from table1 where name like '%bill%'
          nullif(X, Y) 函数的用法
              当 X 和 Y 不同, 返回 X, 相同,返回 NULL
              例子
                  select nullif(20, 30) 输出 20
                  select nullif(20, 20) 输出 NULL
          substr 函数的用法
              用于截取字符串的子字符串。substr(原字符串, 截取位置(从1开始数), 截取长度)
              例子
                  str = "abcdefg"
                  select substr(str, 2) 结果:bcdefg
                  select substr(str, 2, 3) 结果:bcd
                  select substr(str, -2) 结果:fg    Tips:负数表示从后面往前面数
                  select substr(str, -6, -3) 结果:bcd   如果最后一个值为负数,会取绝对值
          获取当前字段的数据类型
              使用 typeof 函数
              select typeof(field1) from table1;
      日期和时间函数
          SQLite 支持的时间函数
              五个 date time datetime julianday strftime
          使用 date 函数和调节器修改要输出的日期
              select date('2012-11-01', '-1 years', '+1 months');
          当前日期 2011-07-02 执行下面语句的输出与解释
              SELECT date('now', 'start of month', '+1 month', '-1 day');
              start of month 会将日期变为 2011-07-01
              +1 month 转为 2011-08-01
              -1 day 转为 2011-07-31
          输出当前时间的 SQL 语句
              SELECT date('now');
          下面 SQL 语句的输出结果
              SELECT time('12:33:33', '-2 minutes');
              结果:12:31:33
          关于 UTC 时间查询,下面查询语句中的时间为 北京时间
              SELECT datetime('2011-01-02 01:01:01', 'utc');
              UTC 时间比北京时间晚 8 小时
              输出:2011-01-01 17:01:01
          输出当前时间至 1970-01-01 的秒数
              SELECT strftime('%s', 'now');
          关于 SQLite 支持的格式置换符
              %d 两位的日。如果不足两位,前面补 0
              %f 形如 SS.SSS 的秒。后面的 SSS 表示毫秒
              %H 24 进制的小时
              %j 一年中的第几天(001 - 366)
              .......
              如果想了解的话,请自行查询
      聚合函数
          函数 avg(X) 的计算规则
              此函数为计算平均值
              X 为 NULL 时,X 不参与计算平均值
              X 为 String 或 BLOD 时, 如果可以转换成数值,正常计算其平均值。如果不能,X 当做 0 处理
              所有参与统计平均值的字段值都为 NULL 时, avg 函数返回 NULL
          计算表中一个字段 name 的平均数
              SELECT avg(name) from table1
          将表中一个字段连接起来,中间用分号(;)隔开
              SELECT group_concat(name, ';') from table1
    

    在 Android 中使用 SQLite
    SQLiteOpenHelper.onCreate 和 SQLiteOpenHelper.onUpgrade 方法在什么情况下执行
    主要负责数据库的创建和升级
    - 如果数据库文件不存在,会调用 onCreate 方法。
    - 如果数据库文件存在,并且当前的版本号高于上次创建或升级时的版本号,则会调用 onUpgrade 方法。
    从数据库表中查询所有记录,并显示在 ListView 组件中
    使用 Cursor 对象装载查询出来的数据,如果需要的话,可以用 List 进行装载。
    数据库文件存储路径
    保存在 /data/data//databases 目录下
    Android 支持的打开或创建 SQLite 数据库的方式
    - 1 SQLiteOpenHelper 类
    - 2 Context.openOrCreateDatabase 方法
    - 3 SQLiteDatabase.openOrCreateDatabase 方法
    将带数据的 SQLite 数据库与 apk 程序一同发布
    不能直接操作,所以通常的做法将数据库放在 assets 或 res/raw 目录中,这两个目录中的资源文件不会被编译。
    在程序第一次启动的时候把数据库文件复制到应用存储空间,或者 SD 目录中。
    面向对象数据库:db4o
    概述
    一个嵌入式的开源面向对象数据库,基于对象,操作的数据本身就是对象。
    对象的持久化需要一个映射文件将关系型数据库与对象进行关联,使用起来麻烦,无法处理复杂的问题。
    特征
    - 对象以其本身方式来存储,没有错误匹配问题
    - 自动管理数据模式
    - 存储时不改变类特征,使之易于存储
    - 与 Java 和 .Net 无缝绑定
    - 自动数据绑定
    - 使用简单,只需要一个 jar(Java) 或 dll (.Net) 文件即可
    - 一个数据库文件。这一点与 SQLite 相同
    - 直接通过对象实例查询
    总结
    如果要使用的话,可以自己去看哦。。

你可能感兴趣的:(Android 数据库知识点总结)