sqlite中常用的sql语句

前端之家收集整理的这篇文章主要介绍了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','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','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 ;

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

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

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

猜你在找的Sqlite相关文章