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.