- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
在Mysql中函数是一组预定义的指令,用于执行特定的操作并返回结果,可类比Java中的方法.在SQL中函数根据其作用范围和返回结果方法分为两大类:单行函数,分组函数 。
单行函数的特点为对一行数据进行操作,并只返回一种结果.单行函数通常用于处理单个记录数据 。
CHAR_LENGTH(S),LENGTH(S):
返回字符串的长度eg:查询员工姓名,姓名字数.
SELECT emplyee_name,CHARACTER_LENGTH(emplyee_name) FROM emplyees;
CONCAT(S1,S2,…Sn):
将两个以上的字符串连接eg:将字符串'aaa','bbb','ccc'进行拼接.
SELECT CONCAT('aaa','bbb','ccc');
UPPER(),LOWER():
对字符进行大小写转化eg::查询员工邮箱,并转为大写显示 。
SELECT UPPER(email) FROM emplyees;
substr,substring(S, start, length):
提取字符串S从start位置开始,长度为length的字字符串eg:提取hello world中的hello 。
SELECT substr('hello world',1,5);`
replace(S, old, new):
在字符串S中将所有的old替换为neweg:查询员工电话号码,要求去除中间的横线 ’-’ 。
SELECT REPLACE(phone_number, '-', '') FROM emplyees;
ROUND(X):对浮点数X进行四舍五入 。
eg:查询员工工资,和其四舍五入的整数值 。
SELECT salary,ROUND(salary) FROM employees;
CEIL(X):对浮点数X向上取整,即返回≥X的最小整数 。
eg:查询员工工资,并且向上取整 。
SELECT salary,CEIL(salary) FROM employees;
FLOOR(X):对浮点数X向下取整,即返回≤X的最大整数 。
eg:查询员工工资,并且向下取整 。
SELECT salary,FLOOR(salary) FROM employees;
TRUNCATE(X,length):对浮点数的小数部分进行截取→常用于进行保留小数操作 。
SELECT TRUNCATE(1.9999,2);->1.99
MOD(X,Y):对两个数进行区域操作即X%Y 。
NOW(),SYSDATE()
:返回当前系统日期+时间CURDATE():
返回当前系统日期,不包括时间CURTIME()
:返回当前系统时间,不包括日期DATE_FORMAT(date,format):
用于格式化日期,date是要格式化的数据,format是格式化的模式,格式化的通配符号如下表:格式符 | 功能 |
---|---|
%Y | 4位年份 |
%y | 2位年份 |
%m | 月份(01,02,…,11,12) |
%c | 月份(1,2,…,11,12) |
%d | 日(01,02,…) |
%H | 小时(24小时制) |
%h | 小时(12小时制) |
%i | 分钟(00,01,…,58,59) |
%s | 秒(00,01,…,58,59) |
eg:查询员工姓名、入职时间,入职时间按照xxxx年xx月xx日输出 。
SELECT DATE_FORMAT(hiredate,'%Y年%m月%d日') FROM employees;
流程控制函数在SQL中根据条件选择性地返回不同的结果,其允许在查询过程中实现条件逻辑 。
IF(expr,true_val,false_val):
若表达式expr
为真,则返回结果true_val
,否则返回false_val
的结果eg: 如果查询的年纪大于18则返回adult,否则返回minor 。
SELECT age,IF(age>=18,'adult','minor');
CASE
语法结构:类似于switch…case结构,用于实现多支路条件选择SELECT exper1,exper2...,
CASE exper1
WHEN value1 THEN result1
WHEN value2 THEN result2
WHEN value3 THEN result3
...
ELSE result
END
FROM table_name;
eg:根据查询的部门号返回部门名称 。
SELECT department_id
CASE department_id
WHEN 1 THEN '经理办公室'
WHEN 2 THEN '财务部'
WHEN 3 THEN '后勤部'
ELSE 'unkown'
END AS department_name
FROM departments;
SELECT exper1,exper2...,
CASE
WHEN condition 1 THEN result1
WHEN condition 2 THEN result2
...
ELSE result
END
FROM table_name;
eg:查询员工姓名以及工资,工资按照一定规则发放,入职时间在2015-01-01之前的员工工资*2,入职时间在2018-01-01之前的员工工资*1.5,其他不变 。
SELECT
employee_name,hiredate,salary 原工资,
CASE
WHEN hiredate<'2015-01-01' THEN salary*2
WHEN hiredate<'2018-01-01' THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;
分组函数也称为聚合函数,用于对一组值进行操作,并返回单个结构 。
COUNT(*):
计算指定列中非NULL值的数量,SUM(column)
:计算指定列之和,AVG(column)
:计算指定列平均数,MAX(colum):
取出指定列最大值,MIN(colum)
:取出指定列最小值eg:查询所有员工工资总和、平均值、最大值、最小值、员工个数,
SELECT SUM(salary),AVG(salary),MAX(salary),MIN(salary),COUNT(*) FROM employees;
分组查询可根据某个或某些列对数据进行分组 。
GROUP BY
关键字:按指定列进行分组SELECT 列表
FROM 表
[WHERE 筛选条件]
GROUP BY 分组
[ORDER BY 排序]
eg:查询每个部门的最高工资 。
SELECT MAX(salary)
FROM employees
GROUP BY department_id;
在GROUP BY语句之间使用 WHERE语句对查询结果降序筛选 。
eg:查询每个部门入职时间在2010-01-01之后,并且工资最高的员工信息 。
SELECT *
FROM employees
WHERE hiredate >'2010-01-01'
GROUP BY department_id;
通过HAVING语句可以在GRUOP BY语句之后进行条件筛选 。
eg:查询员工人数大于120的部门 。
SELECT *
FROM employees
GROUP BY department_id
HAVING COUNT(*)>120;
eg:查询每个部门,男女员工的平均工资 。
SELECT department_id,sex,AVG(salary) AS 平均工资
FROM employees
GROUP BY department_id,sex;
连接查询是SQL中十分重要的知识点,就有”连接不会,通宵也白搭”,连接查询也称为多表查询,用于将两个以上的表的数据基于某些相关条件组合在一起,通过连接查询,可以从表中提取数据,生成一个新的结果集 。
内连接用于返回两个表中所有满足连接条件的所有行数据,内连接可分为:等值连接,非等值连接,自连接 。
等值连接是一种常见的连接方式,其基于两表中某一列的相等条件进行连接 。
其语法结构如下
SELECT colum1,colum2,....,
FROM table1
INNER JOIN table2
ON table1.colum = table.colum;
eg:查询员工姓名以及所在的部门名称 。
SELECT employee_name AS 员工名,department_name AS 部门名
FROM employees e
INNER JOIN departments d ON
e.department_id=d.department_id;
非等值连接基于两表中某一列的不等条件进行连接.如大于,小于,不等于等等 。
语法结构
SELECT colum1,colum2,....,
FROM table1
INNER JOIN
ON table1.colum <operator> table2.colum;
其中operator可以是>,<,≥,≤,≠,BETWEEN…AND等等,
eg:查询员工工资及工资等级 。
SELECT e.salary,j.grade_level
FROM employees e
INNER JOIN job_grades j
ON e.salary BETWEEN j.lowest_sal AND j.higest_sal;
自连接是指同一个表的连接.这种连接通常用于处理表中有层次结构或函数递归关系的数据 。
eg:查询员工姓名以及对应的直系领导 。
SELECT t1.employee_name AS 员工,t2.employee_name AS 领导
FROM employees t1
INNER JOIN employees t2
ON t1.manager_id=t2.employee_id;
外连接用于返回主表中满足连接条件的行,同时保留另一个表中没有匹配的行 。
语法结构
SELECT colum1,colum2...,
FROM table1 [LEFT|RIGHT]
JOIN ON [连接条件];
eg:查询员工姓名以及所在的部门名称,没有部门信息的员工也要查询出来 。
SELECT employee_name AS 员工姓名,department_name AS 部门名称
FROM employees e LEFT
JOIN departments d
ON e.department_id=d.department_id;
最后此篇关于Mysql中常用函数分组,连接查询的文章就讲到这里了,如果你想了解更多关于Mysql中常用函数分组,连接查询的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!