平时用到database的地方不多,这里记录一下shell终端下直接对db的基本操作!

撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40016701

一.概念:

sqlite3 为android所使用的轻量级数据库,小巧方便,用于管理android系统中的各种db文件,在ubuntu中能够安装sqliteman 来查看android系统中的db文件,Framework中的接口位置:/frameworks/base/core/java/android/database/sqlite/SQLiteDatabase.java

二.shell使用:

我使用的是ubuntu的minicom下的shell终端。以系统setting的database为例,文件夹为:/data/data/com.android.providers.settings/databases/setting.db

cd 到databases文件夹下。打开数据库文件:sqlite3 setting.db

  1. SQLite version 3.7.11 2012-03-20 11:35:50
  2. Enter ".help" for instructions
  3. Enter SQL statements terminated with a ";"
  4. sqlite>

能够看到SQL版本号,以及简单提示,使用SQL语句时须要以 “分号结尾!

sqlite3  *.db 打开数据库,假设存在就打开操作,假设不存在就创建,改动之后可以保存创建。

使用.help 查看帮助:

  1. .backup ?DB? FILE Backup DB (default "main") to FILE
  2. .bail ON|OFF Stop after hitting an error. Default OFF
  3. .databases List names and files of attached databases
  4. .dump ?TABLE?
  5.  
  6. ... Dump the database in an SQL text format
  7. If TABLE specified, only dump tables matching
  8. LIKE pattern TABLE.
  9. .echo ON|OFF Turn command echo on or off
  10. .exit Exit this program
  11. .explain ?ON|OFF?
  12.  
  13. Turn output mode suitable for EXPLAIN on or off.
  14. With no args, it turns EXPLAIN on.
  15. .header(s) ON|OFF Turn display of headers on or off
  16. .help Show this message
  17. .import FILE TABLE Import data from FILE into TABLE
  18. .indices ?TABLE?
  19.  
  20. Show names of all indices
  21. If TABLE specified, only show indices for tables
  22. matching LIKE pattern TABLE.
  23. .log FILE|off Turn logging on or off. FILE can be stderr/stdout
  24. .mode MODE ?TABLE? Set output mode where MODE is one of:
  25. csv Comma-separated values
  26. column Left-aligned columns. (See .width)
  27. html HTML <table> code
  28. insert SQL insert statements for TABLE
  29. line One value per line
  30. list Values delimited by .separator string
  31. tabs Tab-separated values
  32. tcl TCL list elements
  33. .nullvalue STRING Print STRING in place of NULL values
  34. .output FILENAME Send output to FILENAME
  35. .output stdout Send output to the screen
  36. .prompt MAIN CONTINUE Replace the standard prompts
  37. .quit Exit this program
  38. .read FILENAME Execute SQL in FILENAME
  39. .restore ?DB? FILE Restore content of DB (default "main") from FILE
  40. .schema ?TABLE? Show the CREATE statements
  41. If TABLE specified, only show tables matching
  42. LIKE pattern TABLE.
  43. .separator STRING Change separator used by output mode and .import
  44. .show Show the current values for various settings
  45. .stats ON|OFF Turn stats on or off
  46. .tables ?TABLE? List names of tables
  47. If TABLE specified, only list tables matching
  48. LIKE pattern TABLE.
  49. .timeout MS Try opening locked tables for MS milliseconds
  50. .vfsname ?AUX? Print the name of the VFS stack
  51. .width NUM1 NUM2 ... Set column widths for "column" mode
  52. .timer ON|OFF Turn the CPU timer measurement on or off
  53. sqlite> .help
  54. .backup ?DB? FILE Backup DB (default "main") to FILE
  55. .bail ON|OFF Stop after hitting an error. Default OFF
  56. .databases List names and files of attached databases
  57.  
  58. sqlite>
  59. sqlite>
  60. sqlite> .help
  61. .backup ?DB?
  62.  
  63. FILE Backup DB (default "main") to FILE
  64. .bail ON|OFF Stop after hitting an error. Default OFF
  65. .databases List names and files of attached databases
  66. .dump ?TABLE?
  67.  
  68. ... Dump the database in an SQL text format
  69. If TABLE specified, only dump tables matching
  70. LIKE pattern TABLE.
  71. .echo ON|OFF Turn command echo on or off
  72. .exit Exit this program
  73. .explain ?
  74.  
  75. ON|OFF? Turn output mode suitable for EXPLAIN on or off.
  76. With no args, it turns EXPLAIN on.
  77. .header(s) ON|OFF Turn display of headers on or off
  78. .help Show this message
  79. .import FILE TABLE Import data from FILE into TABLE
  80. .indices ?TABLE? Show names of all indices
  81. If TABLE specified, only show indices for tables
  82. matching LIKE pattern TABLE.
  83. .log FILE|off Turn logging on or off. FILE can be stderr/stdout
  84. .mode MODE ?TABLE? Set output mode where MODE is one of:
  85. csv Comma-separated values
  86. column Left-aligned columns. (See .width)
  87. html HTML <table> code
  88. insert SQL insert statements for TABLE
  89. line One value per line
  90. list Values delimited by .separator string
  91. tabs Tab-separated values
  92. tcl TCL list elements
  93. .nullvalue STRING Print STRING in place of NULL values
  94. .output FILENAME Send output to FILENAME
  95. .output stdout Send output to the screen
  96. .prompt MAIN CONTINUE Replace the standard prompts
  97. .quit Exit this program
  98. .read FILENAME Execute SQL in FILENAME
  99. .restore ?DB? FILE Restore content of DB (default "main") from FILE
  100. .schema ?
  101.  
  102. TABLE? Show the CREATE statements
  103. If TABLE specified, only show tables matching
  104. LIKE pattern TABLE.
  105. .separator STRING Change separator used by output mode and .import
  106. .show Show the current values for various settings
  107. .stats ON|OFF Turn stats on or off
  108. .tables ?
  109.  
  110. TABLE? List names of tables
  111. If TABLE specified, only list tables matching
  112. LIKE pattern TABLE.
  113. .timeout MS Try opening locked tables for MS milliseconds
  114. .vfsname ?AUX? Print the name of the VFS stack
  115. .width NUM1 NUM2 ... Set column widths for "column" mode
  116. .timer ON|OFF Turn the CPU timer measurement on or off

能够看到所支持的命令,当中经常使用的:

.database  显示数据库信息;包括当前数据库的位置

.tables  或者 .table 显示表名称 没有表则不显示

.schema  命令能够查看创建数据对象时的SQL命令;

.mode csv|column|insert|line|list|tabs|tcl   改变输出格式

默认情况,使用 select * from system 查看system表的所有数据:

  1. sqlite> select * from system;
  2. 1|volume_music|15
  3. 2|volume_ring|5
  4. 3|volume_system|7
  5. 4|volume_voice|4
  6. 5|volume_alarm|6
  7. 6|volume_notification|5
  8. 7|volume_bluetooth_sco|7
  9. ...

能够看到是列表的形式显示出来的,并且ID name value 都是以 “ | ” 分隔开来,切割符号由 .separator "X" 来定义。X即为切割符!

使用 .mode culumn 之后:

  1. sqlite> .mode column
  2. sqlite> select * from system;
  3. 1 volume_music 15
  4. 2 volume_ring 5
  5. 3 volume_syste 7
  6. 4 volume_voice 4
  7. 5 volume_alarm 6
  8. 6 volume_notif 5
  9. 7 volume_bluet 7

其他类似,都仅仅是为了 改变输出的格式而已。

1.创建指令:

  1. sqlite> .schema system
  2. CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
  3. CREATE INDEX systemIndex1 ON system (name);

创建的时候指定參数和属性,这里有三个,而且自增,关于数据类型:

NULL: 这个值为空值

INTEGER: 值被标识为整数,根据值的大小能够依次被存储为1,2,3,4,5,6,7,8个字节

REAL: 全部值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据,怎样输入就怎样存储,不改变格式.

2.插入数据:

  1. sqlite> .mode insert
  2. sqlite> select * from system;
  3. INSERT INTO table VALUES(1,'volume_music','15');
  4. INSERT INTO table VALUES(2,'volume_ring','5');
  5. INSERT INTO table VALUES(3,'volume_system','7');
  6. INSERT INTO table VALUES(4,'volume_voice','4');
  7. INSERT INTO table VALUES(5,'volume_alarm','6');
  8. INSERT INTO table VALUES(6,'volume_notification','5');
  9. INSERT INTO table VALUES(7,'volume_bluetooth_sco','7');

如我要在system表里面插入一条数据:

  1. insert into system values('45','sqlite','jscese');

这里插入数据要跟创建的时候数量要相应,不然会报:

Error: table table_name has * columns but * values were supplied

3.查询指定数据:

  1. sqlite> select * from system where name='sqlite';
  2. INSERT INTO table VALUES(45,'sqlite','jscese');

依据表类型值来筛选查询,这里表的属性有 _id ,name,value ,可在创建命令中看到!

4.删除数据:

  1. delete from system where value='jscese';

删除整个表:drop table table_name

5.更新表数据:

  1. 45|sqlite|jscese
  2. sqlite> update system set name='sqlite3' where value='jscese';
  3. sqlite> select * from system where value='jscese';
  4. 45|sqlite3|jscese

6.操作问题:

在使用SQL指令之后没有加 分号就 enter,会进入输入模式,这个时候再补上 一个 。 分号就可以:

  1. sqlite> select * from system
  2. ...> ;

我直接在minicom下使用 sqlite 无法识别 上下左右方向键,以及 回退键!

出现 ^[[A  ^H 这种乱码。

网上别人给出的。我没试过~http://ljhzzyx.blog.163.com/blog/static/3838031220102595026789/

本机终端adb shell 是能够识别 回退键的

一般退出sqlite3 使用 .quit

实在退不出   ...> 模式 就使用   ctrl+D  强退!

Android——sqlite3 基本命令操作的更多相关文章

  1. android sqlite3:数据库操作

    1. 修改表名: alter table notification rename to notification_test 2. 修改数据库名称: 3. 复制一个表的数据到另外一个表中(表的字段一致) ...

  2. Android开发之使用sqlite3工具操作数据库的两种方式

    使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/feng ...

  3. SQLite3命令操作大全

    SQLite3命令操作大全 SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.ql ...

  4. Linux sqlite3基本命令

    简介sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档. 备注:本文所有操作均在root用户下进行. 1.安装sqlite3 ubuntu下安装sqlit ...

  5. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  6. android管理联系人操作

    ContentProvider扩展之管理系统联系人 我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的 ...

  7. 【转】Android 使用ORMLite 操作数据库

    Android 使用ORMLite 操作数据库   用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...

  8. linux云计算集群架构学习笔记:rhel7基本命令操作

     1-3-RHEL7基本命令操作 1.1Linux终端介绍 Shell提示符 Bash Shell基本语法. 1.2基本命令的使用:ls.pwd.cd. 1.3查看系统和BIOS硬件时间. 1.4 L ...

  9. Linux高级运维 第三章 Linux基本命令操作

    3.1  Linux终端介绍.Shell提示符.Bash基本语法 3.1.1  登录LINUX终端 两种终端仿真器:1.GNOME桌面的GHOME Terminal : 2.KDE桌面的Konsole ...

随机推荐

  1. Maven学习总结(三):修改从Maven中心仓库下载到本地的jar包的默认存储位置

    一:修改从Maven中心仓库下载到本地的jar包的默认存储位置 从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home ...

  2. Android之NDK环境配置+JNI开发+so文件编译

    前言 这边Android作为日常记录,虽然破坏了文章队形~   最近人工智能挺火的,也稍微了解了一些库,比如关于视觉库openCV.要在安卓下调用这些C/C++库,需要用到JNI开发,在此把过程分享一 ...

  3. C# 后台解析json,简单方法 字符串序列化为对象,取值

    如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ...

  4. 微服务架构之spring cloud turbine

    在前面介绍了spring cloud hystrix及其hystrix dashboard,但都是对单个项目的监控,对于一个为项目而言,必定有很多微服务,一个一个去看非常的不方便,如果有一个能集中熔断 ...

  5. Django最佳实践(中文版)

    这是一份关于开发和部署 Django Web 框架 的动态文档 (会随时更新). 这些准则不应该被认为是 绝对正确 或 唯一 使用 Django 的方法, 应该说这些最佳实践是我们使用框架多年来积累的 ...

  6. Linux / mysql: is it safe to copy mysql db files with cp command from one db to another?

    Copying is very simple for MyISAM and completely 100% risky (near suicidal) with InnoDB. From your q ...

  7. VUE知识day3_vue插件总结

  8. hive 历史拉链表的处理

    1. CREATE TABLE lalian_test(id int,col1 string,col2 string,dt string)--测试表COMMENT 'this is a test2'  ...

  9. laravel model relationship

    laravel支持多种模型之间的relation,对应着模型间的one2one, one2many,many2many,hasManyThrough,Polymorphic, many2many po ...

  10. Scratch3.0——克隆代码仓库的正确姿势

    原文地址:https://blog.csdn.net/weiwoyonzhe/article/details/86603450 对Scratch3.0进行二次开发,首先要在github上fock官方代 ...