第一关任务描述
本关任务:
- 用insert给数据库添加数据
相关知识
有关系student(sno,sname,ssex,sage,sdept),属性对应含义:学号,姓名,性别,所在系。现有的部分元组如下所示
insert 向数据库表插入数据的基本格式有三种:R,S是关系名
- 1.insert into R(属性列表) values (对应属性的值列表)
- 2.insert into R values(对应关系默认属性的值列表)
- 3.insert into R(属性列表) select 属性列表 from S R, S 可以是同一关系
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。 你只需根据右侧提示,完成以下任务:
- 1.补全右侧代码片段中 第一题 下 Begin-End 区间的代码,实现功能:MA系新来一名学生,学号07002,姓名 lucy, 性别 F,年龄21,请用insert语句将该学生信息加入student。
-
2.补全右侧代码片段中 第二题下 Begin-End 区间的代码,实现功能:新来一名学生,学号07003,姓名 Andy ,性别 F, 但尚未知道年龄, 也未确定分配到哪个系, 请插入已知信息到student。 。
-
3.补全右侧代码片段中 第三题 下 Begin-End 区间的代码,实现功能:有一名学生学号是04005,其余信息与学号04003相同,请将学生信息插入表student。
注意:sql语句不区分大小写,但是元组的数据是区分大小写的。另外在Mysql中,字符串用""括起来。
测试说明
测试过程:
-
本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;
-
将得到的数据与答案比较,判断代码是否正确。
第一关实验代码
USE test_wyy_db_guet
GO
SET NOCOUNT ON
-- ********** Begin ********** --
-- ********** 此处写第一题的SQL语句 ********** --
insert into student values('07002','lucy','F',21,'MA');
-- ********** End ********** --
GO
-- ********** Begin ********** --
-- ********** 此处写第二题的SQL语句 ********** --
insert into student(sno,sname,ssex) values('07003','Andy','F');
-- ********** End ********** --
GO
-- ********** Begin ********** --
-- ********** 此处写第三题的SQL语句 ********** --
insert into student(sno,sname,ssex,sage,sdept)
select '04005',sname,ssex,sage,sdept from student
where sno='04003';
-- ********** End ********** --
GO
--此处请不要随意修改
select * from student
GO
第二关任务描述
- 使用update 修改关系中元组的值。
- 基本格式: update R set 属性名A=属性值B where 条件C 将关系R中满足条件C的元组中的属性A的值修改为B
编程要求
- 1.补全右侧代码片段中 第一题 下 Begin-End 区间的代码,将所有学生的年龄增加1岁;
- 2.补全右侧代码片段中 第二题 下 Begin-End 区间的代码,IS系改名为TS了,请修改相应学生的信息。
- 3.补全右侧代码片段中 第三题 下 Begin-End 区间的代码,MA系学生的学号前两位修改为08,其他不变. 学号长度为5,你们可以查阅right或substring函数,并用连接的方式得到新的学号。
使用的表结构: Student(Sno, Sname, Ssex, Sage, Sdept)
测试说明
测试过程:
-
本关涉及到的测试文件是 step2_test.sh ,平台将运行用户补全的 step2.sql 文件,得到数据;
-
将得到的数据与答案比较,判断代码是否正确。
第二关实验代码(right or substring)
USE test_wyy_db_guet
Go
SET NOCOUNT ON
-- ********** Begin ********** --
---------- 第一题----------
update student set sage=sage+1;
-- ********** End ********** --
GO
-- ********** Begin ********** --
---------- 第二题----------
update student set sdept='TS' where sdept='IS';
-- ********** End ********** --
GO
-- ********** Begin ********** --
---------- 第三题写法right----------
update student
set sno = '08' + right(sno,len(sno)-len('08'))
where sdept like 'MA%';
---------- 第三题写法substring----------
update student
set sno = '08' + substring(sno,3,5)
where sdept like 'MA%';
-- ********** End ********** --
GO
-- **********下面的语句请不要修改 ********** --
select * from student
GO
第三关任务描述
本关任务:使用 delete 删除符合条件的元组
相关知识
- delete语句格式 delete from R where 条件C
编程要求
我们已经为你建好了数据库与数据表R,S,并添加了相应的数据内容。 R代表本科生导师, S代表研究生导师,属性列一样,如下:
id varchar(20) not null,
name varchar(30) not null,
sex varchar(2) not null
-
1.补全右侧代码片段中 第一题 下 Begin-End 区间的代码,删除id是1002 的本科生导师元组
-
2.补全右侧代码片段中 第二题 下 Begin-End 区间的代码,删除研究生导师关系中,同时也是本科生导师,且性别为M的元组
-
3.补全右侧代码片段中 第三题 下 Begin-End 区间的代码,删除姓名是A开头的本科生导师元组
测试说明
测试过程:
-
本关涉及到的测试文件是 step3_test.sh ,平台将运行用户补全的 step3.sql 文件,得到数据;
-
将得到的数据与答案比较,判断代码是否正确。
第三关实验代码
USE test_wyy_db_guet
Go
SET NOCOUNT ON
---------- 第一题 ----------
-- ********** Begin ********** --
delete from R where id='1002';
-- ********** End ********** --
GO
---------- 第二题 ----------
-- ********** Begin ********** --
delete
from
S
where id in
(select id from R where sex = 'M');
-- ********** End ********** --
GO
---------- 第三题 ----------
-- ********** Begin ********** --
delete
from R
where name like 'A%';
-- ********** End ********** --
GO
--********** 下面的语句请不要删除 ********** --
select id,name,sex from R
union all
select id,name,sex from S
GO
PS:
第三关的第二题查找id是因为其他属性均有可能重复(名字、性别);所以这里使用id而不用姓名。