mysql第7次作业

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

    2、 list类型数据的命令操作:
    (1)对列表city插入元素:Shanghai Suzhou Hangzhou
    (2)将列表city里的头部的元素移除
    (3)将name列表的尾部元素移除到number列表的头部
    (4) 对一个已存在的列表插入新元素
    (5)查看list的值长度
    3、 hash类型数据的命令操作:
     (1) 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
    (2) 创建一个hash表,表里的键值批量插入
    (3) 获取order对应的map的所有key
    (4) 获取order对应的map的键值数量
    (5) 获取order表里的id值
    
    4、Keys相关的命令操作
    (1) 查看key是否存在
    (2) 查找满足pattern的keys
    (3) 查看key的超时时间
    (4) 遍历key

string类型数据的命令操作:
# 设置键值
SET mykey "Hello"
# 读取键值
GET mykey
# 数值类型自增1
INCR mynumber
# 数值类型自减1
DECR mynumber
# 查看值的长度
STRLEN mykey

list类型数据的命令操作:
# 对列表city插入元素:Shanghai Suzhou Hangzhou
RPUSH city Shanghai Suzhou Hangzhou
# 将列表city里的头部的元素移除
LPOP city
# 将name列表的尾部元素移除到number列表的头部
RPOPLPUSH name number
# 对一个已存在的列表插入新元素
LPUSH mylist "New Element"
# 查看list的值长度
LLEN mylist


hash类型数据的命令操作:
# 设置一个hash表,order表里包括的键值信息有:id:1,customer_name:张三
HSET order id 1 customer_name "张三"
# 创建一个hash表,表里的键值批量插入
HMSET order id 1 customer_name "张三" order_date "2023-07-17"
# 获取order对应的map的所有key
HKEYS order
# 获取order对应的map的键值数量
HLEN order
# 获取order表里的id值
HGET order id

Keys相关的命令操作:
# 查看key是否存在
EXISTS mykey
# 查找满足pattern的keys
KEYS pattern*
# 查看key的超时时间
TTL mykey
# 遍历key
SCAN 0

作业二:举例说明list和hash的应用场景,每个至少一个场景

mongodb作业

1. 创建一个数据库 名字grade 

use grade


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

db.createCollection("class")


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

db.class.insertMany([
  {
    name: 'zhang',
    age: 10,
    sex: 'm',
    hobby: ['a', 'b', 'c']
  },
  // 插入其他学生的数据
])


4. 查找
查看班级所有人信息

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({ age: { $in: [8, 11] } })
找到兴趣爱好有两项的学生:
db.class.find({ hobby: { $size: 2 } })
找到兴趣爱好有draw的学生:
db.class.find({ hobby: 'draw' })
找到既喜欢画画又喜欢跳舞的学生:
db.class.find({ hobby: { $all: ['draw', '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.deleteMany({ $or: [{ age: { $gt: 12 } }, { age: { $lt: 4 } }] })
5. 增加、更新、删除、统计
将小红的年龄变为8岁,兴趣爱好变为跳舞和画画:
db.class.updateOne({ name: '小红' }, { $set: { age: 8, hobby: ['跳舞', '画画'] } })
追加小明兴趣爱好"唱歌":
db.class.updateOne({ name: '小明' }, { $push: { hobby: '唱歌' } })
小王兴趣爱好增加"吹牛"和"打篮球":
db.class.updateOne({ name: '小王' }, { $addToSet: { hobby: { $each: ['吹牛', '打篮球'] } } })
小李增加爱好"跑步"和"唱歌",但不重复已有的兴趣爱好:
db.class.updateOne({ name: '小李' }, { $addToSet: { hobby: { $each: ['跑步', '唱歌'] } } })
该班所有同学年龄加1:
db.class.updateMany({}, { $inc: { age: 1 } })
删除小明的sex属性:
db.class.updateOne({ name: '小明' }, { $unset: { sex: '' } })
删除小李兴趣中的第一项:
db.class.updateOne({ name: '小李' }, { $pop: { hobby: -1 } })
将小红兴趣中的"画画"爱好删除:
db.class.updateOne({ name: '小红' }, { $pull: { hobby: '画画' } })
增加分数域score: {'chinese': 88, 'english': 78, 'math': 98}:
db.class.updateOne({ name: '小明' }, { $set: { score: { 'chinese': 88, 'english': 78, 'math': 98 } } })
按照性别分组统计每组人数:
db.class.aggregate([
  { $group: { _id: '$sex', count: { $sum: 1 } } }
])
按照姓名分组,过滤出有重名的同学:
db.class.aggregate([
  { $group: { _id: '$name', count: { $sum: 1 } } },
  { $match: { count: { $gt: 1 } } }
])
统计每名男生的语文成绩:
db.class.aggregate([
  { $match: { sex: 'm' } },
  { $project: { _id: 0, name: 1, chinese: '$score.chinese' } }
])
将女生按照英语分数降序排列:
db.class.aggregate([
  { $match: { sex: 'f' } },
  { $sort: { 'score.english': -1 } }
])
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在创作MySQL数据库作业时,通常需要关注以下几个步骤和关键点: 1. **选择主题**:根据课程大纲或教师的要求,确定一个实际应用场景,比如学生信息管理系统、电商数据库设计等。 2. **需求分析**: - 定义数据表结构:列出所有需要的表格,如用户表、订单表、商品表等,并确定它们之间的关联。 - 列出字段:每个表格应包含哪些字段,如用户ID、姓名、电子邮件,以及订单号、商品ID、价格等。 3. **数据库设计**: -关系图)展示各个表及其之间的关系。 - 实施规范化:确保满足第二范式(2NF)、第三范式(3NF),避免冗余和更新异常。 4. **SQL语句编写**: - 创建表(CREATE TABLE):编写SQL语句创建数据表。 - 插入数据(INSERT INTO):添加初始数据以验证表结构。 - 查询(SELECT):编写各种查询语句,如查找特定信息、分组统计等。 - 更新(UPDATE)和删除(DELETE)操作:演示如何修改和删除数据。 5. **优化性能**: - 添加索引:针对常用查询列创建索引以提高查询速度。 - 数据库分区和分片:如果数据量大,可能需要考虑这些高级技术。 6. **错误处理和安全性**: - 使用事务(TRANSACTION)管理数据一致性。 - 防止SQL注入攻击,确保数据输入验证。 7. **文档编写**: - 编写清晰的数据库设计文档,包括表结构、字段描述、SQL操作示例等。 - 可能还需要写一份简短的项目报告,解释设计理念和实现过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值