本片文章主要内容为集函数、分组查询、(内联接、左联接、右联接)union联合查询
一、集函数
包含以下几个函数:
1.count()
count函数是用来计数的。
-- 查询该表一共有多少条信息
SELECT COUNT(*)
FROM typetbl_song
2.Sum()
求某一字段内容的和
-- 查询Hit字段的总和
SELECT SUM(Hit)
FROM typetbl_song
3.avg()
求某一字段的平均值
SELECT avg(Hit)
FROM typetbl_song
4.max(),min()
一列字段的最大值(最小值)
SELECT MAX(Hit),MIN(Hit)
FROM typetbl_song
二、分组查询
语法:
select 字段名
from 表名
group by 分组依据
【having 条件】
eg:根据歌手地区和歌手类型分组,统计歌手人数,要求显示歌手地区、歌手类型和歌手人数
group by后面可以跟多个分组依据
SELECT Area,SingerType,COUNT(*)
FROM typetbl_singer
GROUP BY SingerType,Area
2.排序方法order by
同样排序也可以在后面接多个排序依据,前面的优先级高,先依据前面的依据来排列,当存在相同情况的时候,再依据第二个来排序
eg:统计每位歌手所唱的歌曲数,要求列出歌手名和歌曲数,并按歌曲数量升序排列
SELECT typetbl_singer.singername,COUNT(*)
FROM typetbl_singer,typetbl_song
WHERE typetbl_singer.Singerid=typetbl_song.singerid
GROUP BY typetbl_singer.singername
ORDER BY COUNT(*) ASC, -- 先以计数升序排列
LENGTH(typetbl_singer.SingerName) asc --名字长度升序排列
三种联接
主要说一下内连接(inner join)
首先有两种语法方式
- select 字段名,字段名,…from 表名1,表名2 where 表名1主键 = 表名2主键 (后面可以跟一系列的筛选、排序条件)
- select 字段名,字段名,…from 表名1 inner join 表名2 on 表名1主键=表名2主键(同上)
———————————————我要分割上下————————————————
左联接(left join)(以表1为主,当表一有表二没有的数据,也会在查询结果中显示)
select 字段名,字段名,…from 表名1 left join 表名2 on 表名1主键=表名2主键(同上)
右联接(right join)(以表2为主,同上)
还是做一个例子看看
完全链接(full join) 将两张表的所有的数据放到一张表
SELECT sit.singername '歌手姓名',sot.*
FROM singer_table sit LEFT JOIN song_table sot
on sit.singerid=sot.singerid
该结果是因为在表2里没有下面几个人的信息,但是以表一为主,最后还是显示在了结果栏里。