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 ;
---------------------------------------------------------------------------------------------------------------------------------------------
在某个时间范围内查询数据
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