[Mysql] SQL的书写顺序与执行顺序
2023-09-11 14:22:54 时间
1.SQL书写顺序
-- 完整的SELECT语句(书写顺序)
SELECT [DISTINCT] 字段或表达式列表
FROM 表名
JOIN(LEFT JOIN, RIGHT JOIN) ON 连接条件
WHERE 筛选条件
GROUP BY 字段列表
HAVING 字段列表
ORDER BY 字段列表
LIMIT <m,n>;
其中SELECT
和FROM
关键字是必不可少的,其他关键字是可选的
示例
SELECT category, AVG(purchase_quantity)
FROM purchase_info
WHERE colour IS NOT NULL
GROUP BY category
HAVING COUNT(*) >= 2
ORDER BY AVG(purchase_quantity) DESC
LIMIT 1;
上述查询代码主要包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT关键字
2.SQL查询语句的执行顺序
-- 执行顺序
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT
1.执行FROM后面的语句,明确数据来源的表
2.执行WHERE后面的语句,对原始数据进行筛选
3.执行GROUP BY后面的语句,对数据进行分组
4.执行HAVING后面的语句,对分组聚合后的数据进行筛选
5.执行SELECT后面的语句,对处理好的数据选择取出的部分
6.执行ORDER BY后面的语句,对最终结果进行排序
7.执行LIMIT后面的语句,显示展示的部分条目
关于字段别名的使用:
(1)WHERE子句不能使用字段别名
(2)从GROUP BY子句开始,后面的所有子句可以使用字段别名
相关文章
- mysql 导入&导出sql文件
- Mysql进阶:从redo log与binlog日志来看一条SQL更新语句是如何执行的
- Mysql进阶:Mysql语句执行流程(一条SQL查询语句是如何执行的)?
- Mysql远程连接数据库报错排查:pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '**.**.**.**' (timed out)")
- Mysql运行状态查询命令及调优详解
- 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)
- 【Mysql sql inject】【入门篇】sqli-labs使用 part 3【15-17】
- 使用DBeaver一次性执行mysql多条sql
- MySQL 子查询 EXISTS 和 NOT EXISTS
- 阿里规范 - 五、MySQL 数据库 - (一)建表规约 - 2 - 数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑
- MySQL--执行mysql脚本及其脚本编写
- mysql之字符串操作
- MySQL常用命令
- MySQL专题3 SQL 优化
- Atitit 命令行执行sql 跨语言 目录 1.1. 无需输入密码,那就不要-p参数即可1 1.2. 4.使用mysql命令执行1 1.3. 5.mysql命令执行sql,并将查询结果保存到
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
- 〖Python 数据库开发实战 - Python与MySQL交互篇②〗- SQL 注入攻击案例
- Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
- MySQL Study之--Mysql无法启动“mysql.host”
- sqlalchemy 使用pymysql连接mysql 1366错误
- 使用Mysql Explain 查询sql执行计划
- 【高可用MySQL解决方案】centos7配置mysql主从复制
- MySQL报错Column count of mysql.user is wrong. Expected 43, found 42. Created with MySQL 50568, now run