1.SQL 结构化查询语言
2.操作数据库:
2.1创建数据库:CREATE DATABASE 数据库名 ;
2.2删除数据库:DROP DATABASE 数据库名 ;
2.3修改数据库名:RENAME DATABASE 旧数据库名 TO 新数据库名 ;
2.4使用数据库:
USE 数据库名
在出现Database changed信息后,代表我们进入了该数据库,然后我们可以查看此数据库中的表:
SHOW TABLES ;
3.操作表:
3.1创建表:CREATE TABLE 表名 (字段名称 字段类型,字段名称 字段类型...) ;
常用字段类型:
整型:int
字符型:char(size) 固定长度字符串 255
varchar(size) 可变长度字符串 255
TEXT
浮点型:decimal(size,d)/numberic
日期:date(yyyyMMdd)date(yyyyMMdd HH:mm:ss) year(yyyy)
查看表的字段结构:DESCRIBE 表名;或 DESC 表名;
3.2删除表:DROP TABLE 表名;
3.3修改表名:ALTER TABLE 表名 RENAME 新表名 ;
3.4向表中增加一列字段:ALTER TABLE 表名 ADD 字段名 字段类型;
3.5修改字段类型:ALTER TABLE 表名 MODIFY 字段名 字段类型 ;
3.6修改字段名(同时也可以修改类型):ALTER TABLE 表名 CHANGE COLUMN 旧字段名 新字段名 新段类型 ;
3.7删除某字段:ALTER TABLE 表名 DROP COLUMN 字段名(列名) ;
3.8修改列位置:ALTER TABLE 表名 MODIFY 字段名1 字段1类型 AFTER 字段2 ;
将字段1 修改到字段2的后面。
4.操作数据:
4.1插入数据:
4.1.1插入所有字段:INSERT INTO 表名 VALUES (字段1的值,字段2的值...);
4.1.2插入部分字段:INSERT INTO 表名(字段2,字段5...) VALUES(字段2的值,字段5的...);
4.1创建和打开数据库
在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。
下面我们来创建一个名为Test的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。
mSQLiteDatabase=this.openOrCreateDatabase("Test",MODE_PRIVATE,null);
4.2创建表
通过execSQL方法来执行一条SQL语句。
String CREATE_TABLE="create table 表名(列名,列名,……)"; mSQLiteDatabase.execSQL(CREATE_TABLE);
创建表的时候总要确定一个主键,这个字段是64位整型,别名_rowid。其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加入关键字autoincrement。
4.3删除表
mSQLiteDatabase("drop table 表名");
4.4修改数据
4.4.1 插入记录
可以使用insert方法来添加数据,但是insert方法要求把数据都打包到ContentValues中,ContentValues其实就是一个Map,Key值是字段名称,Value值是字段的值。通过ContentValues的put方法就可以把数据放到ContentValues对象中,然后插入到表中去。具体实现如下:
ContentValues cv=new ContentValues(); cv.put(TABLE_NUM,1); cv.put(TABLE_DATA,"测试数据库数据"); mSQLiteDatabase.insert(Test,null,cv); //同样可以使用execSQL方法来执行一条“插入“的SQL语句 String INSERT_DATA="insert into 表名(列名,……) values (值,……)"; mSQLiteDatabase.execSQL(INSERT_DATA);
4.4.2 更新记录
ContentValues cv=new ContentValues(); cv.put(TABLE_NUM,3); cv.put(TABLE_DATA,"修改后数据"); mSQLiteDatabase.update(Test,cv,"num"+"="+rowId,null); //同样可以使用execSQL方法来执行一条“更新”的SQL语句 String UPDATE_DATA="update 表名 set 列名=xxx where xxx; mSQLiteDatabase.execSQL(UPDATE_DATA);
update 表名 set 列名=xxx [where条件]
4.4.3 删除记录
//要删除数据可以使用delete方法 mSQLiteDatabase.delete("Test","WHERE _id="+0,null); //也可以通过execSQL方法执行SQL语句删除数据 mSQLiteDatabase.execSQL("delete from 表名 where 条件");
4.5查询
SELECT 列名 FROM 表名 WHERE 条件
例如在联系人中保存3个联系人,data表如下:
查询data1值为10086的项
对查询条件和返回值稍做修改
LIKE的使用
Like经常和 %或者 _ 搭配使用。
%可与任意0个或者多个字符匹配,_可与任意单个字符匹配。
GLOB的使用
Glob与like非常相似,常与 * 搭配。
限定和排序
关键字:order、limit、offset。
Order分为asc(默认升序),desc(降序)。
限定个数
指定偏移
select xxx from 表名1 inner join 表名2 on 表名1.列名 = 表名2.列名
select xxx from 表名1 left outer join 表名2 on 表名1.列名 = 表名2.列名