MySQL第七次作业

Redis作业:
作业一:string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令
1、 string类型数据的命令操作:
(1) 设置键值:

	set key1 1
	
(2) 读取键值:

	get key1
	
(3) 数值类型自增1:

	INCR key1
	
(4) 数值类型自减1:

	DECR key1
	
(5) 查看值的长度:

	STRLEN key1

2、 list类型数据的命令操作:
(1)对列表city插入元素:Shanghai Suzhou Hangzhou

	LPUSH city Shanghai Suzhou Hangzhou

(2)将列表city里的头部的元素移除

	LPOP city

(3)将name列表的尾部元素移除到number列表的头部

	RPOPLPUSH name number

(4) 对一个已存在的列表插入新元素

	RPUSH city Beijing

(5)查看list的值长度

	LLEN city

3、 hash类型数据的命令操作:
(1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三

	HSET order id 1
	HSET order customer_name 张三

(2) 创建一个hash表,表里的键值批量插入

	HMSET order id 1 customer_name 张三

(3) 获取order对应的map的所有key

	HKEYS order

(4) 获取order对应的map的键值数量
HLEN order

(5) 获取order表里的id值

	HGET order id

4、Keys相关的命令操作
(1) 查看key是否存在

	EXISTS key_name
	
(2) 查找满足pattern的keys

	KEYS pattern
	
(3) 查看key的超时时间

	TTL key_name
	
(4) 遍历key

	SCAN cursor [MATCH pattern] [COUNT count]

作业二:举例说明list和hash的应用场景,每个至少一个场景
list:一个电商平台需要处理不同类型的优惠券,这些优惠券分为不同的优先级,过期时间也各不相同。可以使用列表来维护待处理的优惠券任务队列。
每当有新的优惠券发放时,将其插入到列表中,消费者按照优先级和时间顺序获取优惠券任务并进行处理。

hash:一个在线音乐平台需要存储用户的个人配置信息。可以使用哈希结构,将每个用户的ID作为键,个人配置信息(如喜欢的音乐流派、播放历史等)
作为哈希的字段和值存储起来。这样可以快速获取和更新用户的个人配置信息,而不需要每次都查询数据库

MongoDB 基本操作作业

(1)创建一个数据库 名字grade

use grade

(2)数据库中创建一个集合名字 class

db.createCollection('class')

(3)集合中插入若干数据 文档格式如下

{name:‘zhang’,age;10,sex:‘m’,hobby:[‘a’,‘b’,‘c’]}
hobby: draw sing dance basketball football pingpong
computer

db.class.insert([
{name:“zhang”,age:10,sex:‘m’,hobby:[‘a’,‘b’,‘c’]},

])

db.class.insertMany([
{name:'zhang',age:10,sex:'m',hobby:['a','b','c']},
{name:'li',age:11,sex:'f',hobby:['draw','sing','dance']},
{name:'wang',age:8,sex:'m',hobby:['basketball','football','pingpong']},
{name:'zhao',age:12,sex:'f',hobby:['computer']}])

查找练习
查看班级所有人信息

db.class.find()

查看班级中年龄为8岁的学生信息

db.class.find({age:8})

查看年龄大于10岁的学生信息

db.class.find({age:{$gt:10}})

查看年龄在 4—8岁之间的学生信息

db.class.find({age:{$gte:4,$lte:8}})

找到年龄为6岁且为男生的学生

db.class.find({age:6,sex:'m'})

找到年龄小于7岁或者大于10岁的学生

db.class.find({$or:[{age:{$lt:7},age:{$gt:10}}]})

找到年龄是8岁或者11岁的学生

db.class.find({$or:[{age:8,age:11}]})

找到兴趣爱好有两项的学生

db.class.find({hobby:{$size:2}})

找到兴趣爱好有draw的学生

db.class.find({hobby:'draw'})

找到既喜欢画画又喜欢跳舞的学生

db.class.find({$and:[{hobby:'draw'},{hobby:'dance'}]})

统计爱好有三项的学生人数

db.class.find({hobby:{$size:3}}).count()

找出本班年龄第二大的学生

db.class.find().sort({age:-1}).limit(1).skip(1)

查看学生的兴趣范围

db.class.distinct('hobby')

将学生按年龄排序找到年龄最大的三个

db.class.find().sort({age:-1}).limit(3)

删除所有 年级大于12或者小于4岁的学生

db.class.remove({$or:[{age:{$gt:12}},{age:{$lt:4}}]})

增加、更新、删除作业 :
使用之前的grade数据库
将小张的年龄变为8岁 兴趣爱好变为 跳舞 画画

db.class.updateOne({name:'zhang'},{$set:{age:8,hobby:['dance','draw']}})

追加小李兴趣爱好 唱歌

db.class.updateOne({name:'li'},{$push:{hobby:'sing'}})

小王兴趣爱好增加 吹牛 打篮球

db.class.updateOne({name:'wang'},{$push:{hobby:['吹牛','basketball']}})

小赵增加爱好,跑步和唱歌,但是不要和以前的重复

db.class.updateOne({name:'zhao'},{$addToSet:{hobby:{$each:['running','sing']}}})

该班所有同学年龄加1

db.class.updateMany({},{$inc:{age:1}},false,true)

删除小李的sex属性

db.class.updateOne({name:'li'},{$unset:{sex:0}})

删除小李兴趣中的第一项

db.class.updateOne({name:'li'},{$pop:{hobby:-1}})

将小张兴趣中的画画爱好删除

db.class.updateOne({name:'zhang'},{$pull:{hobby:'draw'}})

使用之前的grade数据库
增加分数域 score:{‘chinese’:88,‘english’:78,‘math’:98}
db.class.updateOne({ name: ‘zhang’ }, { $set: { score: { ‘chinese’: 88, ‘english’: 78, ‘math’: 98}}})

按照性别分组统计每组人数

db.class.aggregate({$group:{_id:'$sex',num:{$sum:1}}})

按照姓名分组,过滤出有重名的同学

db.class.aggregate([{$group:{_id:'$name',num:{$sum:1}}},{$match:{num:{$gt:1}}}])

统计每名男生的语文成绩

db.class.aggregate([{$match:{sex:'m'}},{$project:{_id:0,name:1,'score.chinese':1}}])

将女生按照英语分数降序排列

db.class.aggregate([{$match:{sex:'w'}},{$sort:{'score.english':-1}}])

你可能感兴趣的:(mysql,数据库)