1.创建脚本test.sh

!/bin/bash  HOSTNAME="192.168.111.84"                                           #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test"                                                       #数据库名称
TABLENAME="test_table_test"                                            #数据库中表的名称#也可以写 HOSTNAME="localhost",端口号 PORT可以不设定#创建数据库,下面是第一种方式,直接链接数据库并且执行sql
create_db_sql="create database IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"#第二种,不执行sql,而是连接数据库,使用<<EOF将后面的语句作为输入执行,
#Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返#回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#下面是sql,注意!可以写多条SQL,但每条sql之间使用;分割
select * from test_table_test;
select now();
create temporary table temp (select * from test_table_test);
EOF

2.给脚本赋予执行权限,将上述文件保存成sh文件,然后赋予权限chmod +x,即可执行。

chmod +x test.sh

3.执行sh

./test.sh

MYSQL在shell脚本中使用命令行的一些注意点

1.使用上述第二种方式操作MySQL时,书写SQL语句时,变量的赋值问题

!/bin/bash  HOSTNAME="192.168.111.84"                                           #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test"                                                       #数据库名称
TABLENAME="test_table_test"                                            #数据库中表的名称CONDITION='a = 1 and b = 2'
COLUMNVALUE='21314'mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#r如果是条件,可直接拼接在sql后
select * from test_table_test where ${CONDITION};#如果是字段值.需要引号
select * from test_table where a = '${COLUMNVALUE}'
EOF

2.shell脚本中,如果sql语句中某些表的字段名与MySQL关键字一样,则需要转意

!/bin/bash  HOSTNAME="192.168.111.84"                                           #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test"                                                       #数据库名称
TABLENAME="test_table_test"                                            #数据库中表的名称mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}#r如果test_table表中有一个字段名叫system,则查询时需要使用\转意
select \`system\` from test_table_test;EOF

3.使用临时表时需要注意,在一个查询中只能使用一次临时表,创建临时表后,原表会被屏蔽,只有删除了临时表后才能查询到原表

tips:关于临时表的使用

show tables 语句不会列举临时表;

临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。这就意味着你可以在两个不同的连接里使用相同的临时表名,并且相互不会冲突,或者使用 已经存在的表,但不是临时表的表名。(当这个临时表存在的时候,存在的表被隐藏了,如果临时表被drop,存在的表就可见了)

临时表只能用在 memory,myisam,merge,或者innodb

!/bin/bash  HOSTNAME="192.168.111.84"                                           #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="111"DBNAME="test_db_test"                                                       #数据库名称
TABLENAME="test_table_test"                                            #数据库中表的名称mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD}<<EOF
use ${DBNAME}create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null); #下面语句执行会报错,can not reopen table
select * from tmp_table where exists (select count(*) from tmp_table)EOF 

shell脚本操作MYSQL相关推荐

  1. shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作

    来源:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520114116289991/ mysql  -hhostname -Ppor ...

  2. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...

  3. shell mysql e_shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作...

    mysql  -hhostname -Pport -uusername -ppassword  -e  相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作m ...

  4. shell mysql e_shell脚本操作mysql数据库

    使用 mysql -e 参数可以执行各种 sql 的各种操作语句.不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法. 格式:mysql  -hhostname -Pp ...

  5. Shell脚本调用mysql语句

    方法一: mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句. 不用在mysql的提示符下运行mysql,即可以在shell中 ...

  6. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  7. shell脚本修复MySQL主从同步

    shell脚本修复MySQL主从同步 发布:thebaby   来源:net     [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改my ...

  8. 使用shell脚本调用mysql数据库存储过程,并设置定时任务

    本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...

  9. shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤

    写一个shell脚本备份mysql数据库的步骤 发布时间:2020-05-25 15:47:41 来源:51CTO 阅读:221 作者:三月 下文我给大家简单讲讲关于写一个shell脚本备份mysql ...

最新文章

  1. [OpenJudge] 百练2754 八皇后
  2. 新Astaroth***病毒可利用杀毒软件窃取数据
  3. How is parsed BeanDefinition registered
  4. Vue 下拉刷新及无限加载组件 - 有你便是晴天 - 博客园
  5. STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)
  6. php中的递归查找文件夹,PHP递归遍历文件夹
  7. 音乐陶冶情操,怎样让孩子喜欢音乐?
  8. Vue2.0 之 自带浏览器里无法打开(兼容IE处理) - 解决方案 命令
  9. mysql的4字节字符支持_让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)
  10. 干货流出|腾讯内部几近满分的项目管理课程PPT
  11. 微信公众号禁止浏览器打开
  12. Android studio百度地图之定位到国外
  13. APS究竟是什么系统呢?看完文章你就知道了
  14. 阿里云DDoS防护是如何工作的?
  15. Soul App打造社交元宇宙,打破次元壁
  16. 微信html抽奖转盘代码,使用CSS3+jquery.js 实现微信抽奖转盘效果
  17. 删除 重复数据 mysql_mysql删除重复记录语句的方法
  18. hadoop-mapreduce-4
  19. 我的黑群晖学习之旅(1)系统安装篇
  20. 2022re:Invent:亚马逊云科技拥有强大的云原生数据能力

热门文章

  1. kurento教程_[译]WEBRTC开发框架Kurento和Jitsi的比较
  2. 【技术干货】数字电路电平标准
  3. mysql,oracle数据库优化之索引
  4. 微服务项目:尚融宝(30)(后端搭建:会员列表搭建(1))
  5. 【python3数据结构】Dijkstra’s算法(搜索最短路径问题)
  6. 小红书下架整改:难以把控的UGC
  7. Redis(超级无敌认真好用,万字收藏篇!!!!)
  8. ORACLE中ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法
  9. 经验:ARPG类手游战斗该如何表现?
  10. E480装Ubuntu16.04历程