百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

从零开始mysql知识点归纳总结(四) 单行函数、组函数

toyiye 2024-07-09 23:08 13 浏览 0 评论

【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

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码