MySQL基础教程之DML语句详解


当前第2页 返回上一页

[where condition] 就是上面讲的条件查询;

[group by field1,field2,...,fieldn [with rollup]]?

  group by 关键字表示对field字段进行分类聚合;

  with rollup 关键字表示是否对分类聚合后的结果进行再汇总

[having condition] 对分类聚合后的查询结果集进行条件的过滤

where 和 having 的区别:

  1. where 是分组前的条件过滤;having 是分组后的条件过滤。
  2. where 是用原表列名做条件过滤;having 是用查询结果集列名做条件过滤。

? ? 优先选择where 条件过滤,这样可以减少结果集,进而提高分类聚合的效率。

中括号"[]"代表可选的意思,也就是说group by 前面的[where condition] 可有可无,后面的[with rollup] 和 [having condition] 也是可有可无。

group by 和distinct 的区别:? ? group by 是对指定列进行分组;distinct 是对查询结果进行去重。

加入where 和 having的例子:

列名为avg(stu_age) 看着有点怪怪,给他取个别名就一目了然:

5.4.排序查询

--最简单的排序查询:
select * from tablename order by field;
--完整语法:
select [field1,field2,...,fieldn] fun_name from tablename
 [where condition]
 [group by field1,field2,...,fieldn [with rollup]]
 [having condition]
 [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]];
DESC 代表降序(从大到小);ASC 代表升序(从小到大),asc为默认排序。也就是说你只要记住desc 就可以了。碰巧的是desc 是查询表设计的关键字,而且语法很简单:desc tablename;

单列排序:

多列排序:用符号 “,” 隔开即可

5.5.limit查询

? 又称为限制查询、范围查询、分页查询

--最简单的limit查询:offset_start和数组下标一样,从0开始算
select * from tablename limit offset_start,row_count;
--完整语法:这条sql是单表查询的完整版
select [field1,field2,...,fieldn] fun_name from tablename
 [where condition]
 [group by field1,field2,...,fieldn [with rollup]]
 [having condition]
 [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]]
 [limit offset_start,row_count];

例子1:从第1条开始,查询两条数据

例子2:从第2条开始,查询两条数据

=========================

= 以上就是关于单表查询的语法 =

= 以下则是关于两表联查的语法 =

=========================

5.6.连表查询

在需要关联多个表数据时使用。 学习左连接和内连接即可。

左连接:选出左表所有的记录,不管右表有没有和它匹配;左表是主,关联右表信息

select * from t1 left join t2 on t1.field1=t2.field2;

内连接:仅选出两张表中互相匹配的记录,没有匹配则结果为空

select * from t1 inner join t2 on t1.field1=t2.field2;

select * from t1,t2 where t1.field1=t2.field2;

5.7.子查询

在需要另外一个查询结果作为查询条件时使用。子查询用“()” 括起来。

如:查询学生“张三”的成绩

某些情况下,子查询可以转化为连表查询。如上面的例子可以写成连表查询:

5.8.记录联合

?将两个过多个表的查询结果合并成结果集输出。合并的条件是多个表的查询结果字段数要相同,注意是查询结果字段数不是表字段数。

select f1,f2,...,fn from t1

union/union all

select f1,f2,...,fn from t2

...

union/union all

select f1,f2,...,fn from tn

查询结果字段数不等,则报错

固定查询结果集字段数

5.9.select语句的执行顺序

自行证明该执行顺序是否正确,也算是对前面所学知识的一个巩固。?

(7)? SELECT?

(8)? DISTINCT <select_list>

(1)? FROM <left_table>

(3)? <join_type> JOIN <right_table>

(2)? ON <join_condition>

(4)? WHERE <where_condition>

(5)? GROUP BY <group_by_list>

(6)? HAVING <having_condition>

(9)? ORDER BY <order_by_condition>

(10) LIMIT <limit_number>?

6.总结

到此为止,关于日常操作最为频繁的表数据的插入(insert)、更新(update)、删除(delete)和查询(select)语句就讲完了。最为繁杂的查询语句,又名为DQL语句,是DML语句中的重点。

到此这篇关于MySQL基础教程之DML语句的文章就介绍到这了,更多相关MySQL基础之DML语句内容请搜索

更多Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

mysql日期如何转字符串

怎么检查看到mysql的用户名和密码

mysql分析sql的耗时问题

mysql命令行中文显示乱码怎么办

如何理解数据库事务隔离级别及脏读、不可重复读、幻读

windows下mysql8.0.29winx64安装配置方法图文教程

mysql提权的多种姿势汇总

添加mysql的用户名和密码是什么语句?

几种mysql大量数据插入或修改的方法比较

wdcp上如果修改mysql密码

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...