sql作业

1.select 学号,姓名,选修课程,成绩from 学生表where 学号=s1

讨论

1.用于数据操纵的的语句:Select、Input、Update、Delete。

2.用于数据定义的语句:Create、Alter、Drop。

3.用于数据控制的语句:Grant、Revoke。

1.用SQL SELECT命令对表数据完成下列查询功能:

(1)用SQL命令查询所有学号为”s1”的学生的姓名、选修的课程名和成绩,并按成绩的降序排序。

select 姓名,成绩,课程名 from 学生,成绩,课程 where 学生.学号=成绩.学号 and 成绩.课程号=课程.课程号 and 学生.学号="s1" order by 成绩 desc

(2) 用SQL语句查询"计算机软件基础"课程的考试成绩在85分以下(含85分)的学生的全部信息并将结果按学号升序。

(3)根据表用SQL SELECT命令查询学生的学号、姓名、课程名和成绩,结果按"课程名"升序排序,"课程名"相同时按"成绩"降序排序,并将查询结果存储到sclist表中。

(4)用SQL命令统计各门课程的平均成绩,统计结果包含"课程名"和"平均成绩"两个字段,并将统计结果按课程名升序保存在表NEWTABLE中。

(5)计选修了课程的学生人数(选修多门时,只计算1次),统计结果保存在一个新表

NEW_TABLE中, 表中只有一个字段,字段名为学生人数。

(6)查询每门课程的最高分,查询结果中含"课程名"和"最高分"字段,结果按课程名升序保存在表NEW_TABLE3。

2.SQL命令对表的定义、数据基本操作的应用

(1) 用SQL命令向成绩表插入一条记录:学号为"s3"、课程号为"c2"、成绩是99。

(2) 用SQL命令完成将选修了“软件工程”课程的成绩提高10%。

(3) 用SQL命令删除成绩表中选修了课程但没有参加考试(成绩字段值为NULL)的记录。

(4) 用SQL命令删除课程表中没有任何学生选修的课程

(5) 将所有学生的年龄增加1岁

(6) 用SQL语言建立一个名为WORKER.DBF的表,包含的字段为:职工号(C,5)为主索引、姓名(C,8)、性别(C,2)、年龄(N,2)、职称(C,8)、工资(N,7,2)、退休(L,1);设置性别字段的有效性规则为:性别$“男女”,默认值为“男”。

(7) 用SQL命令为课程表增加字段:开课学期I,为成绩表"成绩"字段设置字段有效性规则: 成绩>=0,出错提示信息是:"成绩必须大于或等于零"。

3.用SQL命令建立视图

(1). 使用CREATE VIEW命令建立一个文件名为V2的视图,要求含有学号、姓名、成绩和课程名称,按课程名称升序排序。

(2) 使用SQL的CREATE VIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:选课数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课数,并按"平均成绩" 降序排序。

(3) 建立视图NEW_VIEW, 该视图含有选修了课程但没有参加考试(成绩字段值为NULL)的学生信息(包括"学号"、"姓名"和"院系号"3个字段)。

三、实验结论及结果

1)

1、select 姓名,成绩,课程名from 学生,成绩,课程where 学生.学号=成绩.学号and 成绩.课程号=课程.课程号and 学生.学号="s1" order by 成绩desc

2、select 学生.* from 学生,成绩,课程where 学生.学号=成绩.学号and 成绩.课程号=课程.课程号and 成绩<=85 and 课程名="计算机软件基础" order by 学生.学号

3、select 学生.学号,姓名,课程名,成绩from 学生,课程,成绩where 学生.学号=成绩.学号and 成绩.课程号=课程.课程号order by 课程名,成绩desc into dbf sclist

4、select 课程名,avg(成绩) as 平均成绩from 成绩,课程where 成绩.课程号=课程.课程号order by 课程名group by 课程名into dbf NEWTABLE

5、select count(distinct 学号) as 学生人数from 成绩into table new_table

6、select 课程名,max(成绩) as 最高分from 成绩,课程where 成绩.课程号=课程.课程号order by 课程名group by 课程名into dbf NEW_TABLE3

2)、

1、insert into 成绩values ("s3","c2",99)

2、update 成绩set 成绩=成绩*1.1 where 课程号in (select 课程号from 课程where 课程名="软件工程")

3、delete from 成绩where 成绩.成绩is null

4、delete from 课程where 课程.课程号="c8"

5、update 学生set 年龄=年龄+1

6、create table WORKER (职工号char(5) primary key, 姓名char(8),性别char(2) ,年龄numeric(2),;

职称char(8),工资numeric(7,2),退休logic check 性别$"男女" default "男")

7、ALTER TABLE 课程ADD 开课学期I

ALTER TABLE 成绩ALTER 成绩set CHECK 成绩>=0 ERROR "成绩必须大于或等于零" 3)

1、create view v2 as select 学生.学号,姓名,成绩,课程名from 学生join 成绩join 课程on 课程.课程号=成绩.课程号on 成绩.学号=学生.学号order by 课程名

2、create view sview as select 学生.学号,姓名,avg(成绩) as 平均成绩,min(成绩) as 最低分,count(学生.学号) as 选课数;

from 学生join 成绩on 成绩.学号=学生.学号group by 学号;

order by 平均成绩desc where 选课数>3

3、create view new_view as select 学生.学号,姓名,院系号from 学生join 成绩on 成绩.学号=学生.学号where 成绩is null

四、讨论

1.

相关文档
最新文档