前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 常用命令记录与数据导入导出

Mysql 常用命令记录与数据导入导出

作者头像
呼延十
发布2019-07-01 16:25:39
3.1K0
发布2019-07-01 16:25:39
举报
文章被收录于专栏:呼延呼延

前一阵在写很多sql及类sql语句,发现自己的记忆力可以说是相当烂了,上午刚查过插入语句怎么写,下午就忘记了需要重新查,,而且隐隐约约的有点强迫症??只要记得不是特别清晰,就需要去重新查,看,记一遍,十分浪费时间,因此在这里将自己用到的sql语句记下来,方便后续的查找!!

PS:以个人习惯记录,切勿直接copy执行。文中命令/方法只是本人使用过的一些,不覆盖所有,例如:数据库导入导出还有其他多种方式,有兴趣可以自行研究。

PSS:我发现我终于记住了,在写下面表格时基本没有去查了。。

PSSS: 所有命令都手动实践过(不包含拼写错误),因此可以放心使用。

PS4: 如果大家觉得我写的不好,给大家介绍一个mysql学习的网站unoob.com ,这个网站有队mysql的基本入门介绍,且分类,示例都做的比较好。(我也是在上面学习的哈哈哈哈)。

基础语句

功能

语句

备注

插入语句

insert into 表(字段) values (值);

查找语句

select 字段 from 表 where 条件 order by 列 limit 数量

order/limit非必须

删除语句

delete from 表名 where 条件

修改语句

update 表名 set 字段=值 where 条件

去重值

select distinct 列名 from 表 where 条件

列名可以为多个,但同时作用于多个,使用需谨慎

模糊查找 like

select 列名 from 表 where 列 like ‘%嘻嘻%’;

谨慎使用,有性能问题

模糊查找 contact

省略前面 where 列 contact(‘%’,#{name},’’);

用于mybatis

数据库导入与导出

导出sql文件
  • 导出数据库的结构及数据 mysqldump -u 数据库用户名 -p 数据库名>导出路径及文件名 //example mysqldump -u huyanshi -p mydb>~/Desktop/mydb.sql
  • 导出数据库中某张表结构及数据 mysqldump -u 数据库用户名 -p 数据库名 表名>导出路径及文件名 //example mysqldump -u huyanshi -p mydb mytable>~/Desktop/mydb_mytable.sql
  • 导出数据库全部表结构 mysqldump -u 数据库用户名 -p -d --add-drop-table 数据库名>导出路径及文件名 //example mysqldump -u huyanshi -p -d --add-drop-table mydb >~/Desktop/mydb_st.sql
  • 导出某张表的结构 mysqldump -u 数据库用户名 -p -d --add-drop-table 数据库名 表名>导出路径及文件名 //example mysqldump -u huyanshi -p -d --add-drop-table mydb mytable >~/Desktop/mydb_mytable_st.sql
导出excel

有时会有一些运营/hr/IT来找你让你导出一些简单的数据,这个时候呢,工具化当然是一劳永逸的方法,但是大部分时间下我们正在着急的完成新feature(改bug),并没有时间来将数据查询工具化,那么此时,简单的给其一个excel就是一种良好的替代方法,excel也可以较为清晰的展(TA)示(men)数(xi)据(huan)。

代码语言:javascript
复制
mysql -u 数据库用户名 -p -e "查询语句" 数据库名>导出路径及文件名
//example
mysql -u huyanshi -p - e "select * from mytable" mydb>~/Desktop/result.xls
从sql文件导入

1.进入mysql命令行,创建数据库,使用数据库后执行source

代码语言:javascript
复制
mysql -u 数据库用户名 -p
输入密码
use mydb
source 文件路径及文件名
从xls文件导入

如果有这个需求的话,我建议写一个脚本进行导入,因为可以在脚本中保证数据的正确性,防止后续对数据进行处理时出现各种意外情况,同时,个人在遇到此需求时也都是使用脚本进行导入,对简单的命令没有研究,因此不做介绍。后续如果碰到新的需求可能会将脚本贴在这里。

关键字使用

distinct

distinct的效果为去重,举例如下: 现有数据

name

score

zhangsan

600

lisi

520

zhangsan

230

huyan

600

lisi

400

假设上表是学生的考试成绩,现在我们想知道表格中共有多少个学生,即获取第一列不重复的值

代码语言:javascript
复制
select distinct name from record;

返回结果为:

name

zhangsan

lisi

huyan

基本用法很简单,但是distinct 有一个限制,即去重列必须是返回列,比如:

代码语言:javascript
复制
select distinct name,socre from record;

该语句会对(name+score)的组合进行去重,即(zhangsan,600)和(zhangsan,230)会被认为是不同的两个记录。

想要实现类似于:“name字段去重,对于重复值取分数最高”这种效果需要自己实现,distinct不可以。

group by

group by语句可以实现对数据以一列或者多列进行分组,例如可以使用group by实现distinct的功能。

代码语言:javascript
复制
select name from record group by name

而在实际使用过程中,group by 语句经常和函数(求和,求均值,计数等)一起使用,(毕竟如果分组不是为了统计,那将毫无意义)。语句使用规范如下:

代码语言:javascript
复制
select 列名,函数 from 表名 group by 列名  having 条件

例如统计每个学生的分数之和:

代码语言:javascript
复制
select name,sum(score) from record group by name;

得到结果如下图:

name

sum(score)

zhangsan

830

lisi

920

huyan

600

group by语句也有类似于distinct的限制,查询的字段除了聚合函数(SUM ,AVG,COUNT…)以外 必须只能是分组的字段。即:

代码语言:javascript
复制
//错误语句
select name,score from record group by name;

会报错。其实想想,如果该语句不报错,那么同一个name对应的两个score应该返回哪一个值呢?

having 语句

having 语句一般与group 语句一起使用,作用为:对分组后的数据进行筛选,类似于where子句的语法,但是where子句作用于每一独立行,having语句作用于每一分组后的行。 示例:

代码语言:javascript
复制
select name,sum(score) from record having sum(score) > 650;

该语句会按name分组查询并取到score的总和,且过滤掉总和小于650的行。结果为: name | sum(score)| —|— zhangsan | 830 lisi | 920

order by

order by 语句一般在其他的基础语句后连接使用,功能为对返回结果进行排序,使用规则如下:

代码语言:javascript
复制
select * from record order by 列名1,列名2 [ASC][DESC]

mysql 可以对多个列排序,当有多个列时,仅当第一个列相同时使用第二个列进行排序。 mysql 默认使用升序,可以使用[DESC] 来使查询结果逆序输出。 示例:

代码语言:javascript
复制
select * from record order by score DESC;

查询结果为:

name

score

zhangsan

600

huyan

600

lisi

520

lisi

400

zhangsan

230

完。

ChangeLog

2018-09-02 添加基础语句 2018-09-04 添加数据库的导入导出 2018-09-08 添加distinct,group by,order by, having等基础语句的使用

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础语句
  • 数据库导入与导出
    • 导出sql文件
      • 导出excel
        • 从sql文件导入
          • 从xls文件导入
          • 关键字使用
            • distinct
              • group by
                • having 语句
                  • order by
                    • ChangeLog
                    相关产品与服务
                    云数据库 SQL Server
                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档