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

Shell脚本与MySQL数据库交互(增删改查)

# 环境准备:安装mariadb 数据库
[root@localhost shell]# yum install mariadb mariadb-server mariadb-libs -y
[root@localhost shell]# systemctl start mariadb
[root@localhost shell]# netstat -tnlp |grep :
tcp 0.0.0.0: 0.0.0.0:* LISTEN /mysqld # 默认没有密码,直接mysql即可进入数据库管理控制台 # 新建数据库
create database school default character set utf8; # 导入测试数据
--建表
--学生表 CREATE TABLE student(
s_id varchar(),
s_name varchar() not null default '',
s_birth varchar() not null default '',
s_sex varchar() not null default '',
primary key(s_id)
); --课程表
create table course(
c_id varchar(),
c_name varchar() not null default '',
t_id varchar() not null,
primary key(c_id)
); --教师表
create table teacher(
t_id varchar(),
t_name varchar() not null default '',
primary key(t_id)
); --成绩表
create table score(
s_id varchar(),
c_id varchar(),
s_score int(),
primary key(s_id,c_id)
); --插入学生测试数据
insert into student values('','zhaolei','1990-1001-1001','male');
insert into student values('','lihang','1990-12-21','male');
insert into student values('','yanwen','1990-1005-20','male');
insert into student values('','hongfei','1990-1008-1006','male');
insert into student values('','ligang','1991-12-1001','male');
insert into student values('','zhousheng','1992-1003-1001','male');
insert into student values('','wangjun','1989-1007-1001','male');
insert into student values('','zhoufei','1990-1001-20','male'); --课程表测试数据
insert into course values('','chinese','');
insert into course values('','math','');
insert into course values('','english',''); --教师表测试数据
insert into teacher values('', 'aidisheng');
insert into teacher values('', 'aiyinsitan');
insert into teacher values('', 'qiansanqiang'); --成绩表测试
insert into score values('','',);
insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',); insert into score values('','',);
insert into score values('','',); # 添加指定数据权限的用户
MariaDB [school]> grant all on school.* to dbuser@'%' identified by '';
# % 默认是不允许localhost登录的,需要单独添加localhost的权限
MariaDB [mysql]> grant all on school.* to dbuser@'localhost' identified by ''; [root@localhost ~]# mysql -h 10.11.0.215 -u dbuser -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> mysql的常用选项 [root@localhost ~]# mysql -udbuser -p123456 -h10.11.0. -D school -e "select * from student;";
+------+-----------+----------------+-------+
| s_id | s_name | s_birth | s_sex |
+------+-----------+----------------+-------+
| | zhaolei | -- | male |
| | lihang | -- | male |
| | yanwen | -- | male |
| | hongfei | -- | male |
| | ligang | -- | male |
| | zhousheng | -- | male |
| | wangjun | -- | male |
| | zhoufei | -- | male |
+------+-----------+----------------+-------+ # -N 不显示列信息,-B 去除多余信息, -D 指定操作的数据库
[root@localhost ~]# mysql -udbuser -p123456 -h10.11.0. -B -N -D school -e "select * from student;";
zhaolei -- male
lihang -- male
yanwen -- male
hongfei -- male
ligang -- male
zhousheng -- male
wangjun -- male
zhoufei -- male # -E 垂直显示
[root@localhost ~]# mysql -udbuser -p123456 -h10.11.0. -E -B -N -D school -e "select * from student;";
*************************** . row *************************** zhaolei
--
male
*************************** . row *************************** lihang
--
male
*************************** . row *************************** yanwen
--
male
*************************** . row *************************** hongfei
--
male
*************************** . row *************************** ligang
--
male
*************************** . row *************************** zhousheng
--
male
*************************** . row *************************** wangjun
--
male
*************************** . row *************************** zhoufei
--
male # -H 以HTML格式显示
# mysql -udbuser -p123456 -h10.11.0. -H -B -N -D school -e "select * from student;";
<TABLE BORDER=><TR><TR><TD></TD><TD>zhaolei</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>lihang</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>yanwen</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>hongfei</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>ligang</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>zhousheng</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>wangjun</TD><TD>--</TD><TD>male</TD></TR><TR><TD></TD><TD>zhoufei</TD><TD>--</TD><TD>male</TD></TR></TABLE>

# -X 以xml格式显示
[root@localhost ~]# mysql -udbuser -p123456 -h10.11.0. -H -B -N -D school -e "select * from student;" > result.html
[root@localhost ~]# mysql -udbuser -p123456 -h10.11.0. -X -B -N -D school -e "select * from student;" > result.xml


批量删除生产环境数据库表的示例:

tables="templates_201904181553
templates_201904251425
templates_201904281550
templates_201904292018
templates_201905101118
templates_201905210938
templates_201905231928
templates_201906052000
templates_201906061640
templates_201907021640
templates_201907021922
templates_201907090936
templates_201907111535
templates_201907111545
templates_201907112119
templates_201907151538
templates_20190715194257
templates_201907161805
templates_201907171414
templates_20190717192927
templates_201907190923
templates_20190723214110
templates_201907290909
templates_201907291026
templates_201907300956
templates_20190731
templates_20190805
templates_20190807" for i in $tables;do mysql -uroot -p'pass' -D cms_db -e "drop table ${i};" >/dev/nul;done

shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)的更多相关文章

  1. 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】

    MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...

  2. Spring Boot入门系列(十八)整合mybatis,使用注解的方式实现增删改查

    之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询.虽然目前 mybatis 使用xml 配置的方式 已经极大减轻 ...

  3. .NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)

    一.引言 上一篇.NET ORM框架HiSql实战-第一章-集成HiSql 已经完成了Hisql的引入,本节就把 项目中的菜单管理改成hisql的方式实现. 菜单管理界面如图: 二.修改增删改查相关代 ...

  4. HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成数据的增删改查

    转:http://www.th7.cn/db/nosql/201510/135382.shtml 1. HDFS的文件append功能 早期版本的HDFS不支持任何的文件更新操作,一旦一个文件创建.写 ...

  5. java数据库(MySQL)之增删改查

    1.查询数据 先救从简单的来吧,之前我们实现了将数据库表格信息读取到一个List集合中,数据库的查询,实 际上就是对这个集合的查询: public class Show { public static ...

  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查

    笔记 2.使用Mybatis注解开发视频列表增删改查     讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句              1.控制台打印sql语句      ...

  7. VS连接Access数据库--连接字符串及执行查询语句的方法(增删改查,用户名查重,根据用户获取密码查询)

    ACCESS数据的连接及语句执行操作,不难,久不用会生疏,每次都要找资料,干脆自己整理下,记录下来,需要的时候,直接查看,提高效率.也供初学者参考 1.连接字符串 public static stri ...

  8. python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建

    一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...

  9. MongoDB 数据库创建删除、表创建删除、数据增删改查

    一.管理 mongodb 数据库:mongo 查看所有数据库列 表 show dbs 二. 创建数据库 创建 数据库 use student 如果真的想把这个数据库创建成功,(collections) ...

随机推荐

  1. 51nod 1720 祖玛

    吉诺斯在手机上玩祖玛的游戏.在这个游戏中,刚开始有n个石头排成一排,第i个石头的颜色是ci.游戏的目标是尽可能快的把所有石头都消掉. 每一秒钟,吉诺斯可以选择一段连续的子段,并且这个子段是回文,然后把 ...

  2. Angular CLI behind the scenes, part one

    原文:https://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art074 --------------------------- ...

  3. LGOJP3952 时间复杂度

    题目链接 题目链接 题解 细心模拟题.最主要就是要细心,并且注释不要嫌多&码风要好,心态要好.思路没捋清晰之前不要动手写代码. 对于\(ERR\),用栈来存放当前的数据.然后用个\(vis\) ...

  4. JDK源码那些事儿之LinkedBlockingDeque

    阻塞队列中目前还剩下一个比较特殊的队列实现,相比较前面讲解过的队列,本文中要讲的LinkedBlockingDeque比较容易理解了,但是与之前讲解过的阻塞队列又有些不同,从命名上你应该能看出一些端倪 ...

  5. AOP与Filter拦截请求打印日志实用例子

    相信各位同道在写代码的时候,肯定会写一些日志打印,因为这对往后的运维而言,至关重要的. 那么我们请求一个restfull接口的时候,哪些信息是应该被日志记录的呢? 以下做了一个基本的简单例子,这里只是 ...

  6. PAT乙级1045 快速排序

    1045 快速排序 (25分)   著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 ...

  7. php使用WebUploader做大文件的分块和断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  8. cube.js 学习(二)cube.js与 graphql2chartjs的比较

    cube.js 是目前看到从设计以及理念上很不错的数据分析事件,graphql2chartjs 是hasura graphql-engine 团队开发 的一个类库基于graphql,以下做一些比较 c ...

  9. Problem 4 dp

    $des$ 小 $Y$ 十分喜爱光学相关的问题, 一天他正在研究折射.他在平面上放置了 $n$ 个折射装置, 希望利用这些装置画出美丽的折线.折线将从某个装置出发, 并且在经过一处装置时可以转向, 若 ...

  10. Cogs 56. 质数取石子(博弈)

    质数取石子 ★★ 输入文件:stonegame.in 输出文件:stonegame.out 简单对比 时间限制:1 s 内存限制:128 MB 问题描述 DD 和 MM 正在玩取石子游戏.他们的游戏规 ...