- 浏览: 599658 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常不错的嵌入式数据库,SQLite大量的被用于手机,PDA,MP3播放器以及机顶盒设备。
新建数据库
检查databasefilename是否存在,如果不存在就创建并进入数据库(如果直接退出,数据库文件不会创建) 如果已经存在直接进入数据库 对数据库进行操作。
sqlite中命令
以.开头,大小写敏感(数据库对象名称是大小写不敏感的)
字段类型
数据库中存储的每个值都有一个类型,都属于下面所列类型中的一种,(被数据库引擎所控制)
NULL: 这个值为空值
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8个字节
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号
TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE)
BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式
值被定义为什么类型只和值自身有关,和列没有关系,和变量也没有关系。
所以sqlite被称作 弱类型 数据库。
数据库引擎将在执行时检查、解析类型,并进行数字存储类型(整数和实数)和文本类型之间的转换。
SQL语句中部分的带双引号或单引号的文字被定义为文本,
如果文字没带引号并没有小数点或指数则被定义为整数,
如果文字没带引号但有小数点或指数则被定义为实数,
如果值是空则被定义为空值.
BLOB数据使用符号X'ABCD'来标识.
但实际上,sqlite3也接受如下的数据类型:
smallint 16位的整数。
interger 32位的整数。
decimal(p,s) 精确值p是指全部有几个十进制数,s是指小数点后可以有几位小数。如果没有特别指定,则系统会默认为p=5 s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字节, n不能超过127。这个形态是为了支持两个字节长度的字体,如中文字。
vargraphic(n) 可变长度且其最大长度为n的双字元字串,n不能超过2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
ast_insert_rowid() 返回最后插入的数据的ID。
sqlite_version() 返回SQLite的版本。
change_count() 返回受上一语句影响的行数。
last_statement_change_count()
create table emp_bak select * from EMP;不能在sqlite中使用
插入记录
子查询
支持表和表之间的数据合并等操作
在列名前加distinct也是去重复
删除
建立索引
如果资料表有相当多的资料,我们便会建立索引来加快速度。好比说:
意思是针对film资料表的name字段,建立一个名叫film_name_index的索引。这个指令的语法为
一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。这一切的操作都是在幕后自动发生的,无须使用者特别指令。
sqlite可以在shell底下直接执行命令:
输出 HTML 表格:
sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会需要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;
sqlite> begin;
sqlite> insert into aaaa values('aaa','333');
sqlite> select * from aaaa;
2|sdfds
sdfsd|9
2012-12-12|13:13:13
aaa|333
sqlite> rollback;
sqlite> select * from aaaa;
2|sdfds
sdfsd|9
2012-12-12|13:13:13
创建和删除视图
新建数据库
sqlite3 databasefilename
检查databasefilename是否存在,如果不存在就创建并进入数据库(如果直接退出,数据库文件不会创建) 如果已经存在直接进入数据库 对数据库进行操作。
sqlite中命令
以.开头,大小写敏感(数据库对象名称是大小写不敏感的)
.exit .help 查看帮助 针对命令 .database 显示数据库信息;包含当前数据库的位置 .tables 或者 .table 显示表名称 没有表则不显示 .schema 命令可以查看创建数据对象时的SQL命令; .schema databaseobjectname查看创建该数据库对象时的SQL的命令;如果没有这个数据库对象就不显示内容,不会有错误提示 .read FILENAME 执行指定文件中的SQL语句 .headers on/off 显示表头 默认off .mode list|column|insert|line|tabs|tcl|csv 改变输出格式 sqlite> .mode list sqlite> select * from emp; 7369|SMITH|CLERK|7902|17-12-1980|800||20 7499|ALLEN|SALESMAN|7698|20-02-1981|1600|300|30 如果字段值为NULL 默认不显示 也就是显示空字符串 .dump ?TABLE? 生成形成数据库表的SQL脚本 .dump 生成整个数据库的脚本在终端显示 .output stdout 将输出打印到屏幕 默认 .output filename 将输出打印到文件(.dump .output 结合可将数据库以sql语句的形式导出到文件中) .nullvalue STRING 查询时用指定的串代替输出的NULL串 默认为.nullvalue ''
字段类型
数据库中存储的每个值都有一个类型,都属于下面所列类型中的一种,(被数据库引擎所控制)
NULL: 这个值为空值
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8个字节
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号
TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE)
BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式
值被定义为什么类型只和值自身有关,和列没有关系,和变量也没有关系。
所以sqlite被称作 弱类型 数据库。
数据库引擎将在执行时检查、解析类型,并进行数字存储类型(整数和实数)和文本类型之间的转换。
SQL语句中部分的带双引号或单引号的文字被定义为文本,
如果文字没带引号并没有小数点或指数则被定义为整数,
如果文字没带引号但有小数点或指数则被定义为实数,
如果值是空则被定义为空值.
BLOB数据使用符号X'ABCD'来标识.
但实际上,sqlite3也接受如下的数据类型:
smallint 16位的整数。
interger 32位的整数。
decimal(p,s) 精确值p是指全部有几个十进制数,s是指小数点后可以有几位小数。如果没有特别指定,则系统会默认为p=5 s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字节, n不能超过127。这个形态是为了支持两个字节长度的字体,如中文字。
vargraphic(n) 可变长度且其最大长度为n的双字元字串,n不能超过2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
ast_insert_rowid() 返回最后插入的数据的ID。
sqlite_version() 返回SQLite的版本。
sqlite> select sqlite_version();
change_count() 返回受上一语句影响的行数。
last_statement_change_count()
create table emp_bak select * from EMP;不能在sqlite中使用
插入记录
insert into table_name values (field1, field2, field3...); --查看table_name表中所有记录 select * from table_name; --查询符合指定条件的记录 select * from table_name where field1='xxxxx'; select ..... from table_name[,table_name2,...] where ..... group by.... having .... order by ... select ..... from table_name inner join | left outer join | right outer join table_name2 on ... where ..... group by.... having .... order by ...
子查询
select * from EMP m where SAL> (select avg(SAL) from EMP where DEPTNO=m.DEPTNO); --支持case when then 语法 update EMP set SAL= ( case when DEPTNO=10 and JOB='MANAGER' then SAL*1.1 when DEPTNO=20 and JOB='CLERK' then SAL*1.2 when DEPTNO=30 then SAL*1.1 when DEPTNO=40 then SAL*1.2 else SAL END ); select ENAME, case DEPTNO when 10 then '后勤部' when 20 then '财务部' when 30 then '内务部门' else '其他部门' end as dept from EMP; --支持关联子查询 in后面的语法中可以有limit(MySQL不可以) select * from emp e where e.EMPNO in ( select empno from EMP where deptno=e.DEPTNO order by SAL desc limit 0,2 );
支持表和表之间的数据合并等操作
--union 去重复 union all 不去掉重复 select deptno from emp union select deptno from dept; select deptno from emp union all select deptno from dept;
在列名前加distinct也是去重复
sqlite> select distinct deptno from emp;
删除
delete from table_name where ... --删除表 drop table_name; 删除表; drop index_name; 删除索引; --修改 update table_name set xxx=value[, xxx=value,...] where ...
建立索引
如果资料表有相当多的资料,我们便会建立索引来加快速度。好比说:
create index film_title_index on film(title);
意思是针对film资料表的name字段,建立一个名叫film_name_index的索引。这个指令的语法为
CREATE [ UNIQUE ] NONCLUSTERED INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。这一切的操作都是在幕后自动发生的,无须使用者特别指令。
sqlite可以在shell底下直接执行命令:
sqlite3 film.db "select * from emp;"
输出 HTML 表格:
sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会需要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;
sqlite> begin;
sqlite> insert into aaaa values('aaa','333');
sqlite> select * from aaaa;
2|sdfds
sdfsd|9
2012-12-12|13:13:13
aaa|333
sqlite> rollback;
sqlite> select * from aaaa;
2|sdfds
sdfsd|9
2012-12-12|13:13:13
创建和删除视图
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition DROP VIEW view_name create view e as select avg(SAL) avgsal,DEPTNO from EMP group by DEPTNO; select ENAME,EMP.DEPTNO,SAL,avgsal from EMP inner join e on EMP.DEPTNO=e.DEPTNO where SAL>avgsal; 练习员工表: PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE DEPT ( DEPTNO int(2) not null, DNAME varchar(14), LOC varchar(13) ); INSERT INTO "DEPT" VALUES(10,'ACCOUNTING','NEW YORK'); INSERT INTO "DEPT" VALUES(20,'RESEARCH','DALLAS'); INSERT INTO "DEPT" VALUES(30,'SALES','CHICAGO'); INSERT INTO "DEPT" VALUES(40,'OPERATIONS','BOSTON'); CREATE TABLE EMP ( EMPNO int(4) not null, ENAME varchar(10), JOB varchar(9), MGR int(4), HIREDATE date, SAL int(7 ), COMM int(7 ), DEPTNO int(2) ); INSERT INTO "EMP" VALUES(7369,'SMITH','CLERK',7902,'17-12-1980',800,NULL,20); INSERT INTO "EMP" VALUES(7499,'ALLEN','SALESMAN',7698,'20-02-1981',1600,300,30); INSERT INTO "EMP" VALUES(7521,'WARD','SALESMAN',7698,'22-02-1981',1250,500,30); INSERT INTO "EMP" VALUES(7566,'JONES','MANAGER',7839,'02-04-1981',2975,NULL,20); INSERT INTO "EMP" VALUES(7654,'MARTIN','SALESMAN',7698,'28-09-1981',1250,1400,30); INSERT INTO "EMP" VALUES(7698,'BLAKE','MANAGER',7839,'01-05-1981',2850,NULL,30); INSERT INTO "EMP" VALUES(7782,'CLARK','MANAGER',7839,'09-06-1981',2450,NULL,10); INSERT INTO "EMP" VALUES(7788,'SCOTT','ANALYST',7566,'19-04-1987',3000,NULL,20); INSERT INTO "EMP" VALUES(7839,'KING','PRESIDENT',NULL,'17-11-1981',5000,NULL,10); INSERT INTO "EMP" VALUES(7844,'TURNER','SALESMAN',7698,'08-09-1981',1500,0,30); INSERT INTO "EMP" VALUES(7876,'ADAMS','CLERK',7788,'23-05-1987',1100,NULL,20); INSERT INTO "EMP" VALUES(7900,'JAMES','CLERK',7698,'03-12-1981',950,NULL,30); INSERT INTO "EMP" VALUES(7902,'FORD','ANALYST',7566,'03-12-1981',3000,NULL,20); INSERT INTO "EMP" VALUES(7934,'MILLER','CLERK',7782,'23-01-1982',1300,NULL,10); CREATE TABLE SALGRADE ( GRADE int, LOSAL int, HISAL int ); INSERT INTO "SALGRADE" VALUES(1,700,1200); INSERT INTO "SALGRADE" VALUES(2,1201,1400); INSERT INTO "SALGRADE" VALUES(3,1401,2000); INSERT INTO "SALGRADE" VALUES(4,2001,3000); INSERT INTO "SALGRADE" VALUES(5,3001,9999); COMMIT;
发表评论
文章已被作者锁定,不允许评论。
-
android BaseActivity与BaseFragment的封装
2016-05-19 15:06 10381 概述 多模块Activity+多Fragment 是开发 ... -
android ScrollView常用属性
2016-05-09 09:17 729android:scrollbars 设置滚动条显示。none ... -
android RecyclerView使用及详解
2016-05-04 10:35 29231.前言 话说RecyclerView已经面市很久,也在很多 ... -
android DialogFragment 创建对话框(官方推荐)
2016-04-29 14:22 9261、 概述 DialogFragment在android 3. ... -
android Intent Flags及Task相关属性
2016-04-26 09:15 642task是一个具有栈结构的容器,可以放置多个Activity实 ... -
android SQLite具体实例应用详解(SQLiteOpenHelper)
2016-04-18 19:24 838上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们 ... -
android View绘制相关问题总结
2016-03-28 19:27 7041.View的绘制流程分几步 ... -
android Handler Looper MessageQueue机制的原理
2016-03-22 21:09 789andriod提供了Handler和Looper来满足线程间的 ... -
android Bitmap,BitmapFactory类图像处理
2016-03-16 16:28 2392BitMap代表一张位图,扩展名可以是.bmp或者.dib。 ... -
android 三类菜单(Option) (Context) (SubMenu)学习
2016-03-14 15:23 949在Android系统中,菜单可以分为三类:选项菜单(Optio ... -
android Sqlite数据库对象模型ORMLite框架学习
2016-03-11 15:24 730在Android项目中或多或少的都会使用数据库,为了提高我们的 ... -
android AsyncTask<参数,进度值类型,返回类型>学习
2016-03-10 14:45 1205AsyncTask和Handler对比 1 ... -
android 远程图片获取和本地缓存
2016-03-10 14:32 802概述 对于客户端——服 ... -
android onSaveInstanceState和onRestoreInstanceState学习
2016-03-10 10:08 826Android中的activity通过onSaveInst ... -
android Fragment生命周期和回退栈学习以及Fragment之间通信
2016-03-10 09:31 1554会涉及到Fragment如何产生,什么是Fragment,Fr ... -
android LruCache内存缓存学习(重写sizeOf方法)
2016-03-09 19:25 1090什么是缓存? 缓存技术原理就是把用户访问的所有对象看作一个全 ... -
android ListView中的convertView缓存及使用
2016-03-09 19:12 1737一、复用convertView 首先讲下ListView的原 ... -
android 从资源角度谈Android代码内存优化
2016-03-09 18:54 741开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么 ... -
android startActivityForResult和setResult详情及Demo
2016-03-09 08:56 1073startActivityForResult与startAct ... -
android Toast详解以及自定义Toast例子
2016-01-28 14:15 1554Toast的用法 Toast只是一个View视图,快速的为用 ...
相关推荐
按F5更新架构树,双击一个表或视图来显示它的数据,使用常用的命令的上下文菜单。 2、网格单元格编辑:表格单元格中编辑,显示一个表通过树状架构,选择一个单元格,然后按F2键调用编辑器。然后修改并确认您的更改...
例如,在物联网设备、Android应用中,SQLite是常用的本地数据存储解决方案。 四、SQLite详尽说明文档 SQLite的官方文档非常全面,包括用户指南、编程指南、管理员指南和FAQ等部分,覆盖了所有核心功能和高级主题。...
4. 查询数据:SELECT语句是SQL中最常用的命令,用于从数据库中检索数据。可以使用WHERE子句过滤结果,GROUP BY进行分组,HAVING进行条件过滤,ORDER BY进行排序,LIMIT和OFFSET进行结果限制。例如,`SELECT Name, ...
使用`sqlite3_exec()`函数执行SQL命令,如创建表、插入数据等。例如: ```c char *zErrMsg = 0; int rc = sqlite3_exec(db, "CREATE TABLE Players (id INTEGER PRIMARY KEY, name TEXT)", NULL, 0, &zErrMsg); ...
2.5. 常用的 SQLite 命令 常用的数据操作命令包括 `INSERT INTO` 插入数据,`SELECT` 查询数据,`UPDATE` 更新数据,`DELETE FROM` 删除数据。`WHERE` 子句用于指定条件,`JOIN` 用于连接多个表,`GROUP BY` 和 `...
在iOS、Android、Python、C#等众多编程语言和平台上,SQLite都是常用的数据存储解决方案。下面我们将深入探讨SQLite的一些关键特性、操作方法以及与MySQL的对比。 1. 数据库创建与连接: 在SQLite中,你可以通过...
例如,SQLite提供了命令行工具(sqlite3),用户可以通过该工具执行SQL命令,查看表结构,甚至进行简单的数据分析。此外,还有许多第三方工具支持SQLite,这些工具提供了图形化界面,使得非技术背景的用户也能轻松管理...
标签 "C++" 提示我们可能涉及到SQLite的C++ API,这是SQLite与Android平台交互的常用方式,因为Android原生开发套件(NDK)允许使用C和C++编写部分应用代码。 基于以上信息,我们可以深入探讨以下知识点: 1. **...
- 调试的基本概念和常用命令。 - 断点设置、变量查看等功能详解。 - 日志输出(LogCat)与错误日志分析技巧。 - **第十三章:Gradle构建系统** - Gradle的工作原理及其优势。 - 构建脚本(build.gradle文件)...
SQLite支持丰富的SQL语法,包括但不限于以下命令: - **ALTER TABLE**:用于修改现有表的结构,支持重命名表以及向表中添加新列。 - **语法**:`ALTER TABLE [database-name.]table-name RENAME TO new-table-name...
B4A是一个基于Java语法的Android应用开发环境,它使得开发者能够用更简单的语言编写Android应用程序。SQLite是一个轻量级的关系型数据库管理系统,广泛应用于移动设备和嵌入式系统,包括Android。 描述中提到...
SQLite是Android系统中内置的关系型数据库,用于存储和管理应用程序中的结构化数据。SQLite数据库具有轻量级、可移植、自包含的特点,非常适合在移动设备上使用。在Android开发中,SQLite是处理本地数据的主要方式之...
由于其无需服务器进程、安装简便等特点,使得SQLite成为Android应用开发中进行本地数据存储的理想选择。 - **轻量化**:SQLite体积小、资源占用低,非常适合移动设备。 - **嵌入式**:作为应用的一部分运行在客户端...
1. **常用Linux命令**: 如ls、cd、mkdir等。 2. **文本编辑器**: 推荐使用vim或nano。 3. **文件权限管理**: 包括chmod、chown等命令的使用。 **资源推荐**: - 《鸟哥的私房菜》: 这本书详细介绍了Linux的基本操作...
作为一名 IT 行业大师,我将为您详细解析 Android 面试题目,涵盖数据结构、语法基础、网络基础、知识应用和工作经验等方面。 1. List 和 Vector,String 和 StringBuilder 分别有什么区别? List 和 Vector 都是...
- **Java 基础语法**:包括变量、数据类型、流程控制(循环、分支)、数组等基本概念。 - **面向对象编程(OOP)**:类与对象、继承、多态、封装性等。 - **异常处理**:如何捕获并处理程序运行时可能出现的各种异常。...
### Android学习基本路线指导 #### 一、Java基础 学习Android开发的第一步是掌握Java基础。这是因为Android的应用程序主要是用Java语言编写的。因此,具备扎实的Java基础至关重要。 1. **Java基础语法**: - ...
`Git`是最常用的版本控制系统,开发者需要熟悉基本的`Git`命令和流程,如提交、拉取、分支和合并等。`GitHub`或`GitLab`等平台可以托管项目,并提供协作、问题跟踪和代码审查等功能。 6. **持续集成与自动化测试**...