SQLite语法与Android数据库操作学习android的小伙伴们在使用Android的SQLiteDatabase类进行数据库操作的时候总会有一些力不从心,特别是对于初涉数据库的小伙伴来说更是如此。
这是因为Android的SQLiteDatabase原本就不是依赖于Android而存在的,而是单独的作为一个个体而存在的,有着自己特有的体系和语言,而这就是SQL 语法了。
关于SQLite数据库的理论知识网上一搜一大片,这里就不多说。
SQLite是一个轻量型的数据库,它对于大型数据库来说功能少,因此只需要学习一些通用的SQL语法就能够轻松掌握,而这些SQL语法对于其他的数据库来说也是基本不变化的。
但SQLite有个缺点,那就是作为轻量级选手的它,如果要保存大量数据会力有不及,因此它在android中适合保存个人设置等没有大量数据的信息。
好了,下面就是正式学习SQLite了,只有掌握了SQLite,掌握SQL语法,才能对Android中的数据库操作运用自如。
SQLite的数据类型与Java语言一样,SQLite也有其特有的数据类型,当然相比MySQL来说只有5种数据类型算是很少了NULL:空值相当于Java中的nullINTEGER:带符号的整型,相当于Java中的int型REAL:浮点数字,相当于Java中float/double型TEXT/VARCHAR:字符串文本,相当于Java中String类BLOB:二进制对象,相当于Java中的byte数组,用于存放图片、声音等文件Sqlite3中的约束SQLite的约束是什么呢?约束就是限定数据库字段的条件,如果有个student数据表,它里面有一个age年龄的属性字段,我们要求数据库保存age 这个字段的时候必须有值,不能为空,那么就可以设置为:"age INTEGER NOT NULL"。
这句话的意思就是age字段是不能为空的整型NOT NULL :非空UNIQUE :唯一PRIMARY KEY :主键FOREIGN KEY : 外键CHECK :条件检查DEFAULT : 默认创建表,此时可对表里的结构和字段进行约束限定,将约束条件放在需要约束的字段之后创建表数据库是数据库,数据表是存放在数据库中存放信息的容器,这点大家要区分。
语法: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中不区分大小写insert插入语句数据库的操作无非四大类,增删改查这几种,因此必须要掌握这几种语句,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是给哪个字段赋值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的值修改为jackselect查询语句select查询方法可以说是在数据库操作中使用最频繁的操作了,无论是想获取数据还是得知数据库中的信息都必须使用select语句,同时select语句也算得上在SQL语法中最复杂的语句了。
语法:基础查询: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,但这一关键字并没什么用处,因为升序是默认的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分的数据AND和OR连用(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表中分数在70至80分之间的数据IN关键字:用于指定范围,范围中的每个条件都进行匹配,IN由一组逗号分隔、括在圆括号中的合法值select * from student where name in('tom', 'Denesy');查询student表中名字为tom和Denesy的数据注:在指定要匹配值得清单的关键字中,IN和OR功能相当IN可与and和or等其他操作符使用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字段不为空的信息delete删除语句语法:delete from table1 where 范围语法详解:从table中删除某一范围内的数据(只能一条一条的删除,不能删除某个字段中的值)注:不要漏掉where,否则会清空整个表中的信息例:delete from student where name='tom';从student表中删除名字为tom的信息delete from student where score< 90;从student表中删除分数小于90分的信息Android中的数据库操作Android中的数据库操作其实只要掌握了上面的SQLite的基本知识,那么就很简单了。