教学单元5 SQL语言

    1.简述SQL语言的特点与功能。

    2.什么是索引?建立索引有什么意义?

    3.什么是视图?比较视图和表的优缺点。

    4.如何创建视图?请举例说明。

    5.现有如下关系, 请用SQL语言完成下列相关语句

      student(sno,sname,sex,birthdaysdept)//说明(学号,姓名,性别,生日,系)

      course(cno,cname,ccredit);//说明(课程号,课程名,学分)

      sc(sno,cno,grade)////说明(学号,课程号,成绩)

     (1)查询90后出生的学生姓名,系别,出生日期

  (2)查询选了1号课成绩大于80分的学生情况(不许重复)

  (3)查询所有选修课平均成绩大于90分的同学的学号和平均成绩。

  (4)查询非信息系了李明同学的学号和出生日期

  (5)查询选了数据库课程且成绩大于80的学生姓名及成绩

  (6)查询和李明在同一个系的其它同学姓名

  (7)将李明同学的系改为信息系

  (8)请在SC表中删除所有成绩小于60分的同学记录

  (9)将一个新同学的记录(sno:07010150;sname:陈冬;sex:男;sdept:信息;csrq:1985-6-8)插入到STUDENT表中。

  (10)请将course数据表删除

    6.假设MySQL数据库管理 员(root),创建了3个用户,U1,U2,U3,并且创建了一个学

生课程(xskc)数据库,内含三张表如题5所示,分别是student,sc,course,现请完 成下列授权与收回权限命令:

  (1)把查询Student表的权限授给用户U1

  (2)把对Student表和Course表的全部权限授予用户U2和U3

  (3)把对表Student的查询权限授予所有用户

  (4)把删除sc表和修改学生成绩的权限授给用户U1,同时也把授权权限给用户U1

  (5)把用户U1修改学生成绩的权限收回

     (6)收回所有用户对表SC的查询权限


 

习题五答案

1

SQL语言集数据查询、数据操纵、数据定义和数据控制功能一体,它除了具有一般关系数据库语言的特点外,还具有3个特点:SQL具有自含式和嵌入式两种形式:SQL具有语言简洁、易学易用的特点:SQL支持三级模式结构。

2答

索引是一种树型结构,是一种标号文件,它附在基本表之上,单独不能使用,使用索引文件,可以减少定位和检索所需要的I/O操作,提高查询速度。索引的另一个用途是保证表中数据的惟一性。

3答

视图是从其他表或视图中导出的逻辑表(虚表),它不像基表一样物理地存储在数据库中,视图没有自己独立的数据实体。

基本表,真实存在,可进行数据操纵,但多表操作需要做表级关联,不方便

视图,是虚表,没有物理存储,数据字典中只保留其定义,操作灵活方便,安全性强,数据操纵时收一定条件限制。

4答

如用户经常要查询每个学生选修的课程数和课程平均成绩,为该用户创建一个视图,便于对数据的使用。

CREATE VIEW st_sc_score(学号,课程数,平均成绩)

AS SELECT snum, count(cnum), avg(grade)

 From sc

Where grade is not null

 Group by snum;

 

5答

(1)select sname,sdept,birthday from student where year(birthday)>=1990;

(2)select * from sc where cno=’1’ and grade>80

(3)select sno,avg(grade) from sc group by sno having avg(grade)>90

(4)select sno,birthday from student where sname=’李明’ and sdept not like ‘信息系

(5)select sname ,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and cname=’数据库’and grade>80

(6)select sname from student where sdept=(select sdept from student where sname=’李明’)

(7)update student set sdept=’李明’ where sname=’李明

(8)delete from sc where grade<60

(9)Insert into student1 values('07010150','陈冬','男','信息',1985-6-8)

(10)drop table course

6答

(1)GRANT SELECT ON TABLE Student TO U1;
(2)GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;
(3)GRANT SELECT ON TABLE student TO PUBLIC;
(4)GRANT DELETE ,UPDATE(grade),ON TABLE sc TO U1 whth grant option;
(5)REVOKE UPDATE(grade) ON TABLE sc FROM U1;
(6)REVOKE SELECT ON TABLE SC FROM PUBLIC;