MySQL查询(进阶)(每个标点都是重点)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询(进阶)(每个标点都是重点)相关的知识,希望对你有一定的参考价值。

mysql 是工作中很普遍的需要用到的,所以必须掌握,而 之前我们一直说的都是怎么存.

你只会存不会取有个屁用.所以希望大家在如何查询读取数据这方面多下点功夫.

这篇和上一篇都是干货,我也是第一次学.反正我就是这样理解,这样一遍一遍写,一遍一遍看的才慢慢有点感觉的.

目前还整理的很乱,先将就看,等以后想起来了我会再进一步整理.

 
 
简单查询 : 单表查询和多表查询
distinct : 去重

单表的唯一查询用 distinct

group by : 分组

多表的唯一查询用 group by

select * from depariment,employee;

这个就叫做笛卡尔积.

把所有记录全都拼接一遍

查询两张表.把两张表拼接到一张表,依次排开.

两张表的所有记录都拼接了一次(若不理解,可以实际操作看一下).

这种方式无意义.

select * from employee,department where employee.dep_id = department.id; 干的是连表的活.

上面这是提取俩个表相同的部分.但是 but 不同的部分没留下对不对

下面就要用的很神奇的东西

******inner join 内连接:按照 on 的条件,只取两张表相同的部分,链接成一张虚拟的表.

select * from employee inner join department onemployee.dep_id = department.id;

翻译 : 我先查 employee, 在此基础上继续查 department,  on后面是条件.

select * from employee left join department onemployee.dep_id = department.id;

上面就是左链接

翻译 : 在按照 on 条件,取到两张表共同的基础上,保留左表的记录.

select * from employee rightjoin department onemployee.dep_id = department.id;

翻译 : 保留右表

上面就是右链接

下面说的是,要把左右表各自不一样的全拿出来,称为 : 全链接union

select * from employee left join department onemployee.dep_id = department.id

union

select * from employee rightjoin department onemployee.dep_id = department.id;

子查询:

in 是因为可能有多个

查询人数只有1人的部门名:

select name from department where id in ( select dep_id from employee group by dep_id having count(id) = 1 );

以上是关于MySQL查询(进阶)(每个标点都是重点)的主要内容,如果未能解决你的问题,请参考以下文章

最新Java开发进阶!使用Hystrix的插件机制

Mysq 分组查询语句以及添加条件的分组查询

MySQL的进阶实战篇

MySQL进阶实战7,查询的执行过程

mysql 进阶查询(学习笔记)

MySQL进阶实战7,查询的执行过程