当前位置:实例文章 » 其他实例» [文章]SQL语句GROUP BY、HAVING、EXISTS、SQL函数(Null判断、日期相关、计算数值和字符串操作 )

SQL语句GROUP BY、HAVING、EXISTS、SQL函数(Null判断、日期相关、计算数值和字符串操作 )

发布人:shili8 发布时间:2025-01-22 09:58 阅读次数:0

**SQL语句大全**

本文将介绍 SQL 中常用的 GROUP BY、HAVING、EXISTS 等关键字,以及一些常见的 SQL 函数,包括 Null 判断、日期相关、计算数值和字符串操作。

### GROUP BYGROUP BY 是用于分组数据的关键字。它可以根据一个或多个列来分组数据,然后对每个分组进行聚合运算,如 SUM、AVG、MAX 等。

**示例1**

sqlSELECT department,
 AVG(salary) AS avg_salaryFROM employeesGROUP BY department;


在这个示例中,我们使用 GROUP BY 将员工按部门分组,然后计算每个部门的平均薪水。

**示例2**

sqlSELECT year(order_date),
 SUM(total_amount) AS total_salesFROM ordersGROUP BY year(order_date);


在这个示例中,我们使用 GROUP BY 将订单按年份分组,然后计算每年的总销售额。

### HAVINGHAVING 是用于过滤分组结果的关键字。它可以根据一个或多个列来过滤数据,然后返回满足条件的分组结果。

**示例1**

sqlSELECT department,
 AVG(salary) AS avg_salaryFROM employeesGROUP BY departmentHAVING AVG(salary) >5000;


在这个示例中,我们使用 HAVING 过滤出平均薪水大于5000 的部门。

**示例2**

sqlSELECT year(order_date),
 SUM(total_amount) AS total_salesFROM ordersGROUP BY year(order_date)
HAVING SUM(total_amount) >100000;


在这个示例中,我们使用 HAVING 过滤出总销售额大于100000 的年份。

### EXISTSEXISTS 是用于检查是否存在满足某个条件的行的关键字。它可以根据一个或多个列来检查是否存在满足条件的行。

**示例1**

sqlSELECT *
FROM customersWHERE EXISTS (
 SELECT1 FROM orders WHERE customer_id = customers.id AND total_amount >10000 );


在这个示例中,我们使用 EXISTS 检查是否存在一个客户有总金额大于10000 的订单。

**示例2**

sqlSELECT *
FROM employeesWHERE EXISTS (
 SELECT1 FROM departments WHERE department_id = employees.department_id AND name LIKE '%IT%'
 );


在这个示例中,我们使用 EXISTS 检查是否存在一个部门名包含 "IT" 的员工。

### Null 判断Null 是 SQL 中的一个特殊值,表示未知或无效的数据。我们可以使用以下函数来判断某个列是否为 Null:

* `IS NULL`:用于检查某个列是否为 Null。
* `IS NOT NULL`:用于检查某个列是否不为 Null。

**示例1**

sqlSELECT *
FROM customersWHERE email IS NULL;


在这个示例中,我们使用 `IS NULL` 检查哪些客户的电子邮件地址为空。

**示例2**

sqlSELECT *
FROM employeesWHERE department_id IS NOT NULL;


在这个示例中,我们使用 `IS NOT NULL` 检查哪些员工有部门 ID。

### 日期相关我们可以使用以下函数来处理日期:

* `NOW()`:返回当前系统时间。
* `CURDATE()`:返回当前系统日期。
* `DATEDIFF()`:用于计算两个日期之间的天数差异。
* `DATE_FORMAT()`:用于格式化日期。

**示例1**

sqlSELECT NOW() AS current_time;


在这个示例中,我们使用 `NOW()` 返回当前系统时间。

**示例2**

sqlSELECT CURDATE() AS current_date;


在这个示例中,我们使用 `CURDATE()` 返回当前系统日期。

**示例3**

sqlSELECT DATEDIFF('2024-03-16', '2024-02-28') AS date_diff;


在这个示例中,我们使用 `DATEDIFF()` 计算两个日期之间的天数差异。

**示例4**

sqlSELECT DATE_FORMAT('2024-03-16', '%Y-%m-%d') AS formatted_date;


在这个示例中,我们使用 `DATE_FORMAT()` 格式化日期。

### 计算数值我们可以使用以下函数来计算数值:

* `SUM()`:用于计算一列的总和。
* `AVG()`:用于计算一列的平均值。
* `MAX()`:用于计算一列的最大值。
* `MIN()`:用于计算一列的最小值。

**示例1**

sqlSELECT SUM(salary) AS total_salaryFROM employees;


在这个示例中,我们使用 `SUM()` 计算员工总薪水。

**示例2**

sqlSELECT AVG(salary) AS avg_salaryFROM employees;


在这个示例中,我们使用 `AVG()` 计算员工平均薪水。

**示例3**

sqlSELECT MAX(salary) AS max_salaryFROM employees;


在这个示例中,我们使用 `MAX()` 计算员工最高薪水。

**示例4**

sqlSELECT MIN(salary) AS min_salaryFROM employees;


在这个示例中,我们使用 `MIN()` 计算员工最低薪水。

### 字符串操作我们可以使用以下函数来处理字符串:

* `CONCAT()`:用于连接两个或多个字符串。
* `SUBSTRING()`:用于从一个字符串中提取子串。
* `UPPER()`:用于将一个字符串转换为大写。
* `LOWER()`:用于将一个字符串转换为小写。

**示例1**

sqlSELECT CONCAT('Hello, ', 'world!') AS greeting;


在这个示例中,我们使用 `CONCAT()` 将两个字符串连接起来。

**示例2**

sqlSELECT SUBSTRING('Hello, world!',7,5) AS substring;


在这个示例中,我们使用 `SUBSTRING()` 从一个字符串中提取子串。

**示例3**

sqlSELECT UPPER('hello, world!') AS uppercase;


在这个示例中,我们使用 `UPPER()` 将一个字符串转换为大写。

**示例4**

sqlSELECT LOWER('HELLO, WORLD!') AS lowercase;


在这个示例中,我们使用 `LOWER()` 将一个字符串转换为小写。

相关标签:
其他信息

其他资源

Top