mysql数据库常用操作命令集合之二

来源:互联网 发布:网线测试软件 编辑:程序博客网 时间:2024/06/05 08:24

在这里介绍了一下mysql的一些常用的命令,最近因为要根据各种条件过滤数据库,更多的函数和过滤条件被用到,这里面简单记录一下我所用到的一些命令,方便下次的查看。
1,查看数据库的历史命令:cat ~/.mysql_history,这个命令和linux的history类似,能够列出曾经使用过的命令。
2,将选择的数据导出到.txt文件中select Name from mytable where Name like '%google%' into outfile 'google.txt';该文件的路径为/var/lib/mysql/ 下面对应的数据库目录中。
3,group by按照某个属性列进行分组,去掉重复的数据:select * from mytable group by Name;按照Name为索引值对表进行去重,对于由多个Name相同的数据,只输出其中的一条数据。
4,group_concat()配合group by进行使用:select *,group_concat(org) as orgCollection from mytable group by Name;按照Name对数据进行聚合,然后使用group_concat(org)显示所有具有相同Name的org集合,该集合定义的属性名为orgCollection。
5,order by按照某个属性列进行排序:select * from mytable group by Name order by (rank+0)%5000;由于rank的类型为char(32),因此加上0,使其变为数字之后进行排序。
6,count函数返回匹配指定条件的行数select * from protocol group by Name having not count(*) > 1 order by (rank + 0);按照Name进行分组,过滤每组中条目数大于一个的记录。
7,having二次筛选,其和where都是用于筛选:select name,group_concat(org) from (select * from mytable group by md5,name) as t having group_concat(org) like ‘%,%’ order by name;主要的区别在于having 能够使用上述提到的count 以及group_concat等聚合函数,其实也就是having 用于对聚合分组的过滤,而where不可以;having可以使用as生成的别名,而where不可以;还有一种说法是having 是将所有数据从硬盘读入内存进行筛选,而where是将数据经过筛选后再读如内存。
8,locate(p1,p2)判断p1是否是p2的字串。select name,org,cn,rank from mytable group by name,md5 having locate( cn,org) order by (rank+0);
9,substring_index(str,delim,count)截取str中第count个 delim之前的所有字符select name,org,cn,rank from mytable group by name,md5 having locate(substring_index(name,'.',1),org) order by (rank+0);截取第一个’.’之前的所有字符。当然还有substring也是用于字符串的截取。
10,and 表示条件与,not表示条件取反,or表示条件或。相等使用=,不等使用!=
11,load,从外部文件中导入数据到table中,
load data local infile 'name.txt' replace into table protocol fields terminated by '\t' lines terminated by '\n';文件中的数据每一列的属性是按照\t分隔,每一行是按照\n分隔,并且导入的策略是替换重复的数据(replace)。
本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。