2、 计算男女生人数。
use cjgl
go
select count(*) ,sex as 人数 from student group by sex
3、 统计每个人的平均成绩在85分以上同学的平均成绩。
select 学号,AVG(grade)as 平均成绩 from cj group by 学号 having AVG(grade)>85
4、 查询未选修”JAVA”课程的学生的基本情况。
use ks
select * from xs where exists (select * from cj where cj.学号 = 学生.学号 and 课程号 in (select 课程号 from 课程 where 课程名 !='java'))select * from xs where 学号 not in (select 学号 from cj where 课程号 in (select 课程号 from kc where 课程名='JAVA'))
5、 查询全部学生的学号,姓名,课程号,课程名,成绩。
select xs.学号,studentname ,kc.courseID, kc.coursename,grade from xs join cj
on xs. 学号=cj. 学号join kc on kc . 课程号=cj. 课程号
三、程序设计题目(每题10分,共10分。)
1.
在数据库JXGL中的teachers中创建一个触发器,如果添加的教师的工资小于1000,则拒绝插入该记录。(假设每次只插入一条记录即可)(所用到的表结构如下:teachers(tno,tname,dept,pay)其中TNO代表教师编号,TNAME代表教师姓名,DEPT代表教师系别,PAY代表教师的工资)
use jxgl
go
create trigger tri_insert
on teachers
after insert
as
declare @pay tinyint
select @pay=pay from inserted
if @pay<1000
begin
print '工资太低'
rollback transaction
end
2. 设已经存在如下数据库CJGL,表结构与二(三)题目相同,编写代码创建触发器Tg,当向CJ表插入一条记录时,检查该记录的学号在XS表中是否存在,检查课程号在KC表中是否存在,若有一项为否,则不允许插入。
use cjgl
go
Create trigger trig_appeA
On cj
after insert
as
if exists( select * from inserted a where a.学号 not in(select b.学号 from xs b) or
a.课程号 not in(select c.课程号 from kc c))
begin
use cjgl go create trigger trig_appeA on cj after insert as declare @stuID char(8) declare @courseID char(6) select @stuID=学号,@courseID=课程号 from inserted if @stuID<>any(select 学号 from xs) or @courseID<>any(select 课程号 from kc) begin print'学生或课程不存在,不允许插入!' rollback transaction end