数据库-day06-20201019-mongodb入门-练习-mysql数据库备份

yum -y install mongodb-server
# 如果提示没有可用的安装包
yum -y install epel-release.noarch
# 再次执行安装 就可以了
yum -y install mongodb-server # 服务端
yum -y install mongodb        # 客户端
# 运行
mongod -f /etc/mongod.conf
# 进入
mongo
# 查看数据库
> show databases;
admin  (empty)
local  0.078GB
>
> use zss;
switched to db zss
# 切换数据库 如果库不存在 会创建
# 这样直接会创建数据库zss 但因为数据库没表 就不显示这个数据库
> db.createCollection('student');
{ "ok" : 1 }
# 创建表
> show collections;
student
system.indexes
# 查看表
> db.createCollection('teacher');
{ "ok" : 1 }
> show collections;
student
system.indexes
teacher
> show databases;
admin  (empty)
local  0.078GB
zss    0.078GB
# 查看数据库
> db.student.insert({'name':'zss','age':18});
WriteResult({ "nInserted" : 1 })
# 插入数据
> db.student.find();
{ "_id" : ObjectId("5f8d4c87adc31d0da779df61"), "name" : "zss", "age" : 18 }
# 查看表里的所有数据
> db.student.insert({'name':'zsss','age':18});
WriteResult({ "nInserted" : 1 })
> db.student.find().pretty();
{ "_id" : ObjectId("5f8d4c87adc31d0da779df61"), "name" : "zss", "age" : 18 }
{
        "_id" : ObjectId("5f8d4ccbadc31d0da779df62"),
        "name" : "zsss",
        "age" : 18
}
# 查看表 格式好看点
db.dropDatabase();
# 删库 当前在使用的数据库
db.student.drop();
# 删除一个表
> db.student.update({'name':'zss'},{'name':'liul'});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.student.find().pretty();
{ "_id" : ObjectId("5f8d4c87adc31d0da779df61"), "name" : "liul" }
{
        "_id" : ObjectId("5f8d4ccbadc31d0da779df62"),
        "name" : "zsss",
        "age" : 18
}
# 修改数据

# python中使用mongodb
pip3 install pymongo

[root@node1 ~]# ipython
Python 3.6.8 (default, Apr  2 2020, 13:34:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from pymongo import MongoClient

In [2]: client = MongoClient(host='localhost',port=27017)
# 创建一个客户端 连接到mongodb服务器
In [3]: type(client)
Out[3]: pymongo.mongo_client.MongoClient

In [4]: db = client.zss
# 获取一个数据库对象
In [5]: db.student.find()
Out[5]: <pymongo.cursor.Cursor at 0x7feb3b1e8c50>

In [6]: for i in db.student.find():
   ...:     print(i)
   ...:
{'_id': ObjectId('5f8d4c87adc31d0da779df61'), 'name': 'liul'}
{'_id': ObjectId('5f8d4ccbadc31d0da779df62'), 'name': 'zsss', 'age': 18.0}
# 遍历查看表数据
# db.collection_name 获取到一个表 可以对其进行增删改查的操作
In [7]: db.student.insert({'name':'jack','age':22}) # 插入数据
/usr/local/bin/ipython:1: DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
  #!/usr/bin/python3
Out[7]: ObjectId('5f8d519dfe076bd25ad40a58')

In [8]: for i in db.student.find(): # find的结果是一个cursor对象 是一个可迭代对象
   ...:     print(i)
   ...:
{'_id': ObjectId('5f8d4c87adc31d0da779df61'), 'name': 'liul'}
{'_id': ObjectId('5f8d4ccbadc31d0da779df62'), 'name': 'zsss', 'age': 18.0}
{'_id': ObjectId('5f8d519dfe076bd25ad40a58'), 'name': 'jack', 'age': 22}


# 作业
# 查找以abs开头的员工信息
select * from emp where ename regexp '^[abs]'; # 正则匹配abs开头
select * from emp where left(ename,1) in ('a','b','s'); # 名字左边的第一个字母是a 或 b 或 s
# 返回员工的详细信息并按姓名排序
select * from emp order by ename;
select * from emp order by ename desc;
# 返回员工的信息并按照工作降序工资升序排序
select * from emp order by job desc,sal; # 工作降序 工资升序
# 返回拥有员工的部门名 部门号
select dept.deptno,dept.dname from emp inner join dept on emp.deptno=dept.deptno group by deptno;
select dept.deptno,dept.dname,group_concat(ename) from emp inner join dept on emp.deptno=dept.deptno group by deptno;
# 工资高于smith的人员
select * from emp where sal > (select sal from emp where ename='smith');
# 返回员工和所属经理的姓名
select emp.ename,manger.ename from emp inner join emp as manger on emp.mgr=manger.empno;
# 返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名
select emp.ename,emp.hiredate,manger.ename,manger.hiredate from emp inner join emp as manger on emp.mgr=manger.empno where emp.hiredate < manger.hiredate;
# 返回员工姓名及其所在部门名称
select ename,dname from emp inner join dept on emp.deptno=dept.deptno;
# 返回从事clerk工作的员工姓名和所在部门名称
select ename,dname from emp inner join dept on emp.deptno=dept.deptno where job='clerk';
# 返回部门号以及本部门的最低工资
select deptno,min(sal) as 最低薪资 from emp group by deptno;
# 返回销售部门所有员工的姓名
select ename form emp inner join dept on emp.deptno=dept.deptno where dname='sales';
# 返回与scott从事相同工作的员工
select * from emp where job = (select job from emp where ename='scott');
# 返回员工的详细信息
select emp.*,dename,loc from emp inner join dept on emp.deptno=dept.deptno;
# 返回员工工作以及从事此工作的最低薪资
select job,min(sal) as 最低薪资 from emp group by job;
# 返回工资处于第四级别的员工姓名
select * from emp,salgrade where emp.sal between salgrade.lowsal and salgrade.hisal and salgrade.grade=4;
# 返回工资为二等级的职员名字 部门所在地 和 二等级的最低工资和最高工资
select ename,sal,loc,lowsal,hisal from emp,dept,salgrade where salgrade.grade=2 and emp.deptno=dept.deptno and emp.sal between salgrade.lowsal and salgrade.hisal;
# 工资等级高于smith的员工信息
select emp.*,grade from emp,salgrade where sal between lowsal and hisal and grade > (select grade from salgrade,emp where ename='smith' and sal between lowsal and hisal);

# mysql 数据备份
# 1.为什么要备份
# 能够防止由于机械故障以及人为误操作带来的数据丢失 例如将数据库文件保存在了其他地方
# 冗余:数据有多份冗余 但不等备份 只能防止机械故障带来的数据丢失 例如主备模式 数据库集群
# 2.备份必须重视的内容
# 备份内容 databases Binlog my.conf
# 所有备份数据都应放在非数据库本地 建议多副本
# 测试环境做日常恢复演练 恢复较备份更为重要
# 3.备份过程中必须考虑的因素
# 数据的一致性
# 服务的可用性
# mysql备份类型
# 1.物理备份
# 对数据库操作系统的物理文件的备份 物理备份又可分为脱机备份(冷备份)和联机备份(热备份) 这种类型的备份适用于出现问题时需要快速恢复的大型重要数据库
# 热备
# 在线备份 数据库处于运行状态
# 对应用基本无影响 但性能还是会有下降 尽量不要在主上做备份 在从库上做
# 冷备
# 备份数据文件 需要停机 关闭数据库时进行的
# 备份datadir 目录下的所有文件
# 温备
# 针对myisam的备份 备份时实例只读不可写 数据库锁定表格
# 对应用影响很大
# 通常加一个读锁
# 2.逻辑备份
# 对数据库逻辑组件备份 表示为逻辑数据库结构 创建表 插入等信息 适用于数据库信息较少的
# 物理和逻辑备份的区别
# 备份策略
# 完全备份
# 差异备份 恢复全备 在恢复想要回到的那天   用的较多
# 增量备份 恢复全备 逐步一天一天恢复

# mysqldump 简介
# mysql自带的逻辑备份工具 可以保证数据的一致性和服务的可用性
# 备份原理是通过协议连接到mysql数据库 将需要备份的数据查询出来 将查询出来的数据转换成对应的insert语句 当我们需要还原这些数据时 只要执行这些insert语句 即可对应的数据还原
# 备份命令
# mysqldump [选项] 数据库名 [表名] > 脚本名
# mysqldump [选项] --数据库名 [选项 表名] > 脚本名
# mysqldump [选项] --all-databases [选项] > 脚本名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值