count(*) 计数
avg()求一列的平均数
distinct(q.device_id)对某一列去重,一般与count()连用count(question_id)/count(distinct(q.device_id))
if(age>=25,'25岁及以上','25岁以下' )表达式满足就执行第一个,否则就执行第二个
select device_id,gender,
case
when age<20 then '20岁以下'
when age<25 then '20-24岁'
when age>=25 then '25岁及以上'
else '其他'
end age_cut
from user_profile; 多条件判断,以end结束后面跟别名
floor()函数返回小于等于该值的最大整数.
locate('08', date)可当成条件,只展示包含此字段的
min(gpa)获取最小值
max(dd)获取最大值
sum()求和
limit 1 offset 2;取1条数据跳过两条数据
limit(i,n) i: 为查询结果的索引值(默认从0开始);n: 为查询结果返回的数量
round(字段,3)对数据取整,字段,取整长度
force index (idx_emp_no)强制使用索引 idx_emp_no索引名称能加快查询
lenght()计算字符的长度
rrplace(string, ",", "")string字段,‘,’需要替换的字符,“”替换成什么字符
ifnull(expro,value)如果表达式为null,则返回第二个参数
between 100 and 120;
查询员工编号在100到120之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
ltrim(s) 去掉字符串s左侧的空格
rtrim(s) 去掉字符串s右侧的空格
trim(s) 去掉字符串s首部和尾部的空格
trim(s1 FROM s) 去掉字符串s开始与结尾的s1
repeat(str, n) 返回str重复n次的结果
substring(str,n ,m) 返回字符串str从第n个字符截取到第m个字符;
concat(s1,s2,s3,....)多个字符串连接
concat_ws(separator,s2,s3,....)多个字符段连接,用separator间隔
insert(str,x,y,instr)将字符串str从第x位置开始,y个字符串的长度替换为字符串instr,返回结果
lcase(str)或lower(str)返回字符串str中所有字符改变为小写后的结果
ucase(str)或upper(str)返回字符串str中所有字符改变为大写后的结果
left(str,x)返回字符串str中最左边的x个字符
right(str,x)返回字符串str中最右边的x个字符
length(str)返回字符串str中字符数
reverse(str)返回颠倒字符串str的结果
substring_index(str,'',int)根据什么依据截取字符串用例子SELECT SUBSTRING_INDEX('58.33.115.130', '.', 1); //结果是58
group_concat(name separator ';')根据什么分组在合成字段,第二个参数为分隔符,不写默认为逗号,group_concat(name)里面还可以排序group_concat(date order by date) group_concat(distinct age ORDER BY age asc SEPARATOR ',')

时间
now()获取当前时间包含时分秒
current_date(),curdate()获取当前时间不包含时分秒
month(date),返回月份的数值
monthname(date)返回月份的英文名称
dayofmonth(date),返回日期属于当前月的第几天
dayofyear(date)返回日期属于当前年的第几天
dayname(date),返回星期几的英文名字
dayofweek(date),返回星期几的数值,返回值的范围是1-7,1表示星期日,以此类推
weekday(date)返回星期几的数值,返回值的范围是0-6,0表示星期一,以此类推
to_days(date),日期date与默认日期(000年1月1日)之间间隔的天数,没什么用
from_days(number),默认日期经过number天后的日期,没什么用
datediff(date1,date2)获取指定两个日期间的相隔天数,date1-date2 where datediff(date1,date2)=1
date_add(date,interval expr type),在date的基础上添加上指定的时间间隔后的日期date_add(now(), interval 30 minute)
date_sub(date,interval expr type)在date的基础上减去上指定的时间间隔后的日期 一般date_add(字段,interval 1day) type值 常用的year、month、day、hour、minute、second、microsecond(毫秒)、week、quarter
str_to_date(str, format)字符串转换为日期 format=%Y/%m/%d’,format='%Y/%m%d%H%i'
date_format(‘2017-05-12 17:03:51’, ‘%Y年%m月%d日 %H时%i分%s秒’);日期转换格式date_format(“2025-03-04”,'%Y-%m')2025-03
str_to_date()和date_format为互逆操作
year(date)返回指定日期的年份,在1000到9999之间

cast(data as data_type)data_type表示字符串类型

union 连接两个sql语句·前提是两个查询的列数要相同,并且去重
union all 连接两个sql语句·前提是两个查询的列数要相同,不去重
SELECT * FROM information_schema.views; 查看mysql中的所有视图
show processlist 查看当前正在进行中的进程
show variables like 'general%'; 查看通用查询日志是否开启 on开启 general_log_file日志文件位置
show variables like '%slow%'; 查看慢查询是否开启 slow_query_log on开启
show variables like 'long_query_time'; 查看慢查询时间设置
desc table(表名)//查看表结构
show tables 查看库中的表
show databases 查看多少个数据库
SELECT * FROM information_schema.INNODB_TRX; 查看当前正在进行中的进程
kill id 杀掉进程

窗口函数
sum(p.number)over(partition by ​​u.name​​ order by date)as ps_num

cast(value as type)
convert(value, type)
type类型选择:
binary:二进制类型;
char:字符类型;
date:日期类型;
time:时间类型;
datetime:日期时间类型;
decimal:浮点型;decimal(7,3),第一位为数字长度,第二位为,第二位为几位小数点
signed:整型;
unsigned:无符号整型。

cmd命令
net start mysql
net stop mysql