SQL简单认识与练习

本文介绍了SQL中的时间函数用于处理日期和时间,包括获取当前日期/时间,以及如何在SQL查询中操作。同时讲解了字符串处理函数,如转换大小写和计算长度。此外,文章详细介绍了聚合函数和分组聚合,包括单字段和多字段分组,以及HAVING子句的应用。

14.函数:在 SQL 中,时间函数是用于处理日期和时间的特殊函数。它们允许我们在查询中操作和处理日期、时间、日期时间数据,从而使得在数据库中进行时间相关的操作变得更加方便和灵活。

  • DATE:获取当前日期                   date()
  • DATETIME:获取当前日期时间  datetime()
  • TIME:获取当前时间                   time()

对比

current_datecurrent_datetimecurrent_time
2023-08-012023-08-01 14:30:0014:30:00
-- 获取当前日期
SELECT DATE() AS current_date;

-- 获取当前日期时间
SELECT DATETIME() AS current_datetime;

-- 获取当前时间
SELECT TIME() AS current_time;

假设有一个学生表 student,包含以下字段:name(姓名)、age(年龄)。

请你编写一个 SQL 查询,展示所有学生的姓名(name)和当前日期(列名为 "当前日期")

select name,date() as "当前日期"

from student;

15.函数--字符串   在 SQL 中,字符串处理是一类用于处理文本数据的函数。它们允许我们对字符串进行各种操作,如转换大小写、计算字符串长度以及搜索和替换子字符串等。字符串处理函数可以帮助我们在数据库中对字符串进行加工和转换,从而满足不同的需求

    1)使用字符串处理函数 UPPER 将姓名转换为大写:

-- 计算姓名长度
SELECT name, LENGTH(name) AS name_length
FROM employees;
-- 将姓名转换为大写
SELECT name, UPPER(name) AS upper_name
FROM employees;

 假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)。请你编写一个 SQL 查询,筛选出姓名为 '热dog' 的学生,展示其学号(id)、姓名(name)及其大写姓名(upper_name)。

           select id,name, upper(name) as upper_name

           from student   where name="热dog";

16.函数--聚合函数

      在 SQL 中,聚合函数是一类用于对数据集进行 汇总计算 的特殊函数。它们可以对一组数据执行诸如计数、求和、平均值、最大值和最小值等操作。聚合函数通常在 SELECT 语句中配合 GROUP BY 子句使用,用于对分组后的数据进行汇总分析。

  常见的聚合函数包括:

  • COUNT:计算指定列的行数或非空值的数量。
  • SUM:计算指定列的数值之和。
  • AVG:计算指定列的数值平均值。
  • MAX:找出指定列的最大值。
  • MIN:找出指定列的最小值。

假设有一个订单表 orders,包含以下字段:order_id(订单号)、customer_id(客户编号)、amount(订单金额)。数据如下:

order_idcustomer_idamount
1A001100
2A002200
3A001150
4A00350

1)使用聚合函数 COUNT 计算订单表中的总订单数:

SELECT COUNT(*) AS order_num
FROM orders;

查询结果:

order_num
4

2)使用聚合函数 COUNT(DISTINCT 列名) 计算订单表中不同客户的数量:

SELECT COUNT(DISTINCT customer_id) AS customer_num
FROM orders;

查询结果:

customer_num
3

3)使用聚合函数 SUM 计算总订单金额:

SELECT SUM(amount) AS total_amount
FROM orders;

查询结果:

total_amount
500

 假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,汇总学生表中所有学生的总成绩(total_score)、平均成绩(avg_score)、最高成绩(max_score)和最低成绩(min_score)。

           select sum(score) as total_score,

           avg(score) as avg_score,

            max(score) as max_score,

            min(score) as min_score

             from student;

17.分组聚合---单字段分组

            在 SQL 中,分组聚合是一种对数据进行分类并对每个分类进行聚合计算的操作。它允许我们按照指定的列或字段对数据进行分组,然后对每个分组应用聚合函数,如 COUNT、SUM、AVG 等,以获得分组后的汇总结果。

举个例子:某个学校可以按照班级将学生分组,并对每个班级进行统计。查看每个班级有多少学生、每个班级的平均成绩。这样我们就能够对学校各班的学生情况有一个整体的了解,而不是单纯看个别学生的信息。  在 SQL 中,通常使用 GROUP BY 关键字对数据进行分组。

     假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,统计学生表中的班级编号(class_id)和每个班级的平均成绩(avg_score)。

         select class_id , avg(score)  as  avg_score

         from student

         group by class_id;

 18.  分组聚合---多字段分组   

        有时,单字段分组并不能满足我们的需求,比如想统计学校里每个班级每次考试的学生情况,这时就可以使用多字段分组。多字段分组和单字段分组的实现方式几乎一致,使用 GROUP BY 语法即可。

-- 查询每个班级每次考试的学生人数
    SELECT customer_id, product_id, SUM(amount) AS total_amount
    FROM orders
    GROUP BY customer_id, product_id;

假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、exam_num(考试次数)、score(成绩)。请你编写一个 SQL 查询,统计学生表中每个班级每次考试的总学生人数(total_num)。

         select class_id,exam_num,count(*)  as total_num

         from student

         group by class_id,exam_num;

 19.分组聚合---having字句

          在 SQL 中,HAVING 子句用于在分组聚合后对分组进行过滤。它允许我们对分组后的结果进行条件筛选,只保留满足特定条件的分组。

HAVING 子句与条件查询 WHERE 子句的区别在于,WHERE 子句用于在 分组之前 进行过滤,而 HAVING 子句用于在 分组之后 进行过滤。

     假设有一个订单表 orders,包含以下字段:order_id(订单号)、customer_id(客户编号)、amount(订单金额)。数据如下:

      SELECT customer_id, COUNT(order_id) AS order_num
       FROM orders
        GROUP BY customer_id
        HAVING COUNT(order_id) > 1;

假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,统计学生表中班级的总成绩超过 150 分的班级编号(class_id)和总成绩(total_score)。

         select class_id ,sum(score)   as  total_score

         from  student

        group by  class_id  

         having  sum(score)>150;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值