shell脚本的那点小事儿--shell脚本的数据库操作(六)

内容一:shell脚本的SQL语句

1.安装SQL

可视化安装,直接下载安装了

下载完成后:

2.打开数据库

开启之后

不用的时候,记得关闭数据库

连接数据库

终端输入:mysql -u root -p

3.退出数据库

登录数据库后,文件目录为mysql>

mysql>exit

4.显示数据库

mysql>show

appstore可以下载可视化界面

5.进入数据库

mysql>use xxxx数据库名;

6.删除数据库

mysql>drop database xxxx数据库名;

7.创建数据库

mysql>create database xxxx数据库名;

8.创建数据库表

mysql>create table tablename (s_id int(4) not null primary key, s_name char(20), gender char(2) not null default '男');

解决中文乱码问题:用varchar代替char

sql结束,分号前面加入ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8

e.g:

mysql>create table tablename(s_id int(4) not null primary key, s_name char(20), gender char(2) not null default '男')ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

create table t_product(t_product_id varchar(64),t_product_name varchar(64),t_product_price varchar(32),t_product_desc varchar(256),t_product_image varchar(256)) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

9.查看数据表列表

mysql>show tables;

10.插入数据

mysql>insert into tablename values(xxx, xxx, xxx)

e.g

mysql>insert into student_table values(1, '小明明', '1')

11.查询数据表

select * from tablename

select * from student_table where s_gender <> 0

12.更新表数据

update xxxx表名 set 更新key=value where condition

e.g:

update student_table set s_name='猪猪' where s_id='1';

13.删除数据表数据

delete from tablename where condition

e.g:

delete from student_table where s_id='1';

 

内容二:shell操作数据库

1.shell脚本登陆数据库

脚本代码:

#!/bin/bash
MYSQL=$(which mysql)
$MYSQL -u root -p

2.shell脚本退出数据库

脚本代码:

#!/bin/bash
MYSQL=$(which mysql)
$MYSQL -u root -p -e 'exit'

总结:

$MYSQL -u root -p:登录数据库

-e 'exit':表示执行退出命令

3.shell显示数据库列表

脚本代码:

#!/bin/bash

MYSQL=$(which mysql)
$MYSQL -u root -p -e 'show databases'

4.shell语言查询数据库表

#!/bin/bash

MYSQL=$(which mysql)
$MYSQL db_temp -u root -p -e 'select * from student_table'

语法:

$MYSQYL tablename -u root -p -e 'query statement'

5.查询数据库数据表->开始标记和结束标记,输入的重定向

EOF->开始标记

code

EOF->结束标记

脚本代码:

#!/bin/bash

MYSQL=$(which mysql)
$MYSQL db_temp -u root -p << EOP
    select * from student_table;
EOP

6.插入表数据

6.1常规操作

#!/bin/bash

MYSQL=$(which mysql)

$MYSQL db_temp -u root -p << EOP
insert into student_table values(2, '小明明', '1');
insert into student_table values(3, '小明', '1');
insert into student_table values(4, '明明', '1');

#查询验证插入情况
    select * from student_table;

EOP

6.2动态的传递参数,并且获取sql执行语句

#!/bin/bash

if [ $# -ne 3 ]
then
    echo "param isn't three, you must input three param"
else
    DB=$(which mysql)
    $DB db_temp -u root -p << EOF
        insert into student_table values($1, '$2', $3);

    EOF
    if [ $? -eq 0 ]
    then
        echo 'insert sccuess'
        $DB db_temp -u root -p << EOF
            select * from student_table;
        EOF
    else
        echo 'insert fales'
    fi
fi

7.插入数据和更新数据

#!/bin/bash

# 前三参数是值,第四个是条件 第五个是值
if [ $# -ne 5 ]
then
    echo "param isn't three, you must input five param"
else
    DB=$(which mysql)
    $DB db_temp -u root -p << EOF
        insert into student_table values($1, '$2', $3);
    EOF
    if [ $? -eq 0 ]
    then
        echo 'insert sccuess'
        #更新表的内容
        $DB db_temp -u root -p << EOF
            update student_table set s_gender=$5 where s_id=$4;
        EOF
        if [ $? -eq 0 ]
        then
            echo "update sccuess"
            #查询结果 打印表数据
            $DB db_temp -u root -p << EOF
                select * from student_table;
            EOF
        else
            echo "update fales"
        fi
    else
        echo 'insert fales'
    fi
fi

8.解决登录密码输入问题 (这是网上一些做法,我是没成功了,这是放出来给大家参考一下)

第一步找到mysql的配置文件

windows:my.ini

mac OS:my.cnf

mac OS path:/usr/local/etc/my.cnf(新版路径)

/usr/local/mysql-8.0.12-macos10.13-x86_64/support-files/my-Default.cnf(旧版路径)

新版的mysql是没有这个文件在/usr/local/mysql-8.0.12-macos10.13-x86_64/support-files/中的需要手动chuang jian

第二步将文件拷贝桌面进行修改,添加默认密码

在[client]下面配置如下代码

password=your password

user=your username

然后替换文件,重启服务器

9.shell脚本使用无密码登录

讲shell脚本中的-p去掉,-p是指定密码

10.批量插入

#!/bin/bash

#定义域分隔符->分割字符串
IFS=','
MYSQL=$(which mysql)
while read id name sex
do
    $MYSQL db_20171108 -u root << EOF
        insert into t_student(s_id, s_name, s_sex) values ($id,'$name', $sex);

    EOF
done < ${1}
#结合上一次导出.csv处理方式

内容三:拓展知识,两个窗口发送消息

1.who指令现实当前用户

avalanching console Sep 4 09:31

avalanching ttys000 Sep 10 09:39

avalanching ttys001 Sep 10 11:42

分析结果:

param1 用户名

param2 用户所在的终端

param4 登录时间

who -T指令

avalanching - console Sep 4 09:31

avalanching + ttys000 Sep 10 09:39

avalanching + ttys001 Sep 10 11:42

"-":未开通

"+":开通

 

2.mesg指令查看当前消息权限

is y已经开启

is n没有开启

4.发送消息

1.连接两个窗口

语法:write 用户 窗口名

write avalanching ttys000

5.开启消息功能

mesg y

注意:以上的缩进是为了方便查看层级关系,如果在运行代码中报错(not found command),请去除缩进,注意if后的空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值