翼度科技»论坛 编程开发 mysql 查看内容

临时表、视图与系统函数_Lab2

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
          实验二 临时表、视图与系统函数

实验目的:

理解CTE与视图的知识,掌握临时表、CTE与视图的创建与使用方法,能够根据需要创建CTE、视图,掌握视图应用技术,熟悉常用系统函数的应用方法。
实验内容:

1、        针对指定的表进行全文检索配置,利用全文检索检索记录。
2、        创建视图。
3、        练习常用系统函数使用方法
实验过程及要求:

1、基于派生表或者CTE命令,完成以下操作,并把相应的命令写在空白处。
(1)写出查询学生基本信息的语句,包括学号、姓名、专业班级、本人平均分(score1)、本班平均分(score1)、本人完成学分总计。
(2)查询周四第5节有课的同学的名单,显示学号、姓名、专业班级、课程名。
2、写出以下视图的创建命令,并把命令写在空白处。
(1)查看课程表的视图,显示专业班级、课程名、教室、上课老师姓名
(2)创建学生视图,通过该视图只能更新数据学院的学生信息
(3)查看学生基本信息的视图,包括学号、姓名、性别、年龄、本人电话、班级名称、班导姓名、班导电话
4、        自主练习常用系统函数,理解函数的功能与含义。写出以下命令与结果
(1)        显示系统时间2年3个月后的日期与当年第几周,输出格式为:2023-09-21 38
(2)输出一个基于你的MySQL的UUID
(3)输出你的姓名全拼使用password、rsa、aes加密后的密码。格式如下:
zhangsan
password('zhangsan')=
rsa('zhangsan')=
aes('zhangsan')=

具体实验过程:

1. 基于派生表或者CTE命令,完成以下操作,并把相应的命令写在空白处。

  (1)查询学生基本信息的语句,包括学号、姓名、专业班级、本人平均分(score1)、本班平均分(score1)、本人完成学分总计。
  1. -- 创建一个CTE
  2. WITH student_info AS (
  3.   SELECT ustudent.Sid, ustudent.Sname, ugrade.gname
  4.     AS
  5.         class, usc.score1, AVG(usc.score1) OVER (PARTITION BY ugrade.gid)
  6.     AS
  7.         class_avg, SUM(ucourse.credit) OVER (PARTITION BY ustudent.Sid)
  8.     AS
  9.         total_credits
  10.   FROM ustudent
  11.   JOIN ugrade ON ustudent.gid = ugrade.gid
  12.   JOIN usc ON ustudent.Sid = usc.sid
  13.   JOIN ucourse ON usc.cid = ucourse.cid
  14. )
  15. -- 从CTE表中获取信息
  16. SELECT Sid, Sname, class, score1, class_avg, total_credits
  17. FROM student_info;
复制代码
AVG(usc.score1) OVER (PARTITION BY ugrade.gid) 为窗口函数的用法 partition by 是根据指定的分组


  (2)查询周四第5节有课的同学的名单,显示学号、姓名、专业班级、课程名。
  1. WITH thursday_schedule AS
  2. (
  3.   SELECT ustudent.Sid, ustudent.Sname, ugrade.gname AS class, ucourse.Cname
  4.   FROM ujobtable
  5.   JOIN ustudent ON ujobtable.gid = ustudent.gid
  6.   JOIN ugrade ON ustudent.gid = ugrade.gid
  7.   JOIN ucourse ON ujobtable.cid = ucourse.Cid
  8.   WHERE ujobtable.week = 4 AND ujobtable.timeseg like '%5%'
  9. )
  10. SELECT Sid, Sname, class, Cname
  11. FROM thursday_schedule;
复制代码



2. 写出以下视图的创建命令,并把命令写在空白处。

  (1)查看课程表的视图,显示专业班级、课程名、教室、上课老师姓名。
  1. CREATE VIEW course_schedule_view AS
  2. SELECT ugrade.gname AS class, ucourse.Cname, ujobtable.room, uteacher.tname AS teacher_name
  3. FROM ujobtable
  4. JOIN ugrade ON ujobtable.gid = ugrade.gid
  5. JOIN ucourse ON ujobtable.cid = ucourse.Cid
  6. JOIN uteacher ON ujobtable.tid = uteacher.tid;
复制代码

  (2)创建学生视图,通过该视图只能更新数据学院的学生信息。
  1. CREATE VIEW student_update_view AS
  2. SELECT *
  3. FROM ustudent
  4. WHERE gid IN (SELECT gid FROM ugrade WHERE did = 'CS');
复制代码


  (3)查看学生基本信息的视图,包括学号、姓名、性别、年龄、本人电话、班级名称、班导姓名、班导电话。
  1. CREATE VIEW student_info_view AS
  2. SELECT ustudent.Sid, ustudent.Sname, ustudent.Ssexy AS gender,
  3.         YEAR(CURDATE()) - YEAR(ustudent.Sbdate) AS age,
  4.         ustudent.stele AS personal_phone,ugrade.gname AS class,
  5.        homework.uteacher.tname AS class_teacher, homework.uteacher.tele AS class_teacher_phone
  6. FROM ustudent
  7. JOIN ugrade ON ustudent.gid = ugrade.gid
  8. JOIN ujobtable ON ustudent.gid = ujobtable.gid
  9. JOIN homework.uteacher ON ujobtable.tid = homework.uteacher.tid;
复制代码


4. 自主练习常用系统函数,理解函数的功能与含义。写出以下命令与结果

  (1)显示系统时间2年3个月后的日期与当年第几周,输出格式为:2023-09-21 38
  1. select DATE_ADD(DATE_SUB(curdate(), INTERVAL 2 YEAR ),INTERVAL 3 MONTH)
  2.      , WEEK(CURDATE()) AS CurrentWeek;
复制代码

  (2)输出一个基于你的MySQL的UUID
  1. SELECT UUID() AS generated_uuid;
复制代码

  (3)输出你的姓名全拼使用password、rsa、aes加密后的密码。

格式如下:
zhangsanpassword('zhangsan')= PASSWORD('zhangsan')
rsa('zhangsan')= RSA_ENCRYPT('zhangsan', 'encryption_key')
aes('zhangsan')= AES_ENCRYPT('zhangsan', 'encryption_key')

来源:https://www.cnblogs.com/cwh-top/p/17749854.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具