select …(输出) from…(获取数据)
where…(过滤)group by…(分组)
having…(过滤)order by…(排序)
limit…()限定个数
执行顺序
1.from 2.where 3.group by 4.select 5.having 6.order by 7 limit
数据的组织是以表的形式
sql相当于语言,可以查询数据库
mysql是软件,数据处理
Group by
group by 分组:分组展示后只展示第一行
group by 值1,值2.:值1值2相同的分一组
案例:
count(1)与count(分段语句)(计算)
区别:如果分段语句中有null那么count不记录null,其它情况二者一致
聚集函数:
1.count 计算
2.sum 求和
3.max 最大值
4.min 最小值
5.avg 平均值
6.group_concat (字符串的集合)
count的使用
count(1):全部数据
count(Name):有多少个不是空的数据
count(distinct Name):除了不是空之外将重复的值也要拿掉
sum(1)==count(1);
SQL
增删改查
对数据库有修改的操作是:增删改
对数据库没有修改的操作是:查(重要)
查询的SQL的结构是
select …from…where…group by…having…order by…limit…
写SQL的时候需要按照如下顺序写
from,where,group by,select,having,order by,limit
from的作用
from stu,将stu表中的数据都获取过来
where的作用
接受from中获取的数据进行过滤,and,or,!=
符合条件的数据留下,不符合条件的数据丢弃.
group by作用
group by classid,按照class id进行分组
分组后,如果遇到select,那么输出的代表是这一组的第一行数据
group by还可以和聚焦函数放在一起
having 的(再次过滤)
接受select以后的数据进行过滤
查询每个班里人数大于2的半径号是都是
select count(1) as n classId from stu group by classid having n>2;
select classid from stu group by classid having count(1)>2;
这一种方法是先将总数量搜出来,但不显示出来.在最后进行过滤.
order by(排序)
order by可以对两列进行排序.
第一列有有重复时第二列再次进行排序
Limit
limit 1,2(从第一条数据开始,去两条数据)
聚焦函数:
count(), sum(), max(), min(), avg(), group_concat()
创建数据库(schema)
create database 表名
插入数据使用的SQL
insert into stu(id,name,classid)values(. . . )
清空数据库
truncate 表名
使用group by进行输出的时候系统会默认按照分的组内容进行升序排序,加入desc就会进行降序排序