sql操作题(利用数据表:std_da std_cj std_xk tch_pk)
1. 从std_da中检索出所有记录。
select * from std_da
2. 检索会计专业的学生名单。
select 姓名 from std_da where 专业="会计"
3. 检索非金融专业的男学生名单。
select 姓名,性别,专业 from std_da where 性别="男" and not 专业="金融"
4。检索期中成绩小于60和大于80分的学生名单。
select * from std_cj where not 期中 between 60 and 80
5. 检索不在或11月出生的学生名单。
select * from std_da where month(出生日期) not in(5,7,11)
select 姓名,month(出生日期) from std_da where month(出生日期) not in(5,7,11)
6. 检索若将期末成绩加10%,依然小于60分的学生姓名。
select 姓名,期末+期末*0.1 as 新期末 from std_cj where 期末+期末*0.1<60
注:where条件子句不能用as后的新字段名,但是可以用函数和表达式。
7. 按照入校成绩升序排列输出学生名单。
select 姓名,入校成绩from std_da order by 入校成绩。
8. 检索入校成绩大于650分的学生数。
select count(*)from std_da where 入校成绩》650
9. 若将总成绩加5%作为“最新成绩”,查看最新成绩(不要修改数据)。
select 姓名,总成绩,总成绩+总成绩*0.05 as 最新成绩 from std_cj
10. 最终成绩计算表达式为:期中×20%+平时+期末×70%,计算最终成绩。
update std_cj set 总成绩=期中*0.2+平时+期末*0.7
select 姓名, 期中*0.2+平时+期末*0.7 as 总成绩 from std_cj
11. 检索学生出生年份(哪些年份有出生的学生)。
select distinct year(出生日期) from std_da
12. 检索平时成绩为10分的学生的学生数,它们的总成绩的平均值呢?
select 平时,count(*)**g(总成绩) from std_cj where 平时=10
13. 检索入校成绩最高的男学生姓名。
select 姓名,入校成绩 from std_da where 性别="男" ;
and 入校成绩=(sele max(入校成绩) from std_da where 性别="男")
14.按照出生日期统计每月份各有多少名学生,各有男女学生多少名。
select month(出生日期) as 出生月份,性别,count(*)from std_da group by 出生月份,性别。
注:group by分组子句不能函数和表达式,必须用as后的新字段名或1,2……
select month(出生日期) as 出生月份,性别,count(*)from std_da group by 1,2
15.统计各专业期末成绩大于89分的学生的平均成绩。
select专业,**g(期末) from std_da,std_cj group by 专业;
where std_da.学号=std_cj.学号 and 期末》89
16.学号的前3位是***号,在std_cj中统计各专业的平均平时成绩。只统计那些平均成绩大于8的班级的平时成绩呢?只计算平时成绩大于8的学生的各专业的平均平时成绩呢?
select left(学号,3) as ***号,**g(平时) from std_cj group by ***号;
h**ing **g(平时)>8
17.查询年纪最老的前两名学生。
select 姓名,出生日期,year(date())year(出生日期) as 年龄 from std_da order by 年龄 desc top 2
18. 查询期中成绩最高的80%的学生姓名及成绩。
select 姓名,期中 from std_cj order by 期中 desc top 80 percent
19. 检索金融专业的学生学号、姓名、性别和期末成绩。
select std_da.学号,std_da.姓名,std_da.性别,std_cj.期末 from;
std_da,std_cj where std_da.学号=std_cj.学号 and std_da.专业="金融"
20. 检索选“001”课程的学生学号、姓名。
select std_cj.姓名,std_xk.学号 from std_cj join std_xk;
on std_cj.学号=std_xk.学号 where 课程代号="001"
21. 检索选修欧文老师课的学生姓名、专业、学号、课程代号、课程名。
select std_da.学号, std_da.姓名, std_da.专业, std_xk.课程代号,;
tch_pk.课程名;
from 数据1!std_da inner join std_xk;
inner join tch_pk ;
on std_xk.课程代号 = tch_pk.课程代号 ;
on std_da.学号 = std_xk.学号;
where tch_pk.教师名 = 欧文";
order by std_da.学号。
22. 查询选修课程名为” 网页制作”的各专业学生的平均成绩。
sele 专业,**g(总成绩)from std_da inner join std_cj;
on std_da.学号=std_cj.学号 where std_da.学号 in;
(sele 学号 from std_xk , tch_pk where std_xk.课程代号=tch_pk.课程代号;
and tch_pk.课程名="网页制作") group by 专业。
sele left(学号,4) as 专业, **g(总成绩)from std_cj;
where 学号 in;
(sele 学号 from std_xk , tch_pk where std_xk.课程代号=tch_pk.课程代号;
and tch_pk.课程名="网页制作") group by 专业。
23. 检索选修课程代号为001的学生姓名、专业(使用子查询)。
sele 姓名,专业 from std_da;
where std_da.学号 in;
(sele 学号 from std_xk where std_xk.课程代号=”001”)
检索大于任意一名郭姓的学生的期中成绩的学生名单。检索大于所有郭姓的学生的期中成绩的学生名单。
sele 姓名,期中 from std_cj where 期中》 any (sele 期中 from std_cj where 姓名="郭")
sele 姓名,期中 from std_cj where 期中》 all (sele 期中 from std_cj where 姓名="郭")
24. 练习向std_da数据表添加新记录。
insert into std_da(学号,姓名,专业);
values("600044","张飞","教育")
25. 修改a112001001学生的平时成绩为8分。
update std_cj set 平时=8 where 学号= "a112001001";
26. 将所有选修课程代号为001的学生期中成绩加1分。
update std_cj set 平时=平时+1 where;
学号 in ( select 学号 from std_xk where 课程代号="001" )
27. 删除std_da数据表添加的新记录。
delete from std_da where 姓名="张飞"
pack28. 用sql命令创建与std_cj同结构的数据表std_cjnew。
create table std_cjnew ( 学号 c(10),姓名 c(8),;
期中 n(5,1),平时 n(2),期末 n(5,1),总成绩 n(3))
29. 用sql命令创建std_danew,用 primary key说明学号是主关键字,用check选项规定出生日期的有效性规则必须在2023年以后,用error说明了若违反该有效性规则弹出的出错信息“年龄错误!”(注意:
必须在数据库中建立)
creat data aa
create table std_danew ( 学号 c(10) primary key, 姓名 c(10) ,
出生日期 d check( year(出生日期)>1970 ) error "年龄错误!"
性别 c(2) ,入校成绩 n(5,1) )
30. 重命名std_cjnew中的字段总成绩为期末成绩。
alter table std_cjnew;
rename column 总成绩 to 期末成绩。
31. 删除std_danew中的姓名字段。
alter table std_danew;
drop column 姓名。
32. 添加表一级的有效性规则:期末成绩》=期中成绩*0.70 ,否则出错对话框为 "期末成绩应该大于等于期中成绩×70%!"
alter table std_cjnew;
set check 期末成绩》=期中*0.7 error "期末成绩应该大于等于期中成绩x70%!"
33. 删除数据表std_cjnew。
drop table std_cjnew
34. 用sql命令创建视图view_总成绩表,用于显示的学生姓名、专业、总成绩。(注:必须先打开数据库)
create view view_总成绩表 as ;
select std_da.姓名,专业,总成绩 from std_da inner join std_cj;
on std_da.学号=std_cj.学号。
35. 删除视图view_总成绩表。
drop view view_总成绩表。
三、表单设计题:
1.设计查询表单,在两个文本框内分别输入总成绩的下限和上限,可以从std_cj表中查询出该分数段的所有学生分数,并显示在**中。
sql作业答案
现有学生表 学号,姓名,性别,年龄,入学年份,籍贯,手机号码,系号,班长学号 学号是主码,系号和班长学号是外部码,手机号码必须唯一,学生的年龄不得小于10岁和大于50岁,性别必须是 男 或者 女 系表 系号,系名,系主任 其中系号是主码,系名不能有重复的。选课表 学号,课程号,成绩 学号,课程号 是...
SQL练习答案
oracle执行脚本文件的命令。start 目录 文件名。例1 参加了p2项目的员工号。select essn from works on where pno p2 23010119950101xxxx xxxxxxxxxxxxxxxxxx 例2 参加了项目名为 哈同公路 的员工名字。select ...
SQL练习答案
第一章习题答案。一 选择题。1 c 2 b 3 d 4 c 5 d6 a 7 a 8 b 9 d 10 b 11 c 12 d 13 a 14 d 15 b二填空题。1 数据库系统。2 关系。3 物理独立性。4操作系统。5 数据库管理系统 dbms 6 多对多。7 独立性。8完整性控制。9 逻辑独立...