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

前言

这个系列属于个人学习网易云课堂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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

网易MySQL微专业学习笔记(八)-MySQL字符集

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

7720
来自专栏栗霖积跬步之旅

java多线程编程核心技术——第六章总结

1.0立即加载/“饿汉式”   立即加载:实用类的时候已经将对象创建完毕,常见的实现方法就是直接new实例化。   注:是在调用方法前,就已经实例化了(通常是...

19960
来自专栏java一日一条

mysql索引优化

当数据保存在磁盘类存储介质上时,它是作为数据块存放。这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性。硬盘数据块存储结构类似于链表,都包含数据部分,...

14840
来自专栏pangguoming

MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》

69220
来自专栏JAVA高级架构

SQL索引一步到位

12220
来自专栏游戏开发那些事

mysql数据库之基础SQL语句/语法

SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家! 简要介绍基础语句:  1、说明...

13320
来自专栏开发

mysql学习之优化总结(2)--索引的那些事

上一篇文章我们在研究MySQL查询过程的查询优化步骤中提到过优化索引可以优化查询优化的过程,索引到底是什么?它在查询过程中是一个怎样的角色?索引适用于什么场景?...

23050
来自专栏数据库

干货!超过500行的Mysql学习笔记

本文为作者初学Mysql时做的笔记,囊括了Mysql相关基本知识,内容较多超过500行笔记,希望对大家有帮助。 ? /* 启动MySQL */ net star...

23560
来自专栏JavaQ

三分钟学习分布式ID方案

在分布式系统中,当数据库数据量达到一定量级的时候,需要进行数据拆分、分库分表操作,传统使用方式的数据库自有的自增特性产生的主键ID已不能满足拆分的需求,它只能保...

14120
来自专栏Java技术栈

MySQL数据库开发的 36 条军规!

来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和PDF下载。...

19150

扫码关注云+社区

领取腾讯云代金券