SQL语句执行过程

一、创建表并插入信息

create table student(
id char(1) primary key,
name varchar(8),
sex char(2) default '男' ,
age int(3) default 0
)
 
insert into student values ('1','王明','男',18);
insert into student values ('2','孙丽','女',17);
insert into student values ('3','王明','男',27);
insert into student (id,sex,age) values ('4','男',27);

结果
在这里插入图片描述

二、SQL各子句

1、order by

对查询结果进行排序,必须置于SQL语句的最后。

语法:order by {column_name1, column_name2, column_name3, …column_namen} [asc|desc]
如:

select * from student order by age;#按照age升序排列
select * from student order by age asc;#按照age升序排列
select * from student order by age desc;#按照age降序排列

注意:
(1)在order by 子句中,不仅可以使用字段,还可以使用字段别名进行排序;
(2)order by之后可以跟多个字段,排序时首先按照第一个字段进行排序,若之间有相同数据在以第二个字段进行排序,之后以此类推直至排序完成;
(3)order by 若不指定asc或者desc则默认升序排列。

2、group by

group by用于将表中数据划分为若干个组,group by后面用于指定分组的依据。

 select sex,count(id) from student group by sex; #将student表学生按照sex分组,然后统计每组中的人数

结果
在这里插入图片描述
注意
如果select语句中使用group by进行了分组,则select子句中只可以有聚集函数和分组字段,不能含有其他字段,否则SQL语句报错,并且如果group by子句后面跟着order by子句,则order by子句用于排序的字段也必须是聚集函数或分组字段。

3、having

因为where后面不能使用多行函数,只能使用单行函数和字段,having关键字弥补了这一不足:having子句用于对分组结果进行约束

select name from student group by name having count(name)>1#查询哪些名字重名了

结果:王明

4、distinct

表中,可能会包含重复值。这并不成问题,不过,有时也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。

select distinct  name from student;

结果:王明,孙丽

三、各个子句执行顺序

有如下代码:

select sex,count(sex) total from student where name like '%' group by sex order by total

此处SQL语句执行过程为,首先筛选出符合where子句的数据,然后对这些数据以sex进行分组,最后将这些数据以count(sex)进行升序排序。
执行结果为:
女,1
男,2

各子句优先级为:where>group by >having>order by
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值