前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >您值得收藏的关系代数与Sql练习网站及实战操作

您值得收藏的关系代数与Sql练习网站及实战操作

作者头像
公众号guangcity
发布2019-09-20 17:30:59
1.6K0
发布2019-09-20 17:30:59
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

MySQL学习仓库Up-Up-MySQL,这是一个学习MySQL从入门实战到理论完善,再到精通的一个仓库,后面会把MySQL的学习资料上传上去!欢迎大家star与fork起来!

仓库地址:

https://github.com/Light-City/Up-Up-MySQL

也可以点击阅读原文!

今天上手第五弹,关系代数与Sql练习网站!

1.Relax

使用地址:http://dbis-uibk.github.io/relax/calc.htm#

这是一个sql与关系代数练习网站!非常好用,下面来看使用!

如下图所示:支持sql与关系代数语法!

选择数据集:

输入查询语句:(ps 看图发现自动生成关系代数,强不强大!)

输入关系代数:

2.实战题目:

用关系代数描述以下查询要求: 查询所有老师和学生的姓名 查询Kim老师的办公地点 查询CS系学生的学分情况 查询database课程成绩在90分以上的学生信息 查询没有选修任何课程的学生信息

选用数据库为Siberschatz-UniversityDB:

关键表解释:

代码语言:javascript
复制
instructor(ID, name, dept_name, salary)
deptment(dept_name, building, budget)
student(ID, name, dept_name, tot_cred)
course(course_id, title, dept_name, credts)
takes(ID, course_id, semester, year, grade)

教师信息instructor:教师号ID,教师名字name,教师所在的系dept_name,薪资salary
建筑department:系名dept_name, 建筑building, 预算budget
学生信息student:学生学号ID,学生姓名name,学生所在系dept_name,总学分tot_cred
课程course:课程号course_id,课程名称title,课程所属的系名dept_name,学分credits
选课信息takes:学生学号ID,课程标识course_id,课程段标识sec_id,学期semester,年份year,成绩grade

找出所有老师与学生的名字

所有老师:

代码语言:javascript
复制
select distinct name from instructor;

对应的关系代数:

代码语言:javascript
复制
π name (instructor)

所有学生:

代码语言:javascript
复制
select distinct name from student;

对应的关系代数:

代码语言:javascript
复制
π name (student)

查询Kim老师的办公地点

代码语言:javascript
复制
select b.building from instructor as a, department as b where a.name='Kim' and a.dept_name=b.dept_name;

对应的关系代数:

代码语言:javascript
复制
π b.building (σ a.name = 'Kim' and a.dept_name = b.dept_name ((ρ a instructor) ⨯ (ρ b department)))

先将departmentinstructor进行笛卡尔积,然后选择Kim老师的数据,再对building进行投影,得到办公地点。

查询CS系学生的学分情况

代码语言:javascript
复制
select tot_cred from student where dept_name='Comp. Sci.';

对应的关系代数:

代码语言:javascript
复制
π ID, name, tot_cred σ dept_name = 'Comp. Sci.' (student)

查询database课程成绩在90分以上(等级为A)的学生信息

代码语言:javascript
复制
select s.*,t.grade from student as s,course as c,takes as t where s.dept_name=c.dept_name and t.course_id=c.course_id and c.title='Database System Concepts' and t.grade='A';

对应的关系代数:

代码语言:javascript
复制
π s.ID,s.name,s.dept_name,s.tot_cred σ c.title='Database System Concepts' and t.grade='A' and c.dept_name=s.dept_name and c.course_id=t.course_id (ρ c course ⨯ ρ t takes ⨯ ρ s student)

查询没有选修任何课程的学生信息

代码语言:javascript
复制
π b.ID,b.name,b.dept_name,b.tot_cred σ a.ID=b.ID ((ρ a ((π ID student) - (π ID takes))) ⨯ (ρ b (student)))

先选出所有的学生ID再减去选课表中的学生ID,然后根据ID去检索学生表的信息,就是没有选修任何课程的学生信息。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Relax
  • 2.实战题目:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档