第6次作业-索引和视图

发布时间 2023-10-20 16:39:17作者: 昨夜星辰沦陷✨
这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13086
这个作业的目标 <第6次作业-索引和视图>

1.使用SQL语句ALTER TABLE分别删除studentsdb数据库的student_info表、grade表、curriculum表的主键索引。

alter table student_info drop primary key;
alter table grade drop primary key;
alter table curriculum drop primary key;



2.使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx。

create index cno_idx on curriculum(课程编号);

3.使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。

create index grade_idx on grade(分数);


4.使用SQL语句为grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_sid_cid_idx。

create unique index grade_sid_cid_idx on grade(学号,课程编号);

5.查看grade表上的索引信息。

show index from grade;

6.使用SQL语句删除索引grade_idx。再次查看grade表上的索引信息。

drop index grade_idx on grade;
show index from grade;


7.使用SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。

create view v_stu_c
as 
select g.学号,s.姓名,g.课程编号 from grade g,student_info s  where g.学号=s.学号;

select * from v_stu_c where 学号='0003';


8.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图包括所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的课程平均分。

create view v_stu_g
as  
select s.学号,s.姓名,c.课程名称,g.分数 from grade g,student_info s ,curriculum c where s.学号=g.学号 and g.课程编号=c.课程编号;

select avg(分数) 平均分 from v_stu_g where 学号='0001';


9.使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。

alter view v_stu_g
as  
select 学号,姓名,性别 from student_info;

select * from v_stu_g;


10.利用视图v_stu_g为student_info表添加一行数据:学号为0010、姓名为陈婷婷、性别为女。

insert into v_stu_g(学号,姓名,性别) values('0010','陈婷婷','女');

11.利用视图v_stu_g删除学号为0010的学生记录。

delete from v_stu_g where 学号='0010'; 

12.利用视图v_stu_g修改姓名为张青平的学生的高等数学的分数为87。

update grade set 分数=87
where 学号=(select 学号 from v_stu_g where 姓名='张青平') and 课程编号=(select 课程编号 from curriculum where 课程名称='高等数学');

13.使用SQL语句删除视图v_stu_c和v_stu_g。

drop view v_stu_c;
drop view v_stu_g;