sql语句字段书写顺序和执行顺序,sql语法

本文详细介绍了SQL查询的执行顺序,包括SELECT,FROM,WHERE,GROUPBY,HAVING,ORDERBY和LIMIT子句。同时,还涵盖了数据库的基本操作,如添加列,删除列,修改列名和类型,以及删除和重命名表。此外,还讨论了分页查询的实现方式。

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

书写顺序

select * 
from 表名 
where 条件 
group by 字段 
having 条件 
order by 
limit x,y
 
------
select cid,sum(score) from stu
where sid >= 1002
group by cid
having sum(score) > 100
order by sum(score) desc
limit 1

执行顺序

SELECT 
DISTINCT <select_list>
from   获得全部数据
<join_type> JOIN <right_table>
ON <join_condition>
where  过滤一部分数据
group by 分组
having   过滤分组后的数据
select  查询展现数据,这里 有聚合的话在 此时聚合
order   排序
limit   限制

图示

// 向现有表中添加列

alter table stu add sex char(1);

// 删除表中的列

alter table stu drop sex;

// 修改列名和类型

alter table stu change sex gender int;

// 修改列的存储类型

alter table stu change gender gender char(1);

// 修改表名

alter table stu rename student;

// 删除学生表

drop table student;

insert into 表名 (字段1,字段2,...) values (值1,值2,...);

delete from 表名 where 字段 = 值; -- 只删除符合条件的数据

update 表名 set 字段 = 值 [, 字段2 = 值2, ... ] [where 字段 = 值];

-- 删除全部[慎用]

delete from stu;

-- 删除全表

truncate table stu;

*******分页查询********

-- 分页中有些已知条件
-- 当前页    pageNo = 1
-- 每页数据量pageSize = 3
-- 数据总量  total = count(sid)
-- 页数     
 pageCount = total % pageSize == 0 ? total / pageSize : (total / pageSize) + 1
-- 第一页
select * from stu limit 0,3;
-- 第二页
select * from stu limit 3,3;
-- 第三页
select * from stu limit 6,3;
-- 第pageNo页
select * from stu limit (pageNo - 1)*pageSize,pageSize;

### SQL 查询字段执行顺序解析 在构建复杂的SQL查询时,理解各个子句的执行顺序至关重要。实际执行顺序如下: #### FROM 子句 FROM子句负责指定数据来源表并可以在此阶段进行多表联接操作[^4]。 ```sql FROM table_name ``` #### ON 条件 当涉及JOIN操作时,ON条件用于定义连接两个或更多表格之间的关系,在此阶段会初步筛选符合条件的数据行[^5]。 ```sql LEFT JOIN another_table ON condition_expression ``` #### WHERE 子句 WHERE子句紧接着作用于由FROMON产生的结果集上,进一步依据给定条件来缩小记录范围,从而减少后续处理的数据量[^1]。 ```sql WHERE column_name = value ``` #### GROUP BY 子句 GROUP BY按照一个或多个列对前面的结果集进行分组,以便能够应用聚合函数(如COUNT(), SUM()等)。这一过程发生在HAVING之前。 ```sql GROUP BY column_name ``` #### HAVING 子句 HAVING用来过滤经过GROUP BY后的分组结果,只保留满足特定条件的那些分组。值得注意的是,这里允许使用聚合函数来进行比较判断。 ```sql HAVING COUNT(column_name) > N ``` #### SELECT 字段列表 最终,SELECT决定返回哪些列以及如何展示它们。此时也会计算任何必要的表达式或调用内置/自定义函数[^2]。 ```sql SELECT column_name, aggregate_function(column_name), ... ``` #### DISTINCT 关键字 如果有DISTINCT关键字,则会在上述基础上去除重复项。 ```sql SELECT DISTINCT column_name ``` #### ORDER BY 排序 ORDER BY则是在所有其他操作完成后对最终结果集实施排序逻辑,支持单个或多列组合排序方式[^3]。 ```sql ORDER BY column_name ASC|DESC ``` #### LIMIT/TOP 限定数量 最后一步是LIMIT(某些数据库系统称为TOP),用于限制输出的最大行数。 ```sql LIMIT number_of_rows ``` 综上所述,虽然编写SQL语句时通常遵循`SELECT...FROM...WHERE...GROUP BY...HAVING...ORDER BY...LIMIT`这样的语法结构,但实际上内部执行流程略有差异,具体为:`FROM -> ON -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值