MySQL学习笔记(2)--DQL连接、子、联合查询

 

MySQL学习笔记(2)--DQL连接、子、联合查询_第1张图片

1.cmd中登录mysql

MySQL学习笔记(2)--DQL连接、子、联合查询_第2张图片

2.任意选择一个数据库进入,这里我选择的是local1.

在该数据库中创建两个表:student表和mark表。

MySQL学习笔记(2)--DQL连接、子、联合查询_第3张图片

显示一下这两张表,看我们创建的是否正确

MySQL学习笔记(2)--DQL连接、子、联合查询_第4张图片

插入的时候要有先后顺序,应该先插入学生,再插入成绩。

按照如下语句依次插入:

插入后的表格为:

MySQL学习笔记(2)--DQL连接、子、联合查询_第5张图片

再按照如下语句依次插入成绩:

MySQL学习笔记(2)--DQL连接、子、联合查询_第6张图片

插入后的结果为:

MySQL学习笔记(2)--DQL连接、子、联合查询_第7张图片

这里不明白为什么第一条数据与第二条数据重复了????

准备工作完毕,准备查询。

MySQL学习笔记(2)--DQL连接、子、联合查询_第8张图片

内连接查询:

查询语句以及结果如下图所示,其中前面的s.和m.是为了避免引起歧义。

第一种写法:

MySQL学习笔记(2)--DQL连接、子、联合查询_第9张图片

第二种写法:(把第一种写法的,变为inner join,此时,其中的where也可以写为on)

MySQL学习笔记(2)--DQL连接、子、联合查询_第10张图片

左连接查询:

以left join左边的表为基准,即把student表显示完全,右边mark表中没有成绩的学生标记为空。

MySQL学习笔记(2)--DQL连接、子、联合查询_第11张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第12张图片

右连接查询:

MySQL学习笔记(2)--DQL连接、子、联合查询_第13张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第14张图片

其结果和内连接一样。

但其实右连接和内连接是不一样的,比如此时我们删除掉student表中的第四项数据,

然后再用右连接查询:

MySQL学习笔记(2)--DQL连接、子、联合查询_第15张图片

再用内连接查询:

MySQL学习笔记(2)--DQL连接、子、联合查询_第16张图片

会发现结果是不一样的。

所以此时应该用inner join来查询我们的数据,如果用左连接或者右连接查询,当两个表中其中一个表中的数据被delete时,就会出现问题。

联合查询:

MySQL学习笔记(2)--DQL连接、子、联合查询_第17张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第18张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第19张图片

把第2行与第5行的数据查询出来:

MySQL学习笔记(2)--DQL连接、子、联合查询_第20张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第21张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第22张图片

子查询:

查询出mark表中id为2和6的成绩(即查询出mark表中的部分成绩)

MySQL学习笔记(2)--DQL连接、子、联合查询_第23张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第24张图片

DQL查询之限制条数limit的使用:

MySQL学习笔记(2)--DQL连接、子、联合查询_第25张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第26张图片

获取最后一条记录的id,先倒序排列,再取最后一条

MySQL学习笔记(2)--DQL连接、子、联合查询_第27张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第28张图片

全部的数据是这个样子的:

MySQL学习笔记(2)--DQL连接、子、联合查询_第29张图片

MySQL学习笔记(2)--DQL连接、子、联合查询_第30张图片

limit2,2中前一个数字表示从哪一条数据的后面那一项数据开始显示,后一个数字表示显示的数据的条数。可以解决分页的问题。

 

 

 

你可能感兴趣的:(MySQL,数据分析)