欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL一些中重要命令

程序员文章站 2022-04-19 18:45:42
前言: 最近在面试的过程中,深感对MySQL一些重要命令的缺失。借着这个机会,补补这块的知识。不让自己只会增删查改,懂一些高级的东西 limit 用法 order by 用法 in 和 between的用法 join的用法 (一)limit用法 我们看下面的代码: 1 select id, name ......

前言:

  最近在面试的过程中,深感对MySQL一些重要命令的缺失。借着这个机会,补补这块的知识。不让自己只会增删查改,懂一些高级的东西

  • limit 用法
  • order by 用法
  • in 和 between的用法
  • join的用法

 

(一)limit用法

我们看下面的代码:

 1 select id, name from table limit 5, 10

一个简单的limit命令,limit m, n 代表从m+1个开始取n行数据,输出

上面也就是从第六行开始,输出10行。也就是输出6-15行

假设我们有如下表:

MySQL一些中重要命令

数据大概为100W条数据。

 

执行如下命令:

1 select * from BookIndex limit 10, 10;

MySQL一些中重要命令

 

用了0s,并且没有用索引。

在执行如下命令:

1 select * from BookIndex limit 1000000, 10;

MySQL一些中重要命令

同样十条数据,却用了0.31秒。同样是全盘扫描。

下面我用索引优化:

MySQL一些中重要命令

用了0.17秒。 0.31/0.17  大概快了两倍左右吧。

下面再次优化:

MySQL一些中重要命令

0.00s,可以说快的不知一点两点的。

记得用limit一定要用索引,并且如果m(偏移量)过大,先用where筛选一波数据出来在处理。

 

(二)order by用法

MySQL一些中重要命令

oder by 很是简单,而且是默认用了range索引。

默认升序,可以加上desc变为降序。

 

(三)in 和 between的用法

我们可以从explain看出,不管是in还是between都是用了索引。

而且between有一个强大的功能,和limit进行比较的时候。当偏移量较大,但取的数据量较小的时候,用between最为合适

看一下的实验

MySQL一些中重要命令

 

MySQL一些中重要命令

直接0.00s搞定,一点都不含糊。

 

(四)join的用法

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

"Persons" 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

 

inner join:

 

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

left join:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  

注意到没有最后一行OrderNo为空

right join:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
    34764

 

后言:

写完后,发觉好累,真的好累。写了两个多小时了,求爸爸让我上热门。

不过对MySQL的一些理解也更加深刻了,尤其是limit的使用。