1.字段的连接:(concat)
select concat(username,'的年龄',age) from t_user;
2.别名的使用
select concat(username,'的年龄',age,'-地址为:',address) as 'message' from t_user;
3.算数运算:(比如:)
select quantity as '数量',item_price as '单价',quantity*item_price as '总价' from orderitems;
select quantity as '数量',item_price as '单价',quantity*item_price as '总价' from orderitems order by '总价' desc limit 0,3;
4.文本处理函数
<1>.left():返回左边指定长度的字符 (
left()括号里分别是列名和指定字符的长度)
select username,left(username,2) from t_user;
<2>.length()返回字符串的长度
select username,length(username) from t_user;
<3>.lower()将字符串转为小写
select username,lower(username) from t_user;
<4>.ltrim()去掉字符串左边的空格
select username,ltrim(username) from t_user;
<5>.right()返回字符串右边指定长度的字符(right()括号里分别是列名和指定字符的长度);
select username,right(username,2) from t_user;
<6>.rtrim()去掉字符串右边的空格
select username,rtrim(username) from t_user;
<7>upper()将字符串转换为大写
select username,upper(username) from t_user;
<8>★函数是可以嵌套的!!
select username,length(ltrim(rtrim(username)));
5.日期处理函数
<1>.curDate()返回当前日期
select curdate();
<2>.curTime()返回当前的时间;
select curtime();
<3>.now()返回当前的时间和日期;
select now();
<4>.date()返回当前日期时间的日期部分;
select date(now());
<5>.time()返回当前日期时间的时间部分;
select time(now());
select time('2009-09-09 12:32:32');
<6>.day()返回日期的天数部分(
即返回某月的日期是某月的第几天)
select day(now());
select time('2009-09-09 12:32:32');
<7>.dayofweek()返回一个日期对应的星期数(即返回今天是星期几,国外周日是一个星期的第一天!)
select dayofweek(now())-1;
select dayofweek('2009-09-09 12:32:32') - 1;
<8>.hour()返回时间部分的小时部分
select hour(now());
<9>.minute()返回时间部分的分钟部分
select minute(now());
<10>.month()返回日期部分的月份部分
select month(now());
<11>.second()返回时间的秒部分
select second(now());
<12>.year()返回日期部分的年份
select year(now());
<13>.datediff()计算两个日期之差
select datediff('1988-12-26',now());
<14>.adddate()添加一个天数的日期:如计算我来到这个世界上一万天的日期
select adddate('1988-12-26',10000);
<15>.举几个例子:
(1.如获得2005-09-01的订单)
select * from orders wher date(order_date)='2005-09-01';
(2.获取9月的订单)
select * from orders where year(order_date)=2005 and month(order_date)=9; (建议用这种方法)
或
select * form orders where order_date between '2005-09-01' and '2005-09-01';
6.聚合函数(
建议:聚合函数后不建议在跟其他的列!!)
<1>.max: 获取某列的最大值;(可忽略null行)
select max(age) from t_user;
<2>.min:获取某列的最小值;(可忽略null行)
select min(age) from t_user;
<3>.avg:获得某列的平均值;(可忽略null行)
select avg(age) from t_user;
<4>.count():获取某列的行数;
(1.)count(*) :
对表中的数目进行统计,无论列中的值是否为null(★即它不会忽略null行!!!★)
统计用户总数:s
elect count(*) from t_user;
(2.)count(column) : 对表中特定列的行进行统计,忽略null行;
统计address中不为null的行数:
select count(address) from t_user;
<5>.sum():获取某列的和;sum函数忽略值为null的行;
select sum(age) from t_user;
7.分组查询
<1>.如获取不同地方的用户数量
select count(*),address from t_user group by address;
<2>.★分组后再过滤,用having;★where是用于分组前的过滤!!
如:获得用户数量大于20的地方
select count(*),address from t_user group by address having count(*)>20;
还可以继续加条件:
select count(*),address from t_user group by address having count(*)>20 order by count(*) desc limit 0,1;
8.★★查询语句的顺序
<1>.select
<2>.from
<3>.where
<4>.group by
<5>.having
<6>.order by
<7>.limit
eg.
select count(*),address from t_user
where age>20
group by address
having count(*)>20
order by count(*) desc
limit 0,1;
9(补充知识).模糊查询
public List<User> findByName(String name) {
String name1 = "%"+name+"%";
String sql = "select * from t_user wher name like ?";
return db.queryForList(sql,new ProductRowMapper(),name);
}