SQL答案 n

发布 2022-09-02 19:52:28 阅读 8219

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 逻辑独立...