美文网首页
Android 数据库知识点总结

Android 数据库知识点总结

作者: Chenstyle | 来源:发表于2016-06-15 16:00 被阅读311次

    注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/<package name>/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 数据库知识点总结

          本文链接:https://www.haomeiwen.com/subject/xqkpdttx.html