一、查询子句:

1.排序子句:order by 列,列.. [asc|desc]  排序,

  select * from user order by account desc;

asc由小到大,desc由大到小,不加这个属性默认为由小到大排序

2.分页查询:limit index,count

select * from user limit 0,5; 从第0索引开始取出前五条显示

常用函数



java 如何储存mongo时间为当前系统时间_mongo 时间格式化 查询



1.数学类

ABS(x):返回x的绝对值;

SQRT(x):返回非负数x的平方根;

PI():返回圆周率;

MOD(x,y)或%:返回x被y除的余数;

CEIL(x)、CEILING(x):返回大于或者等于x的最小整数值;

FLOOR(x):返回小于或者等于x的最大整数值;

ROUND(x,y):返回保留小数点后面y位,四舍五入的整数;

TRUNCATE(x,y):返回被舍弃的小数点后y位的数字x;

RAND():每次产生不同的随机数;

SIGN(x):返回参数的符号;

POW(x,y)和POWER(x,y):返回x的y次乘方的结果值;

EXP(x):返回以e为底的x乘方后的值;

LOG(x):返回x的自然对数,x相对于基数e的对数;

LOG10(x):返回x的基数为10的对数;

RADIANS(x):将参数x由角度转化为弧度;

DEGREES(x):将参数x由弧度转化为度。

SIN(x):返回x正弦,其中x为弧度值;

ASIN(x)返回x的反正弦,即正弦为x的值;

COS(x):返回x的余弦;

ACOS(x):返回x反余弦

TAN(x):返回x的正切;

ATAN(x)返回x的反正切;



2.字符串

CHAR_LENGTH(str):返回字符串str的所包含字符个数;

LENGTH(str):返回字符串str的长度;

CONCAT(s1,s2,...):字符串连接;

CONCAT_WS(x,s1,s2,…):字符串连接, x是其它参数的分隔符;

INSERT(s1,x,len,s2) :返回字符串s1,s1中插入字符串s2;

LOWER (str)|LCASE (str):将字符串全部转换成小写字母;

UPPER(str)|UCASE(str):将字符串全部转换成大写字母;

LEFT(s,n):返回最左边指定长度的字符;

RIGHT(s,n):返回最右边指定长度的字符;

LPAD(s1,len,s2)| RPAD(s1,len,s2) :填充字符串函数;

TRIM(s1 FROM s)|LTRIM(s)|RTRIM(s):删除空格函数;

REPEAT(s,n):重复生成字符串函数;

SPACE(n):返回一个由n个空格组成的字符串;

REPLACE(s,s1,s2):字符串替换函数;

STRCMP(s1,s2):比较字符串大小函数;

SUBSTRING(s,n,len):获取子串函数;

LOCATE(str1,str)|POSITION(str1 IN str)|INSTR(str, str1):匹配子串开始位置函数;

REVERSE(s):将字符串s反转;

ELT(N,字符串1,字符串2,字符串3,…):返回指定位置函数;



3.日期和时间

CURDATE()和CURRENT_DATE() :获取当前日期函数;

NOW():返回服务器的当前日期和时间;

CURTIME():返回当前时间,只包含时分秒;

UTC_DATE():返回世界标准时间日期函数;

UTC_TIME():返回世界标准时间函数;

TIMEDIFF(expr1, expr2):返回两个日期相减相差的时间数;

DATEDIFF(expr1, expr2):返回两个日期相减相差的天数;

DATE_ADD(date,INTERVAL expr type):日期加上一个时间间隔值;

DATE_SUB(date,INTERVAL expr type):日期减去一个时间间隔值;

DATE(date)、TIME(date)、YEAR(date):选取日期时间的各个部分:

EXTRACT(unit  FROM  date):从日期中抽取出某个单独的部分或组合;

  DAYOFWEEK(date) 、DAYOFMONTH(date) 、DAYOFYEAR(date):返回日期在一周、一月、一年中是第几天

DAYNAME、MONTHNAME:返回日期的星期和月份名称;

DATE_FORMAT(date,format):格式化日期;

TIME_FORMATE(time,formate):格式化时间;



4.流程控制

1)CASE 语句

case 列 

when 条件1 then 值1

when 条件2 then 值2

when 条件3 then 值3

   .......

    else 值n  end

实例:

select 

case when account<=3 then -1

when account >3 and account <10 then 0

else 1 END  result  //result 为这个列的别名

from user;

2)IF

if(exp,exp1,exp2) 

exp为true,则返回exp1

exp为false,则返回exp2

实例:

                      select 

if(account>=10,'大于10','小于10') result

from user;

3)IFNULL

ifnull(exp1,exp2)

exp1为null,返回exp2

否则,返回exp1

select ifnull(born,date('2020-11-11')) from user;

4)NULLIF:与ifnull等同

分组查询



java 如何储存mongo时间为当前系统时间_mongo 时间格式化 查询



5.分组查询:

分组函数

MIN最小值

MAX最大值

SUM求和

AVG求平均

COUNT计数

group by分组,根据指定的列分组,非分组列使用分组函数处理

select avg(cj) 平均分,banji from user group by banji;

java 如何储存mongo时间为当前系统时间_分组函数_03

分组条件筛选

having 条件

SELECT MAX(cj)最高分,MIN(cj)最低分,AVG( cj)平均分

,SUM(cj)总分,banji FROM `学生成绩表`GROUP BY

banji HAVING MAX(cj)>5

java 如何储存mongo时间为当前系统时间_分组函数_04

子查询:非相关子查询(查询嵌套)

SELECT * from (SELECT MAX(cj)最高分,MIN(cj)最低分,AVG( cj)平均分

,SUM(cj)总分,banji FROM `学生成绩表`GROUP BY

banji HAVING MAX(cj)>2) tmp  ///一定要对所查询到的临时表起一个别名

WHERE 总分>6

java 如何储存mongo时间为当前系统时间_mongo 时间格式化 查询_05

多表联查



java 如何储存mongo时间为当前系统时间_mongo 时间格式化 查询



第一种,逗号方式
 select * from user,depart(两个表做笛卡尔积)
 where user.depart = depart.departId;
第二种:
 join on (内连接)
 select * from user(表1)join depart(表2) on  user.depart = depart.departId(条件)
        与上述连接方式相同,都是先做笛卡尔积。
 left join on(左连接)保留左表所有内容去匹配右表
 select * from user
 left join depart on user.depart = depart.departId
 right join on(右连接)保留右表所有内容去匹配左表
 select * from user
 right join depart on user.depart = depart.departId