MySql关键字
not #逻辑非
and #逻辑与
or #逻辑或
is #是
null #空值
in #在什么里面
between and #在什么之间
where #哪些
like #像
escape #除了
order #顺序
by #按照
asc #升序
desc #降序
count #计数函数
sum #求和函数
max #最大值函数
avg #平均值函数
concat #拼接函数
group by #分组
having #具有….特征
<=<br />< >=<br />= <><br />is null is not null<br />between and not between and<br />like not like<br />in() not in()
常用函数
一.字符函数

字节长度中汉字算三个字节(utf-8中),共6+32=12个字节
字符个数一个汉字算一个字符,共8个字符


张三丰
郭襄
3
虚 竹
虚**竹
*木婉清
木婉清*
SELECT CONCAT(UPPER(SUBSTR(firstname,1,1)),LOWER(SUBSTR(first_name,2)),’‘,UPPER(last_name)) “OUTPUT”
FROM employees;
用substr截取出第一个字符和后面的字符

前面比后面大,为1
前面比后面小,为-1
相等为0
从左边/右边截取指定长度字符串
https://www.bilibili.com/video/BV12b411K7Zu?p=272
https://www.bilibili.com/video/BV12b411K7Zu?p=273
二.数学函数



2
1.87 #保留小数点后两位

强制截取到小数点后一位(没有四舍五入),1.8
取余用后面ab公式,最后结果的正负和被除数正负一致
https://www.bilibili.com/video/BV12b411K7Zu?p=274
三.日期函数

显示现在具体时间,年月日,时分秒
显示现在日期,年月日
显示现在时间,时分秒
显示时间的差,前面减去后面,最后用天数表示. -7667

将日期格式转化为字符串
SELECT DATE_FORMAT(‘1998-12-15’,’%y年%m月%d日 %H小时%i分钟%s秒’) 出生日期;
用单引号包住字符
用单引号包住字符
year(时间列名) 提取时间列名的年
month(时间列名) 提取时间列名的月
day(时间列名) 提取时间列名的日
hour(时间列名) 提取时间列名的时
minute(时间列名) 提取时间列名的分
second(时间列名) 提取时间列名的秒
https://www.bilibili.com/video/BV12b411K7Zu?p=275
四.流程控制函数

IF(条件,字段1,字段2);
满足条件,执行第一个字段,否则执行第二个字段

SELECT department_id,salary,
CASE department_id
WHEN 30 THEN salary2
WHEN 40 THEN salary3
WHEN 50 THEN salary*4
ELSE salary
END newsalary
FROM employees;
#注意第一行,
SELECT last_name Last_name,job_id,
CASE job_id
WHEN ‘AD_PRES’ THEN ‘A’
WHEN ‘ST_MAN’ THEN ‘B’
WHEN ‘IT_PROG’ THEN ‘C’
WHEN ‘SA_REP’ THEN ‘D’
WHEN ‘ST_CLERK’ THEN ‘E’
END Grade
FROM employees;
#在函数中出现字符和字符串用’ ‘ ,其他位置出现则字符用’ ‘ , 字符串用” “.

SELECT salary,
CASE
WHEN salary > 20000 THEN ‘A’
WHEN salary > 15000 THEN ‘B’
WHEN salary > 10000 THEN ‘C’
ELSE ‘D’
END
AS grade
FROM employees;
https://www.bilibili.com/video/BV12b411K7Zu?p=276
https://www.bilibili.com/video/BV12b411K7Zu?p=277
五.分组函数(与group by分组 配套使用)



#案例2:添加筛选条件
#①查询emp表中记录数:
SELECT COUNT(employee_id) FROM employees;
#②查询emp表中有佣金的人数:
SELECT COUNT(salary) FROM employees;
count(salary)本来就不计算空值.

上下结果相等.
count(1) 就相当于在每个行加了一个1,数出来几个1即可.

SELECT COUNT(DISTINCT department_id) FROM employees;
注意先去重,再计数
SELECT department_id,SUM(salary),AVG(salary)
FROM employees
GROUP BY department_id;
https://www.bilibili.com/video/BV12b411K7Zu?p=278

