转载:https://www.shiyanlou.com/challenges/2651

背景

从上节题目构建的课程数据库中提取每个用户最爱学的课程数据。

右边桌面是实验楼的服务器,服务器中的 MySQL 还没有启动,请注意 MySQL 的 root 账户默认密码为空。启动 MySQL 后会发现已经有了一个 shiyanlou 的数据库,访问的用户名为 shiyanlou,密码为 shiyanlou,shiyanlou 数据库中包含三个表:

  1. user:1000名实验楼用户数据,包含两列,用户ID和用户名
  2. course:10门实验楼课程数据,包含两列,课程ID和课程名
  3. usercourse:100条用户课程学习记录,包含四列,ID,用户ID,课程ID和学习时间(分钟)

目标

查询并将查询结果创建一个新表,任务完成后满足以下要求:

  1. MySQL 服务处于运行状态
  2. 新的表名称为 favorite,包含四列:id(主键),user_name(用户名),course_name(课程名),study_time(学习时间)
  3. favorite 表中存储的是所有在 usercourse 表中有学习记录的用户学习时间最长的课程,如果有多门课程学习时间相同,则都存入该表

提示语

注意 favorite 表中存储的不是用户ID和课程ID,而是用户名和课程名。

知识点

  1. SQL 基本语句
  2. SQL 分组和排序语句
  3. SQL 查询结果创建新表

来源

实验楼测试团队功能测试场景

————————————————————分割线——————————————————————————————————————

1.Linux环境下操作数据库,相对比较麻烦,不能修改,建议先在本机上写好代码再照抄

2.有几个地方需要注意的,前期时间都花在处理坑上了

1)需要启动mysql服务,然后就报错了,报the partition with /var/lib/mysql is too full! #意思是分区满了

 解决办法:重启mysql服务(先关闭再重启)

 sudo service mysql stop

sudo service mysql start

mysql -ushiyanlou -pshiyanlou  #(重启后直接连接就可以了)

2)写好代码后需要转变字符格式成utf8,可以自行百度(mysql表编码格式转换)

——————————————————————分割线————————————————

以下是示例代码(亲测结果为PASS,如有错误请自行检查)

查询到学习记录的用户学习时间最长的课程并排序

select user.name,course.name,usercourse.study_time
from user,course,usercourse
where user.id = usercourse.user_id AND course.id = usercourse.course_id
order by study_time desc

新建一张表,这里不详细说了,很简单,可以自行百度(mysql新建表)

插入前面的查询内容

INSERT INTO favorite (user_name,course_name,study_time)
select user_name,course_name,study_time
from
select user.name as user_name,course.name as course_name,usercourse.study_time
from user,course,usercourse
where user.id = usercourse.user_id AND course.id = usercourse.course_id
order by study_time desc

实验楼—Mysql—查找最爱学的课程的更多相关文章

  1. 2017-2018-1 我爱学Java 第三周 作业

    Team Presentation 团队展示 队员学号 队名 团队项目描述 队员风采 团队首次合照 团队的特色描述 团队初步合作 前两周合作过程中的优缺点 如何改进 团队选题 确立,建立和初步熟悉团队 ...

  2. 尚学linux课程---12、vim操作命令2

    尚学linux课程---12.vim操作命令2 一.总结 一句话总结: 要看不同的视频,每个视频的关键点都不一样,不如之间的的视频就没讲到vim中set nu是什么意思 学了的内容一定要练,不然真的是 ...

  3. 尚学linux课程---9、yum相关操作和知识

    尚学linux课程---9.yum相关操作和知识 一.总结 一句话总结: 如何使用比如163,阿里云给yum配置yum源:去官网,不要百度:直接去官网,有帮助文档的(比如centos的就在centos ...

  4. 尚学linux课程---8、rpm软件包安装

    尚学linux课程---8.rpm软件包安装 一.总结 一句话总结: rpm安装软件包的话要解决依赖问题,推荐使用yum安装软件包 1.比如cd /home中的斜线表示什么意思? 表示根目录,linu ...

  5. 使用 MySQL 查找附近的位置

    使用 MySQL 查找附近的位置 以下 SQL 语句将会在与坐标 37, -122 相距 25 英里的半径范围内查找最近的 20 个位置.该语句根据行的纬度/经度以及目标纬度/经度计算距离,然后只请求 ...

  6. Mysql查找如何判断字段是否包含某个字符串

    Mysql查找如何判断字段是否包含某个字符串   有这样一个需求,在Mysql数据库字符串字段(权限)中,用户有多个不同的邮箱,分别被‘,’分开,现在要取出某个邮箱的所有成员列表.   假设有个表: ...

  7. 好程序员web前端分享想要学习前端需要学那些课程

    好程序员web前端分享想要学习前端需要学那些课程,仔细思考了一下如何回答好这个话题,其实前端是一个涵盖面非常之广泛的一个职位,所需知识体系非常庞杂,与传统语言“想要精一行,必先通一门” 有很大差别, ...

  8. 何在mysql查找效率慢的SQL语句?

    如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启 ...

  9. [AaronYang]C#人爱学不学[1]

    当前编写时间:2014年12月24日21:11:14   编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...

随机推荐

  1. Java常用类(I)-时间和日期

    java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记. 相关类及概念 1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间 ...

  2. 【转】VGG网络结构及参数

     VGG网络  VGG16输入224*224*3的图片,经过的卷积核大小为3x3x3,stride=1,padding=1,pooling为采用2x2的max pooling方式: 1.输入224x2 ...

  3. background及background-size

    background有以下几种属性: background-color background-position background-size background-repeat background ...

  4. Nginx Location指令配置及常用全局变量

    ./configure的含义 在实践安装nginx的时候,不知道./configure是什么意思,这里特地记录一下. 在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代 ...

  5. 了解http协议

    http:超文本传输协议 https:安全超文本传输协议 FTP:文件传输协议 TCP:网络控制协议 IP:互联网协议 UDP:用户数据协议 https协议特点-------------------- ...

  6. Linux 内核链表 list.h 的使用

    Linux 内核链表 list.h 的使用 C 语言本身并不自带集合(Collection)工具,当我们需要把结构体(struct)实例串联起来时,就需要在结构体内声明指向下一实例的指针,构成所谓的& ...

  7. 用SufaceGO加微软全家桶做个遥控车(一)

    作为一个dotnet技术的新手我是不好意思写帖子的,原因就是本人技术太水了,写出的帖子肯定会让人笑话.所以这次我是厚着脸皮写出这个帖子的,希望大佬们轻喷了.我的目标就是用SurfaceGo实现一个和我 ...

  8. SecureRandom生成随机数超慢 导致tomcat启动时间过长的解决办法

    用腾讯云的CentOS 7.2 CVM 服务器跑Tomcat时发现,Tomcat启动的特别慢,通过查看日志,发现时间主要花在实例化SecureRandom对象上了. 由该日志可以看出,实例化该对象使用 ...

  9. MFC窗口去边框、置顶、全屏、激活

    静态移除长提边框非常easy,直接设置"Border"属性为"none"就可以 "Maximize Box", "Minimize ...

  10. HDU 2054 A==B? 大数

    Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES&quo ...