首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网易MySQL微专业学习笔记(五)-SQL语言进阶

网易MySQL微专业学习笔记(五)-SQL语言进阶

作者头像
WindCoder
发布2018-09-19 18:22:17
5100
发布2018-09-19 18:22:17
举报
文章被收录于专栏:WindCoderWindCoder

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

所有笔记可能不定期更新,发布时不一定为最终版。

正文

ORDER BY 排序,默认升序

distinc 大表慎用

group by 分组

分组操作 显示字段包含分组字段及根据分组字段的聚合操作

select userid,count(*) from play_list group by userid having count(*)>2;

limit,offset

进行分页,从offset+1行开始,显示limit个数

select *from play_list where( createtime between 1 and 2) limit 10 offset 5;

offset为偏移量,不建议过大,如若offset 10000,数据库扫码10000行,从10001行开始

case when

实现类似编程语言的if else功能,可对sql的输出结果进行选择判断

select play_name, case when num is null then 0 else num end from paly_list;

连接-join

点连接、join连接、子查询

子查询:内层查询结果作为外层的比较条件。一般子查询都可以转换成连接,推荐使用连接。

子查询清晰方便,但性能上存在一定劣势,不利于mysql查询优化器优化。

连接主要通过嵌套循环的方式实行的,mysqly查询优化器会自行将小的作为外层表,大的作为内层表,但子查询是定死的。

left join 从坐标中返回所有的行,即使右表中没有匹配到行。

与left join对应的是right join关键字,会返回右表中所有的行,即使左表中没有匹配的行。

union

不同表中相同的字段聚合在一个结果集中返回。

默认去重,若不想去重,使用union all

DML进阶语法

多值插入:insert into table values(),()

覆盖插入:replace into tabke values()

忽略插入:insert ignore into table values()

查询插入:insert into table_a select*from table_b

覆盖、忽略插入,避免主键重复的的结果。

查询插入经常用于导表结构中。

insert主键重复则update;

insert into table tbl values (id,col1,col2) on duplicate key update col2=..;

连表update:

A表:id,age

B表:id,name,age

A表ID与b表id关联,

根据b表id更新a表id

update a,b set a.age = b.age where a.id = b.id;

连表删除

根据b表删除a表内容

根据b表name,删除a表中的字段

delete a from a,b where a.id = b.id and b.name = 'pw';

总结

select查询进阶语法

order by/distinct/group by having(聚合函数)/like(%前后缀)

连接语法

内连接、左连接、右连接、Union[all]

DML进阶语法

insert/连表update/连表delete

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • limit,offset
      • case when
        • 连接-join
          • DML进阶语法
            • 连表update:
              • 连表删除
                • 总结
                相关产品与服务
                云数据库 MySQL
                腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档