索引和视图


欢迎来到鸿鹄会让我们一起学习吧!
我的邮箱2779372950@qq.com

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。
SELECT * FROM curriculum a;
CREATE UNIQUE INDEX  cno_idx
    ON curriculum(课程编号)
3. 使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。
 CREATE  INDEX  grade_idx
     ON grade(分数)
4. 使用SQL语句为grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_sid_cid_idx。
CREATE 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 student_info.`学号`,student_info.`姓名`,grade.课程编号 FROM student_info,grade WHERE student_info.`学号`= grade.`学号`

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 student_info.`学号`,student_info.`姓名`,课程名称,grade.`分数` FROM curriculum,grade,student_info 
    WHERE student_info.`学号`=grade.`学号`AND grade.`课程编号`=curriculum.`课程编号`
SELECT AVG(分数) FROM v_stu_g
    WHERE 学号='0001'
9. 使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。
ALTER VIEW v_stu_g
AS 
SELECT student_info.`学号`,student_info.`姓名`,student_info.`性别` FROM student_info
SELECT * FROM v_stu_g
10.利用视图v_stu_g为student_info表添加一行数据:学号为0010、姓名为陈婷婷、性别为女。
INSERT INTO v_stu_g(学号,姓名,性别) VALUES('0010','陈婷婷','女')
SELECT * FROM v_stu_g
11.利用视图v_stu_g删除学号为0010的学生记录。
DELETE FROM v_stu_g WHERE 学号='0010'
SELECT * FROM v_stu_g
12.利用视图v_stu_g修改姓名为张青平的学生的高等数学的分数为87。
UPDATE grade SET  分数='87'
WHERE 学号=(SELECT 学号 FROM v_stu_g WHERE 姓名='张青平' ) AND 课程编号=(SELECT 课程编号 FROM curriculum WHERE 课程名称='高等数学')
SELECT * FROM grade
13.使用SQL语句删除视图v_stu_c和v_stu_g。
DROP v_stu_c,v_stu_g;

文章作者: 崔蓬勃
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 崔蓬勃 !
评论
  目录