SQL-OCRL查找和筛选表格

本文介绍了SQL查询中的单表查询,包括聚合函数如count(), min(), max(), avg(), sum(),以及带过滤条件的分组查询,通过WHERE和HAVING的用法。此外,还讲解了Order by进行排序,LIKE进行模糊查询的方法。接着,文章探讨了多表查询的三种方法:通过JOIN操作实现,并展示了LEFT JOIN和RIGHT JOIN的应用,以及如何查找没有学生关联的班级信息。" 127223153,15782546,深入理解Python装饰器,"['Python', '开发语言']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单表查询

聚合函数:

  • 统计个数:count(): 根据表中实际数据量返回结果
  • 最小:min(),各种数据类型的统计
  • 最大:max(),各种数据类型的统计
  • 平均:avg(),针对数字的统计
  • 求和:sum(),针对数字的统计

带过滤条件的分组查询

1、where

WHERE放在group by前

先过滤然后再进行分组

where后面不能使用聚合函数

2、HAVING

HAVING必须配合group by使用 ,并且放在group by后面

【WHERE是在分组前过滤,having是在分组后过滤】

#计算工资在2000以上且各种职位的平均工资大于3000的职位及平均工资

3、Order by 条件 desc(降序)/asc(升序,默认,可省略)

SELECT

       表格-列

       ,AVG(列)

       ,Count(1)

FROM 表格

WHERE 列  条件

GROUP BY 列

HAVING 条件

ORDER BY 条件 desc/acs

*********************************************************

表格1

表格2 

查找平均分数在80分以上的班级,平均分按降序排序

SELECT

        s.C_ID 班级

        ,AVG(s.SCORE ) 平均分

FROM  STUDENTS s

GROUP BY s.C_ID

HAVING AVG(s.SCORE ) >=80

ORDER BY 2 desc

4、模糊查询  LIKE

  • %:代表零个或多个字符
  • [^]:不在范围内
  • []:在某一范围内的字符,表示括号内的任一个,有规律的连续数据可表示为[0-9]、[a-g]
  • _:代表任一字符,用于控制字符的长度

************************************************************************************************************

--显示名字中有‘i’的学生性别

SELECT

       s.S_NAME

       ,s.SEX

FROM STUDENTS s

WHERE s.S_NAME LIKE '%i%'

 

 二、多表查询

  • 方法一

SELECT *

FROM 表1,表2

WHERE 表1,(共性列) = 表2,(共性列)

AND 表1(列) In (‘字符串’)

ORDER BY 表1/2(列)

*********************************************************

----显示2班同学的姓名和班级名称和老师以及成绩

SELECT

s.S_NAME 姓名

,c.C_NAME 班级

,s.C_ID 班号

,c.C_TEA 老师

,s.SCORE 成绩

FROM STUDENTS s ,CLASS c

WHERE s.C_ID = c.C_ID

ORDER BY c.C_ID

  • 方法二

SELECT *

FROM 表1 JOIN 表2

ON 表1,(共性列) = 表2,(共性列)

WHERE 表1(列) In (‘字符串’)

ORDER BY 表1/2(列)

*********************************************************

--显示2班同学的姓名和班级名称和老师以及成绩

SELECT

s.S_NAME 姓名

,c.C_NAME 班级

,s.C_ID 班号

,c.C_TEA 老师

,s.SCORE 成绩

FROM STUDENTS s JOIN CLASS c

ON s.C_ID = c.C_ID

ORDER BY c.C_ID

  • 方法三

LEFT JOIN:左连接

RIGHT JOIN:右链接

①LEFT JOIN

SELECT *

FROM  表1(主表) LEFT JOIN  表2(附表)

ON  表1,(共性列) = 表2,(共性列)

②(+)表示附表,另一张则为主表

SELECT *

FROM 表1,表2

WHERE 表1,(共性列) = 表2,(共性列) (+)表示附表

**************************************************************************************************************

--查找出没有学生的班级信息

①LEFT JOIN

SELECT

         c.*

        ,s.C_ID

FROM CLASS c LEFT JOIN STUDENTS s

ON c.C_ID = s.C_ID 

WHERE s.C_ID IS NULL

②(+)表示附表,另一张则为主表

SELECT

         c.*

        ,s.C_ID

FROM CLASS c STUDENTS s

WHERE c.C_ID = s.C_ID 

AND s.C_ID IS NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值