MySQL一些中重要命令
前言:
最近在面试的过程中,深感对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行
假设我们有如下表:
数据大概为100W条数据。
执行如下命令:
1 select * from BookIndex limit 10, 10;
用了0s,并且没有用索引。
在执行如下命令:
1 select * from BookIndex limit 1000000, 10;
同样十条数据,却用了0.31秒。同样是全盘扫描。
下面我用索引优化:
用了0.17秒。 0.31/0.17 大概快了两倍左右吧。
下面再次优化:
0.00s,可以说快的不知一点两点的。
记得用limit一定要用索引,并且如果m(偏移量)过大,先用where筛选一波数据出来在处理。
(二)order by用法
oder by 很是简单,而且是默认用了range索引。
默认升序,可以加上desc变为降序。
(三)in 和 between的用法
我们可以从explain看出,不管是in还是between都是用了索引。
而且between有一个强大的功能,和limit进行比较的时候。当偏移量较大,但取的数据量较小的时候,用between最为合适
看一下的实验
直接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的使用。
上一篇: jquery ajax方式直接提交整个表单核心代码
下一篇: 判断ssh远程命令是否执行结束
推荐阅读
-
MySQL在command line Client下的一些命令
-
linux CentOS 系统下如何将php和mysql命令加入到环境变量中
-
Linux中的find命令使用时的一些注意点整理
-
MySQL中的约束,添加约束,删除约束,以及一些其他修饰讲解
-
mysql数据库表的创建以及字段的增删改查操作及一些常用的查询命令介绍
-
CentOS实现将php和mysql命令加入到环境变量中的几种方法
-
linux系统下将php和mysql命令加入到环境变量中的方法
-
Oracle中实现MySQL show index from table命令SQL脚本分享
-
Mysql中varchar类型一些需要注意的地方
-
mysql中存储过程、函数的一些问题