一、前言

在之前的mysql基础里提了一下DQL语法,这里细讲一下

二、基础语法

select [all|distinct]            #全部|去重
{*|table.*|[table.field [as alias1] [,table.field2 [as alias2]][,...]}
from table_name [as table_alias][left|out|inner join table_name2]       #联合查询[where ...]                        #指定结果需要满足的条件[group by ...]                  #指定结果按照那几个字段来分组[having ...]                     #过滤分组的记录必须满足的次要条件[order by ...]                 #指定查询记录安一个或者多个条件排序[limit {[offset,]row_count | row_count offset offset}];       #指定查询的记录从哪条到哪条

三、子句执行顺序

  • 查询时,需要基于表的操作,所以第一步先执行 from
  • 要进行多表查询,需要先确定哪两个字段符合,所以第二步执行 on
  • 进行多表查询 确定表 第三步执行join 将两个表组合
  • 表确定后,需要进行条件筛选,所以第四步执行 where
  • 然后需要对数据进行分组,所以第五步执行 group by
  • 分组后需要对分组后的数据再次进行过滤,所以第六步是执行 having
  • 过滤完后需要选择获取的字段 所以第七步是执行 select
  • 查询完获得结果进行去重 所以第八步是执行 distinct
  • 查询完后在进行对获取到的数据进行排序 所以第九步是排序 order by
  • 最后将所获得的结果进行截取获取 所以第十步是 limit

执行顺序就是
from > on > join > where > group by > having > select >distinct > order by >limit

四、where条件语句

用于检索数据表中符合条件的记录
搜索条件可以由一个或多个逻辑表达式组成,结果一般为真或假
搜索条件一般由 逻辑操作符、比较操作符组成
多个条件查询使用 and 连接

逻辑操作符:

比较操作符:

like 有两个占位符:

通配符 %:匹配0或0个以上的字符。
占位符 _: 匹配一个字符。

如:

# 这里的只要条件包含三就满足要求 前面和后面任意字符
select * from student where name like '%三%';
# 这里的前后都有且只能有一个字符才满足条件
select * from student where name like '_三_';

五、多表查询

多表查询分为两种方式分别为:内连接(inner join)和外连接 (out join)
外连接又分为两种:左外连接(left join) 和右外连接(right join)

区别:

5.1、内连接

语法:

# 这里inner join 也可以写成join  join默认就为内连接
select 表一.字段,表二.字段...
from 表一
inner join 表二 on 表一.字段=表二.字段

例如:

select stu.sname,stu.sage,stu.ssex,sca.cid,sca.score ,scb.cid ,scb.score
from student stu
inner join sc sca on stu.sid = sca.sid
join sc scb on stu.sid = scb.sid

5.2、外连接

5.2.1、左外连接

以左表为基础,将右表拼接

语法:

select 表一.字段,表二.字段...
from 表一
left join 表二 on 表一.字段=表二.字段

例如:

select stu.sname,stu.sage,stu.ssex,sca.cid,sca.score ,scb.cid ,scb.score
from student stu
left join sc sca on stu.sid = sca.sid

5.2.2、右外连接

以右表为基础,将左表拼接

语法:

select 表一.字段,表二.字段...
from 表一
right join 表二 on 表一.字段=表二.字段

例如:

select stu.sname,stu.sage,stu.ssex,sca.cid,sca.score ,scb.cid ,scb.score
from student stu
right join sc sca on stu.sid = sca.sid

5.3、笛卡尔积

笛卡尔积: 简单的排列组合
在mysql中会将第一个表的数据与第二个表的数据每个都连起来,若第一个表n条数据 第二个表m条数据,那么获得的数据为 n*m 条数据
这样数据会非常大,查询起来会及其低效,所以慎用。

select *
from student,sc;

六、order by 排序

指定查询记录按一个或多个条件进行排序
关键字:

desc 降序
asc 升序

语法:

# 升序
select * from 表 order by 字段 asc;
#降序
select * from 表 order by 字段 desc;

如:

# 将课程降序升序
select * from sc order by course;
# 若课程一样按照成绩降序
select * from sc order by course asc , score desc;

七、limit 分页

  • 第一个参数:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。
  • 第二个参数:返回具体行数。
# 返回前m条记录
select * from 表 limit m;
# 返回从第n条记录后的m条记录
select * from 表 limit n,m;# 若每页为m条记录 从第a页查询就是
select * from 表 limit (a-1)*m,m;

例子:

#返回前五条记录
select * from result limit 5;
# 返回6-10条记录
select * from result limit 5,5;

八、group by 分组

  • 对所有的数据进行分组统计
  • 分组的依据字段可以有多个,并依次分组
  • 与having结合使用,进行分组后的数据筛选
  • 一般group by 与聚合函数结合使用
    语法:
select 字段,聚合函数(字段) from 表 group by 字段 having 条件;

例如:

# 查询成绩表 以学科id分组 查询每门学科的平均值 条件为平均值大于90
select subjectno ,avg(studentresult) avg_sorce
from result
group by subjectno
having avg_sorce > 90;

Mysql -- DQL详解相关推荐

  1. pandas读写MySQL数据库详解及实战

    pandas读写MySQL数据库详解及实战 SQLAlchemy是Python中最有名的ORM工具. 关于ORM: 全称Object Relational Mapping(对象关系映射). 特点是操纵 ...

  2. Mysql Explain 详解

    Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...

  3. MySQL存储过程详解 mysql 存储过程

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  4. mysql存储过程详解[转]

    mysql存储过程详解[转] 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功 ...

  5. mysql-win安装教程,WINDOWS下安装MYSQL教程详解

    1.下载安装包 2.配置环境变量 2.1 解压所下载的压缩包 2.2 环境变量 win 10 电脑 这么进去 3.生成data文件 在你解压的目录下,eg:F:\Program Files\mysql ...

  6. MySQL Explain详解,分析语句为何运行慢

    MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语 ...

  7. 史上最简单MySQL教程详解(进阶篇)之存储过程(一)

    史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...

  8. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  9. mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例

    <MysqL教程MysqL 复制详解及简单实例>要点: 本文介绍了MysqL教程MysqL 复制详解及简单实例,希望对您有用.如果有疑问,可以联系我们. MysqL 复制详解及简单实例 主 ...

最新文章

  1. linux nas解决方案_阿里产品总监:四大 Linux 支持的 NAS 解决方案
  2. .NET 和 Mono 的一点历史
  3. 你还在使用IE6浏览器么?
  4. 华为鸿蒙系统议论文素材,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  5. LKMs:Loadable Kernel Modules
  6. semaphore性能问题_SQL Server性能调整– RESOURCE_SEMAPHORE等待
  7. 海康威视4路播放封装----安卓开发
  8. 佛大计算机控制系统期末试卷,[设计]统考计算机模拟练习试题及答案基础知识...
  9. python自动生成字幕脚本_自动生成字幕软件?
  10. html给文字设置自己下载的字体
  11. 仿制苏宁易购—静态网页
  12. 机器学习——决策树(ID3)的实现
  13. Oracle 12C Sharding部署和测试
  14. unity build-in管线中的PBR材质Shader分析研究
  15. 王老六计算机,crc校验和累加和校验哪个好
  16. 身份证号码的正则验证
  17. 主成分分析(principal component analysis, PCA)公式
  18. 二分查找的魔鬼细节详解
  19. 企业网路神警上网行为监管系统
  20. java集合到线程的考试_成都汇智动力-Java SE考试编程题总结

热门文章

  1. HMACSHA256原理解析
  2. 如何给给字符数组赋值
  3. 自学软件测试?先学完这些就已经够了....
  4. 用量子计算机创造史上首个虫洞 加州理工学院团队发Nature封面文章
  5. Allegro高级功能2【Shape Utilities功能—丝印反白】
  6. IntelliJ IDEA插件系列:四大炫酷神器你值得拥有
  7. 云钉一体后钉钉升级新协同 以事为中心推动企业管理革新
  8. unity3d炉石传说初期代码以及自己记录的知识点(初学者可看,有c#基础)
  9. Redis,MongoDB面试题
  10. 大数据的几大经典算法