sqlite中常用的sql语句

1、创建表的sql语句,说明一下uid为自动递增的整型数据,insert_time是创建的时间数据,比如以字符串的形式插入的话就是"2013-12-12"或"2013-11-26 15:02:33"
create table proclamation_record(
uid integer primary key autoincrement,
[user_id] varchar(32) default null,
[user_name] varchar(32) default null,
[area_code] varchar(18) default null,
[user_level] varchar(2) default null,
[info_type] varchar(2) default null,
[insert_time] datetime default null,
[subject] varchar(128) default null,
[content] varchar(255) default null,
[expire_time] datetime default null,
[version] integer default null,
[status]  integer default null
)

例子:
2、给数据库出入新的值,如果写表明后面跟值得的话就必须字段和类型同表一样
INSERT INTO proclamation_record VALUES ('1', 'sda', 'afd', 'asdf', '1', '1', '2013-11-26 15:02:33', 'fasd', 'fdsa', '2013-11-26 15:02:37', '0');


2.1、如果写表名而且后面还跟了列名,则后面跟值得的话就必须字段和类型同列要一样
INSERT INTO proclamation_record(user_id,user_name,area_code,user_level,info_type,insert_time,subject,content,expire_time,version) VALUES ( 'ssa', 'afd', 'asdf', '1', '1', '2013-11-26 15:02:33', 'fasd', 'fdsa', '2013-11-26 15:02:37', '0');


3、查询表的值根据时间的的最近的时间查
SELECT * FROM proclamation_record ORDER BY 0+insert_time ASC;


4、查询表的值根据时间的的最远的时间查
SELECT * FROM proclamation_record ORDER BY insert_time ASC;


4.1 、查询表中同一时间的记录个数,具体是先将数据按insert_time进行分组,然后统计每组的个数,并且最后返回的值按insert_time降序进行排列,一般group by是用于统计记录个数用的
select count(*) from proclamation_record group by insert_time order by insert_time desc;


5、根据某个字段中包含某个关键字查表
SELECT * FROM proclamation_record where area_code like "%asd2%"


6、通过uid的升序排列表,并且显示数据在第0到第10之间,一般用于分页显示数据
select * from proclamation_record order by uid asc limit 0,10


7、查询表中某个字段的最大值
SELECT max(version) from proclamation_record


8、通过insert_time的降序排列查询结果,并且从查得结果的第0条偏移值开始,限制到后面的2条
select * from proclamation_record order by insert_time desc limit 2 offset 0


9、给数据库增加一列
Alter TABLE proclamation_record
ADD COLUMN column_name DATATYPE;


10、给表的uid列建立索引
create INDEX index_name ON proclamation_record (uid)


11、更新某一列的数据
update proclamation_record set version = 1 where uid = 2


12、内连接,表s和表c的classid字段相同,查询表s内连接c,也就是要表s和表c都有值才显示
select * from student s inner join class c on s.classid = c.classid;
select * from student s inner join class c where s.classid = c.classid;


13、对于左连接、右连接、全连接下面用个例子说明
-------------------------------------------------
  a表     id   name     b表     id   job   parent_id  
              1   张3                   1     23     1  
              2   李四                 2     34     2  
              3   王武                 3     34     4      
  a.id同parent_id   存在关系  

--------------------------------------------------   
 1) 内连接  
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id      
  结果是    
  1   张3                   1     23     1  
  2   李四                  2     34     2  
   
  2)左连接  
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id      
  结果是    
  1   张3                   1     23     1  
  2   李四                  2     34     2  
  3   王武                  null   

 

 3) 右连接  
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id      
  结果是    
  1   张3                   1     23     1  
  2   李四                  2     34     2  
  null                       3     34     4  
   
 4) 完全连接  
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id  

  结果是    
  1   张3                  1     23     1  
  2   李四                 2     34     2  
  null                   3     34     4  
  3   王武                 null
------------------------------------------------------------------------------

多表链接查询

SELECT T_Order.id,T_Order.remark,T_Order.resource_count,T_Order.order_status,T_Resource.no,T_Resource_Category.name,T_Resource_Group.name
FROM T_Order
INNER JOIN T_Order_Resource_Detail on T_Order.id = T_Order_Resource_Detail.order_id
INNER JOIN T_Resource  on T_Order_Resource_Detail.resource_id = T_Resource.id
inner join T_Resource_Category on T_Resource.category_id = T_Resource_Category.id
inner join T_Resource_Group on T_Resource.group_id = T_Resource_Group.id ;

sqlite中常用的sql语句_第1张图片

---------------------------------------------------------------------------------------------------------------------------------------------

在某个时间范围内查询数据

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String startTime = df.format(new Date());
    df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
Date date = df.parse(startTime);  
           Calendar   calendar   =   new   GregorianCalendar();   
           calendar.setTime(date);   
           calendar.add(calendar.DATE,-90);//把日期往后增加一天.整数往后推,负数往前移动   
           date=calendar.getTime();   //这个时间就是日期往后推一天的结果   
           String endTime = df.format(date); //增加一天后的日期 

           sql = "select _id from t_boundlog bl where bl.StartTime < '"+endTime+"'";

 

修改表,增加一列:

ALTER TABLE t_boundlog ADD COLUMN other STRING



 

你可能感兴趣的:(android,sql)