聚合函数

SUM函数

在MySQL中,SUM函数是用于计算数值列的总和的聚合函数。它接受一个数值列作为参数,并返回该列中所有值的总和。

以下是一个使用SUM函数的示例:

假设我们有一个名为"orders"的表,其中有两个字段:"product"和"amount",用于记录不同产品的订单金额。现在我们希望计算出所有订单的总金额。

现在,我们可以使用SUM函数来计算订单金额的总和:

SELECT SUM(amount) AS total_amount FROM orders;

该查询将返回一个名为"total_amount"的结果集,其中包含了所有订单金额的总和。在此案例中,结果将是700。

以上示例中的SQL语言格式与上述介绍的AVG函数示例相似,只是使用了SUM函数来计算总和。SQL语言的其他关键部分和解释与前述相同。

AVG函数

在MySQL中,AVG函数是用于计算数值列的平均值的聚合函数。它接受一个数值列作为参数,并返回该列中所有值的平均值。

以下是一个使用AVG函数的示例:

假设我们有一个名为"sales"的表,其中有两个字段:"product"和"quantity",用于记录不同产品的销售数量。现在我们希望计算出所有产品的平均销售数量。

现在,我们可以使用AVG函数来计算平均销售数量:

SELECT AVG(quantity) AS average_quantity FROM sales;

该查询将返回一个名为"average_quantity"的结果集,其中包含了所有销售数量的平均值。在此案例中,结果将是17.5。

SQL语言是用于与关系型数据库交互的标准化查询语言。它用于对数据库中的数据进行查询、插入、更新和删除操作。

上述示例中的SQL语言包括了以下几个关键部分:
- CREATE TABLE用于创建一个新的表。
- INSERT INTO用于向表中插入数据。
- SELECT用于查询数据。
- AVG(quantity)表达了使用AVG函数计算"quantity"列的平均值。
- AS用于为查询结果中的列指定别名。
- FROM指定了要查询的表。
- WHERE和ORDER BY是SQL中的条件和排序子句,用于对查询结果进行筛选和排序。

总的来说,SQL语言是一种高级的数据库查询语言,可以用于管理和操作关系型数据库中的数据。它使用了各种关键字、函数和语法结构来执行各种操作,如创建表、插入数据、查询数据和更新数据。

COUNT函数

在MySQL中,COUNT函数是用于计算行数的聚合函数。它接受一个表达式作为参数,并返回满足该表达式条件的行数。

以下是一个使用COUNT函数的示例:

假设我们有一个名为"customers"的表,其中有一个字段:"id",用于记录每个顾客的唯一标识符。现在我们希望计算出总共有多少个顾客。

现在,我们可以使用COUNT函数来计算顾客的数量:

SELECT COUNT(*) AS total_customers FROM customers;

该查询将返回一个名为"total_customers"的结果集,其中包含了顾客的总数。在此案例中,结果将是4。

在上述示例中,COUNT函数的参数是"*",表示计算所有行的数量。COUNT函数还可以接受特定列名作为参数,例如COUNT(id),表示计算id列中非空值的数量。

SQL语言的其他关键部分和解释与前述相同。总的来说,COUNT函数是用于计算行数的聚合函数,用于获取特定条件下的行数或表中的总行数。

MAX函数

在MySQL中,MAX函数是用于计算数值列的最大值的聚合函数。它接受一个数值列作为参数,并返回该列中的最大值。

以下是一个使用MAX函数的示例:

假设我们有一个名为"products"的表,其中有两个字段:"product"和"price",用于记录不同产品的价格。现在我们希望找到最高价格的产品。

现在,我们可以使用MAX函数来找到价格最高的产品:

SELECT MAX(price) AS highest_price FROM products;

该查询将返回一个名为"highest_price"的结果集,其中包含了最高价格的产品的价格。在此案例中,结果将是20.49。

在上述示例中,MAX函数的参数是"price",表示要找到"price"列中的最大值。MAX函数还可以接受其他数值表达式作为参数,例如MAX(price * quantity),表示计算"price"和"quantity"列乘积的最大值。

SQL语言的其他关键部分和解释与前述相同。总的来说,MAX函数是用于计算最大值的聚合函数,用于查找数值列中的最大值。

MIN函数

在MySQL中,MIN函数是用于计算数值列的最小值的聚合函数。它接受一个数值列作为参数,并返回该列中的最小值。

以下是一个使用MIN函数的示例:

假设我们有一个名为"products"的表,其中有两个字段:"product"和"price",用于记录不同产品的价格。现在我们希望找到最低价格的产品。

现在,我们可以使用MIN函数来找到价格最低的产品:

SELECT MIN(price) AS lowest_price FROM products;

该查询将返回一个名为"lowest_price"的结果集,其中包含了最低价格的产品的价格。在此案例中,结果将是10.99。

在上述示例中,MIN函数的参数是"price",表示要找到"price"列中的最小值。MIN函数还可以接受其他数值表达式作为参数,例如MIN(price * quantity),表示计算"price"和"quantity"列乘积的最小值。

SQL语言的其他关键部分和解释与前述相同。总的来说,MIN函数是用于计算最小值的聚合函数,用于查找数值列中的最小值。

数学函数

ROUND函数

MySQL中的ROUND函数用于将一个数值四舍五入到指定的小数位数。

语法:

ROUND(number, decimals)

参数说明:
- number:要进行四舍五入的数值。
- decimals:要保留的小数位数。可以是负数,表示要四舍五入的整数位数。

案例:
假设有一个订单表orders,包含以下字段:
- order_id:订单ID
- total_amount:订单总金额

要求使用ROUND函数,将订单总金额保留两位小数,并按金额从大到小查询订单。

SQL语句:

SELECT order_id, ROUND(total_amount, 2) AS rounded_amount
FROM orders
ORDER BY rounded_amount DESC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. ROUND(total_amount, 2) AS rounded_amount:使用ROUND函数将total_amount字段保留两位小数,并将结果命名为rounded_amount。
3. FROM orders:指定要查询的数据表为orders。
4. ORDER BY rounded_amount DESC:按照rounded_amount字段的值从大到小进行排序。

这个例子中,假设订单总金额为:
- 10.3456
- 20.6789
- 30.1234

经过ROUND函数的处理后,得到的结果为:
- 10.35
- 20.68
- 30.12

最终的查询结果将按照金额从大到小进行排序,并显示订单ID和保留两位小数后的金额。

ABS函数

MySQL中的ABS函数用于返回一个数的绝对值。

语法:

ABS(number)

参数说明:
- number:要返回绝对值的数值。

案例:
假设有一个学生成绩表grades,包含以下字段:
- student_id:学生ID
- score:学生成绩

要求使用ABS函数,返回学生成绩的绝对值,并按照绝对值从小到大查询学生成绩。

SQL语句:

SELECT student_id, ABS(score) AS absolute_score
FROM grades
ORDER BY absolute_score ASC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. ABS(score) AS absolute_score:使用ABS函数返回score字段的绝对值,并将结果命名为absolute_score。
3. FROM grades:指定要查询的数据表为grades。
4. ORDER BY absolute_score ASC:按照absolute_score字段的值从小到大进行排序。

假设学生成绩为:
- 学生A, 成绩-80
- 学生B, 成绩95
- 学生C, 成绩-60

经过ABS函数的处理后,得到的结果为:
- 学生A, 绝对值80
- 学生B, 绝对值95
- 学生C, 绝对值60

最终的查询结果将按照绝对值从小到大进行排序,并显示学生ID和绝对值后的成绩。

CEIL函数

MySQL中的CEIL函数用于将一个数值向上取整,返回不小于该数的最小整数。

语法:

CEIL(number)

参数说明:
- number:要进行向上取整的数值。

案例:
假设有一个商品表products,包含以下字段:
- product_id:商品ID
- price:商品价格(单位:元)

要求使用CEIL函数,将商品价格向上取整,并按照取整后的价格从大到小查询商品。

SQL语句:

SELECT product_id, CEIL(price) AS rounded_price
FROM products
ORDER BY rounded_price DESC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. CEIL(price) AS rounded_price:使用CEIL函数将price字段向上取整,并将结果命名为rounded_price。
3. FROM products:指定要查询的数据表为products。
4. ORDER BY rounded_price DESC:按照rounded_price字段的值从大到小进行排序。

假设商品价格为:
- 商品A,价格4.56元
- 商品B,价格9.99元
- 商品C,价格2.45元

经过CEIL函数的处理后,得到的结果为:
- 商品A,取整后价格5
- 商品B,取整后价格10
- 商品C,取整后价格3

最终的查询结果将按照取整后的价格从大到小进行排序,并显示商品ID和向上取整后的价格。

FLOOR函数

MySQL中的FLOOR函数用于将一个数值向下取整,返回不大于该数的最大整数。

语法:

FLOOR(number)

参数说明:
- number:要进行向下取整的数值。

案例:
假设有一个商品表products,包含以下字段:
- product_id:商品ID
- price:商品价格(单位:元)

要求使用FLOOR函数,将商品价格向下取整,并按照取整后的价格从小到大查询商品。

SQL语句:

SELECT product_id, FLOOR(price) AS rounded_price
FROM products
ORDER BY rounded_price ASC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. FLOOR(price) AS rounded_price:使用FLOOR函数将price字段向下取整,并将结果命名为rounded_price。
3. FROM products:指定要查询的数据表为products。
4. ORDER BY rounded_price ASC:按照rounded_price字段的值从小到大进行排序。

假设商品价格为:
- 商品A,价格4.56元
- 商品B,价格9.99元
- 商品C,价格2.45元

经过FLOOR函数的处理后,得到的结果为:
- 商品A,取整后价格4
- 商品B,取整后价格9
- 商品C,取整后价格2

最终的查询结果将按照取整后的价格从小到大进行排序,并显示商品ID和向下取整后的价格。

字符串函数

CONTACT函数

MySQL中的CONCAT函数用于将多个字符串连接成一个字符串。

语法:

CONCAT(string1, string2, ...)

参数说明:
- string1, string2, ...:要连接的字符串。

案例:
假设有一个客户表customers,包含以下字段:
- customer_id:客户ID
- first_name:客户名
- last_name:客户姓

要求使用CONCAT函数,将客户的姓和名连接为一个完整的姓名,并按照姓氏字母顺序查询客户。

SQL语句:

SELECT customer_id, CONCAT(last_name, ' ', first_name) AS full_name
FROM customers
ORDER BY last_name ASC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. CONCAT(last_name, ' ', first_name) AS full_name:使用CONCAT函数将last_name和first_name字段连接为一个完整的姓名,并将结果命名为full_name。字符串之间可以用空格或其他字符进行分隔。
3. FROM customers:指定要查询的数据表为customers。
4. ORDER BY last_name ASC:按照last_name字段的值按照姓氏字母顺序进行排序。

假设客户数据为:
- 客户A, 姓:张,名:三
- 客户B, 姓:李,名:四
- 客户C, 姓:王,名:五

经过CONCAT函数的处理后,得到的结果为:
- 客户A, 完整姓名:张 三
- 客户B, 完整姓名:李 四
- 客户C, 完整姓名:王 五

最终的查询结果将按照姓氏字母顺序进行排序,并显示客户ID和完整姓名。

SUBSTRING函数

MySQL中的SUBSTRING函数用于返回一个字符串的子字符串。

语法:

SUBSTRING(string, start_position, length)

参数说明:
- string:要截取子字符串的原始字符串。
- start_position:截取子字符串的起始位置。
- length:要截取的子字符串的长度。

案例:
假设有一个用户表users,包含以下字段:
- user_id:用户ID
- username:用户名
- email:用户电子邮件地址

要求使用SUBSTRING函数,截取用户邮件地址的域名,并按照域名进行查询用户。

SQL语句:

SELECT user_id, SUBSTRING(email, LOCATE('@', email) + 1) AS domain
FROM users
ORDER BY domain ASC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. SUBSTRING(email, LOCATE('@', email) + 1) AS domain:使用SUBSTRING函数截取email字段中从@符号后开始的子字符串,并将结果命名为domain。LOCATE函数用于找到@符号在email字符串中的位置。
3. FROM users:指定要查询的数据表为users。
4. ORDER BY domain ASC:按照domain字段的值进行升序排列。

假设用户数据为:
- 用户A, 邮件地址:userA@gmail.com
- 用户B, 邮件地址:userB@yahoo.com
- 用户C, 邮件地址:userC@hotmail.com

经过SUBSTRING函数的处理后,得到的结果为:
- 用户A, 域名:gmail.com
- 用户B, 域名:yahoo.com
- 用户C, 域名:hotmail.com

最终的查询结果将按照域名进行排序,并显示用户ID和域名。

LENGTH函数

MySQL中的LENGTH函数用于返回一个字符串的长度。

语法:

LENGTH(string)

参数说明:
- string:要计算长度的字符串。

案例:
假设有一个商品表products,包含以下字段:
- product_id:商品ID
- name:商品名称

要求使用LENGTH函数,查询商品名称的长度,并按照长度从长到短排序。

SQL语句:

SELECT product_id, name, LENGTH(name) AS name_length
FROM products
ORDER BY name_length DESC;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. LENGTH(name) AS name_length:使用LENGTH函数计算name字段的长度,并将结果命名为name_length。
3. FROM products:指定要查询的数据表为products。
4. ORDER BY name_length DESC:按照name_length字段的值从长到短进行排序。

假设商品数据为:
- 商品A, 名称:Pen
- 商品B, 名称:Notebook
- 商品C, 名称:Pencil

经过LENGTH函数的处理后,得到的结果为:
- 商品A, 名称:Pen, 长度:3
- 商品B, 名称:Notebook, 长度:8
- 商品C, 名称:Pencil, 长度:6

最终的查询结果将按照名称长度从长到短进行排序,并显示商品ID、名称和名称的长度。

时间函数

NOW函数

MySQL中的NOW函数用于返回当前日期和时间。

语法:

NOW()

案例:
假设有一个订单表orders,包含以下字段:
- order_id:订单ID
- order_date:订单日期

要求使用NOW函数,查询当前日期和时间,并查询订单表中今天的所有订单。

SQL语句:

SELECT order_id, order_date
FROM orders
WHERE DATE(order_date) = CURDATE();

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. FROM orders:指定要查询的数据表为orders。
3. WHERE DATE(order_date) = CURDATE():使用DATE函数提取order_date字段的日期部分,并与当天的日期进行比较。CURDATE函数返回当前日期。

假设订单数据为:
- 订单A, 日期:2022-02-15 10:30:45
- 订单B, 日期:2022-02-16 12:15:30
- 订单C, 日期:2022-02-15 14:20:00

如果当前日期为2022-02-15,经过查询后,将返回以下结果:
- 订单A, 日期:2022-02-15 10:30:45
- 订单C, 日期:2022-02-15 14:20:00

最终的查询结果将显示订单ID和日期,其中日期为当天的订单。

CURDATE函数

MySQL中的CURDATE函数用于返回当前日期。

语法:

CURDATE()

案例:
假设有一个员工表employees,包含以下字段:
- employee_id:员工ID
- hire_date:入职日期

要求使用CURDATE函数,查询今天入职的所有员工。

SQL语句:

SELECT employee_id, hire_date
FROM employees
WHERE DATE(hire_date) = CURDATE();

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. FROM employees:指定要查询的数据表为employees。
3. WHERE DATE(hire_date) = CURDATE():使用DATE函数提取hire_date字段的日期部分,并与当前日期进行比较。CURDATE函数返回当前日期。

假设员工数据为:
- 员工A, 入职日期:2022-02-15
- 员工B, 入职日期:2022-02-16
- 员工C, 入职日期:2022-02-15

如果当前日期为2022-02-15,经过查询后,将返回以下结果:
- 员工A, 入职日期:2022-02-15
- 员工C, 入职日期:2022-02-15

最终的查询结果将显示员工ID和入职日期,其中入职日期为当天的员工。

DATEDIFF函数

MySQL中的DATEDIFF函数用于计算两个日期之间的差距,以天为单位。

语法:

DATEDIFF(date1, date2)

参数说明:
- date1:要计算差距的第一个日期。
- date2:要计算差距的第二个日期。

案例:
假设有一个销售表sales,包含以下字段:
- sale_id:销售ID
- sale_date:销售日期

要求使用DATEDIFF函数,计算销售发生到现在的天数,并查询销售发生不超过7天的记录。

SQL语句:

SELECT sale_id, sale_date
FROM sales
WHERE DATEDIFF(NOW(), sale_date) <= 7;

解释SQL语句:
1. SELECT语句:指定要查询的字段。
2. FROM sales:指定要查询的数据表为sales。
3. WHERE DATEDIFF(NOW(), sale_date) <= 7:使用DATEDIFF函数计算当前日期(NOW())与sale_date字段的差距,并判断差距是否不超过7天。

假设销售数据为:
- 销售A, 日期:2022-02-10
- 销售B, 日期:2022-02-15
- 销售C, 日期:2022-02-20

如果当前日期为2022-02-17,经过查询后,将返回以下结果:
- 销售B, 日期:2022-02-15
- 销售C, 日期:2022-02-20

最终的查询结果将显示销售ID和销售日期,其中销售日期与当前日期的差距不超过7天。

【技术积累】Mysql中的SQL语言【技术篇】【三】的更多相关文章

  1. MySQL中的SQL语言

    从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 :CRE ...

  2. MySQL入门——MySQL数据库和SQL语言

    MySQL入门——MySQL数据库和SQL语言 摘要:本文主要了解了MySQL关系型数据库和SQL语言的基本知识. MySQL数据库 简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB ...

  3. MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause

    MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...

  4. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  5. 【原创】6. 在MYSQL++中实现SQL语法中的NULL

    这次要说明的是在MYSQL++中为了实现SQL中的NULL而做出的一系列的举措.我的感觉是Null<T, B>类型通常出现在SSQLS和template Query中比较多. 1. 什么是 ...

  6. Mysql中的sql是如何执行的 --- 极客时间学习笔记

    MySQL中的SQL是如何执行的 MySQL是典型的C/S架构,也就是Client/Server架构,服务器端程序使用的mysqld.整体的MySQL流程如下图所示: MySQL是有三层组成: 连接层 ...

  7. MySQL中的SQL的常见优化策略

    MySQL中的SQL的常见优化策略 MySQL中的索引优化 MySQL中的索引简介 1 避免全表扫描对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索 ...

  8. 【MySQL笔记】SQL语言四大类语言

     SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL.   1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句, ...

  9. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

  10. MySQL: 2、SQL语言

    一.SQL的简介: 1.SQL的概念: SQL就是结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统 2.SQL的作用:   - ...

随机推荐

  1. Git rebase使用小结

    1.分支之间rebase 构造两个分支master和feature,其中feature是在提交点B处从master上拉出的分支 master上有一个新提交M,feature上有两个新提交C和D 此时我 ...

  2. Object o = new Object();

    对象的创建过程: 1,申请内存,并初始化: 2,构造器初始化: 3,o指向对象. 对象在内存中的存储布局: 使用jol工具打印java对象在内存的存储布局: 其中,对象头的组成: 对象头包括Mark ...

  3. lombok版本报错问题java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module

    lombok版本报错问题 记录一个项目部署时遇到的问题,我本地采用的JDK8的版本,然后我的服务器采用的是JDK17,然后在用maven进行打包的时候,发现package失败. 复现 我在本地采用的l ...

  4. 【必知必会的MySQL知识】③DML语言

    目录 前言 准备 插入数据 语法格式 插入完整行数据 插入多行数据 将检索出来的数据插入表 更新数据 准备两张表 语法 实践操作 删除数据 语法 实践操作 小结 前言 前面的两篇文章中,我们已经对My ...

  5. 一文梳理z-index和层叠上下文

    前言 最近参与某前端项目架构改造,发现项目中滥用z-index,设置的值有几十种并且不统一.在对项目的z-index进行梳理和统一过程中也深入学习了一下z-index,并撰写成文,希望也能帮助到陌生的 ...

  6. js数组和字符串方法

    一.数组方法 1.1.可以改变原数组 var arr = [10, 20, 30, 40, 50, 55]; // 1. **** push() --- 在数组的最后添加一项内容 // var ret ...

  7. 2020-08-20:GO语言中的协程与Python中的协程的区别?

    福哥答案2020-08-20: 1.golang的协程是基于gpm机制,是可以多核多线程的.Python的协程是eventloop模型(IO多路复用技术)实现,协程是严格的 1:N 关系,也就是一个线 ...

  8. 2022-02-06:等差数列划分 II - 子序列。 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称

    2022-02-06:等差数列划分 II - 子序列. 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目. 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称 ...

  9. drf序列化器之反序列化的数据验证

    模型层 from django.db import models # Create your models here. class Manufacturer(models.Model): ## 厂商 ...

  10. vue之关闭eslint及vue/require-v-for-key 、vue/no-unsed-vars报错解决方法

    报错:Page1组件已经注册但是没有被使用.  vue/no-unused-components 如果报错以下: 解决方法: 首先打开项目中的package,json 找到eslint-config ...