【1】字符串处理函数(1)LOWER : 将字符串中的内容全部转成小写,我来为大家科普一下关于mysql 函数列表?下面希望有你要的答案,我们一起来看看吧!

mysql 函数列表(从零开始mysql知识点归纳总结)

mysql 函数列表

【1】字符串处理函数

(1)LOWER : 将字符串中的内容全部转成小写

SELECT LOWER('abAcD')

FROM DUAL

(2)UPPER : 将字符串中的内容全部转成大写

SELECT UPPER('abAcd')

FROM DUAL

SELECT UPPER(first_name)

FROM employees

(3)CONCAT : 字符串拼接

CONCAT('Hello', 'World') 输出 HelloWorld

SELECT CONCAT ('aaa','bbb','ccc')abc

FROM DUAL

SELECT CONCAT(first_name,'',last_name) NAME

FROM employees

(4)SUBSTR :截取子串,从2的位置开始偏移量为3

SUBSTR('HelloWorld',1,5) 输出 Hello

SELECT SUBSTR('HelloMysql',2,3)

FROM DUAL

(5)LENGTH :长度

LENGTH('HelloWorld') 长度 输出 10

SELECT LENGTH('Hello')

FROM DUAL

(6)INSTR('HelloWorld', 'W') 是否在字符串之中 第六位 6

instr(field, str) 函数,第一个参数 field 是字段,第二个参数 str 是要查询的串,返回串 str 的位置,没找到就是0

SELECT INSTR('hellolo','lo')

FROM DUAL

(7)LPAD (右对齐)| RPAD (左对齐):

LPAD(salary,10,'*') *****24000

LPAD(str,len,padstr)

返回字符串str,将其左填充字符串padstr至len个字符的长度。 如果str大于len,则返回值缩短为len个字符。

RPAD(salary, 10, '*') 24000*****

RPAD(str,len,padstr)

返回字符串str,将其右填充字符串padstr至len个字符的长度。 如果str大于len,则返回值缩短为len个字符。

SELECT LPAD(first_name,10,'*')

FROM employees

SELECT RPAD(first_name,10,'*')

FROM employees

(8)TRIM('H' FROM 'HelloWorld') 修剪字符串 elloWorld

TRIM : 清除字符串左右两端指定的字符

SELECT TRIM('#' FROM '####abc de#####')

FROM DUAL

SELECT TRIM(''FROM 'abc de')

FROM DUAL

(9)REPLACE('abcd','b','m') 替换 输出 amcd

REPLACE : 替换字符串中指定的某个字符

SELECT REPLACE('abcdef','a','A')

FROM DUAL

【5】数字函数

ROUND: 四舍五入

ROUND(45.926, 2) 45.93

SELECT ROUND(123.65,1) ,ROUND(123.53,0),ROUND(123.43,-1)

FROM DUAL

TRUNCATE: 截断

TRUNCATE(45.926) 45

SELECT TRUNCATE(123.65,1),TRUNCATE(123.53,0),TRUNCATE(123.53,-1)

FROM DUAL

MOD: 求余

MOD(1600, 300) 100

SELECT MOD(5,3),MOD(-5,3),MOD(5,-3),MOD(-5,-3)

FROM DUAL

【6】 日期函数 now() : 获取当前时间

SELECT NOW()

FROM DUAL

【7】 通用函数 : ifnull

注意 :null和其它值做运算结果仍为null

SELECT employee_id,salary,12*salary*(1 commission_pct)

FROM employees;

SELECT salary,commission_pct,salary * commission_pct

FROM employees

WHERE employee_id =100

8】 IFNull(commission_pct,0) :如果commission_pct 的值为null那么就将值设置为0

SELECT employee_id,salary,12*salary*(1 IFNULL(commission_pct,0))

FROM employees

WHERE employee_id = 100

【11】 练习:查询部门号为 10, 20, 30 的员工信息, 若部门号为 10,

则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍,

30 号部门打印其工资的 1.3 倍数

case when then 有点类似 switch() case

SELECT first_name,salary,department_id,

CASE department_id

WHEN 10 THEN salary * 1.1

WHEN 20 THEN salary * 1.2

WHEN 30 THEN salary * 1.3

ELSE salary * 1.4 END new_salary

FROM employees

也可以当做 if else来处理

SELECT first_name,salary,job_id,

CASE job_id

WHEN 'IT_PROG' THEN salary*2

ELSE salary *1.4 END new_salary

FROM employees

【12】 AVG() : 求平均值

SUM() :求和

MAX() : 求最大值

MIN() : 求最小值

COUNT() : 求个数

-- avg只能运算数值(double,int)

SELECT AVG(salary)

FROM employees

SELECT SUM(salary)

FROM employees

-- max,min 可以运算数值,字符串,日期

SELECT MAX(first_name),MAX(salary)

FROM employees

SELECT MIN(first_name),MIN(salary)

FROM employees

【13】count:统计的个数不包含数值为null

SELECT COUNT(salary),COUNT(commission_pct)

FROM employees

SELECT AVG(salary),SUM(salary)/107,SUM(salary)/COUNT(commission_pct)

FROM employees

【14】 需求:求表中的数据有多少

SELECT COUNT(*),COUNT(1),COUNT(2)

FROM employees

SELECT first_name

FROM employees

WHERE 1 =1; -- 可以理解为没有条件

【15】 group by

① 需求:求所有员工的平均工资

SELECT AVG(salary)

FROM employees

-- 下面的写法是错误的

SELECT first_name,AVG(salary)

FROM employees

② 需求: 求各部门员工的平均工资

如果列中出现了组函数和其他的列。那么其他的列必须作为

group by 后面分组的条件

SELECT department_id,AVG(salary)

FROM employees

-- group by 按照什么样的格式来分组

GROUP BY department_id

③需求:求各部门中不同工种的员工的平均工资

SELECT department_id, job_id,AVG(salary)

FROM employees

GROUP BY department_id,job_id

SELECT department_id, job_id,AVG(salary)

FROM employees

-- group by 后面的两个列交换顺序是没有区别的

GROUP BY job_id,department_id

【16】 having

①需求 :求各个部门中最高工资大于10000的部门

-- 注意 :如果过滤条件中出现了组函数,那么只能放在having后面使用

SELECT department_id,MAX(salary)

FROM employees

GROUP BY department_id

HAVING MAX(salary)>10000

②需求:求 20,30,40部门中最高工资大于10000的部门

SELECT department_id,MAX(salary)

FROM employees

GROUP BY department_id

HAVING MAX (salary)>10000 AND department_id IN (20,30,40)

-- 下面的方式比上面的好

SELECT department_id,MAX(salary)

FROM employees

WHERE department_id IN(20,30,40)

GROUP BY department_id

HAVING MAX(salary)>10000

,