[数据库系统] 三、简单查询

该文详细介绍了数据库中的简单查询和多表查询操作,包括选择满足特定条件的元组、投影、集合操作以及各种类型的连接(如笛卡尔积、等值连接、自然连接、左外连接和右外连接)。通过具体的SQL语句示例,展示了如何在数据库中检索学生信息、课程信息,并解决实际问题。
摘要由CSDN通过智能技术生成

目录

第1关:简单查询

1.检索数据表所有的元组

2.检索符合条件的元组

educoder

 第2关:多表查询

1.笛卡尔积

2.等值连接

3.自然连接

4.左外连接和右外连接的表示方法及转换为SQL

educode

第3关:集合操作 

1.集合并操作

2.集合交操作

3.集合差操作

educode

第1关:简单查询

1.检索数据表所有的元组

        则使用不带where条件的select语句 select * from R

2.检索符合条件的元组

        使用关系代数操作符:

        (读作sigma),从关系R中选出满足条件C的元组(全部属性)的关系代数表达式,

        可转换为SQL语句 select * from R where C

3. 结合投影可选出满足条件C的指定属性集(L),关系代数表达式为:

        可转换为SQL语句 select L from R where C

在数据库test_wyy_db_guet中,有关系 Student(Sno, Sname, Ssex, Sage, Sdept),示例元组如下所示:

educoder

编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需根据右侧提示,完成以下任务:

  • 1.检索表 student 中ssex 为F 的所有学生信息;

  • 2.检索表 student中IS系所有学生的学号和姓名 。

  • 3.检索表 student中年龄小于20岁且性别是F的学生姓名 。

  • 本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

USE test_wyy_db_guet
GO

SET NOCOUNT ON

---------- retrieving  all columns----------
 
-- ********** Begin ********** --
-- ********** 此处写第一题的SQL语句 ********** --
select *
from student
where ssex='F';
-- ********** End ********** --

GO

---------- retrieving  sno and sname----------
-- ********** Begin ********** --
-- ********** 此处写第二题的SQL语句 ********** --
select sno,sname
from student 
where Sdept = 'IS';
-- ********** End ********** --

GO

---------- retrieving  sname----------
-- ********** Begin ********** --
-- ********** 此处写第三题的SQL语句 ********** --
select sname
from student
where Sage<20 and Ssex = 'F';
-- ********** End ********** --

GO

 第2关:多表查询

join操作符

1.笛卡尔积

RXS
可直接转换为SQL语句

2.等值连接

记作

可直接转换为SQL语句

3.自然连接

记作

可转换为SQL语句

4.左外连接和右外连接的表示方法及转换为SQL

注意若多个关系有同名属性,则用 关系名.属性名 指出重名属性

连接也可以与投影,选择等结合使用。

educode

编程要求

  • 1.补全右侧代码片段中 第一题 下 Begin-End 区间的代码,查询选修了‘2’号课程的学生的学号;
  • 2.补全右侧代码片段中 第二题 下 Begin-End 区间的代码,查询Liyong选修的课程成绩。
  • 3.补全右侧代码片段中 第三题 下 Begin-End 区间的代码,查询选修课程名称Math的学生学号。

使用的表结构:

Student(Sno, Sname, Ssex, Sage, Sdept)

Course(Cno, Cname,Ccredit)

SC(Sno, Cno, Grade)

  • 本关涉及到的测试文件是 step2_test.sh ,平台将运行用户补全的 step2.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

USE test_wyy_db_guet
Go

SET NOCOUNT ON


-- ********** Begin ********** --
---------- 第一题----------
select sno
from SC 
where Cno = '2';
-- ********** End ********** --
GO


-- ********** Begin ********** --
---------- 第二题----------
select grade
from SC
join Student 
on (Student.Sno=SC.Sno)
where Sname = 'Liyong';
-- ********** End ********** --
GO

-- ********** Begin ********** --
---------- 第三题----------
select sno
from SC
join Course
on (SC.Cno=Course.Cno)
where Cname='Math';
-- ********** End ********** --
GO

第3关:集合操作 

1.集合并操作

可转换为SQL

若R,S的属性名不同,可使用重命名使相应列名一致后进行并操作

例如:R(A,B,C) S(D,E,F)

select A,B from R

union

select D as A, E as B from S

2.集合交操作

可直接转换为SQL

select * from R

intersect

select * from S

若属性名不同可参照并操作的重命名实现交操作。

3.集合差操作

R-S

可转换为

Select * from R

except

Select * from S

educoder

编程要求

我们已经为你建好了数据库与数据表R,S,并添加了相应的数据内容。

  • 1.找出所有的导师的姓名和性别

  • 2.找出既是本科生导师又是硕士生导师的全部信息,包括id,name,sex

  • 3.找出是本科生导师但不是硕士生导师的全部信息,包括id,name,sex

测试说明

测试过程:

  • 本关涉及到的测试文件是 step3_test.sh ,平台将运行用户补全的 step3.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

USE test_wyy_db_guet
Go

SET NOCOUNT ON

---------- 第一题 ----------
-- ********** Begin ********** --
select name , sex
from R
Union
select name , sex
from S
-- ********* End ********** --

GO

---------- 第二题 ----------
-- ********** Begin ********** --
select id , name , sex
from R
intersect
select id , name , sex
from S
-- ********** End ********** --

GO

---------- 第三题 ----------
-- ********** Begin ********** --
select id , name , sex
from R
except
select id , name , sex
from S


-- ********** End ********** --

GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球原来是这个样子啊我去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值