R10-1 添加一条学生记录
本题目要求编写 Insert语句,在stu表中添加一条学生记录:
学号:S012,姓名:周强,性别:1,其它属性为NULL.
insert into stu values('S012','周强','1',null,null,null)
R10-2 添加学生成绩记录
在sc表中,为学号为S012的学生添加以下学生选课成绩记录。
选修C001课程,成绩为90。
选修C002课程,成绩为空。
注意:每条inser语句应以";"结束。
insert into sc
values('S012','C001',90);
insert into sc
values('S012','C002',null);
R10-3 批量插入学生记录
本题目要求编写Insert语句,
将stu表中的软件工程专业(专业号mno为'02')的学生记录批量插入到一个学生简表softstu表中。
insert into softstu(sno,sname)
select stu.sno,stu.sname
from stu
where mno='02';
R10-4 检索部分教师并插入新表
本题目要求编写 Insert语句,
检索所授每门课程平均成绩均大于70分的教师姓名,并将检索的值插入一个新的教师表faculty表中
insert into faculty
select distinct teacher
from cou
where teacher not in (
select teacher
from (select cno ,avg(grade) avg_grade from sc group by sc.cno) a innerjoin cou on cou.cno=a.cno
where avg_grade<=70
)
and teacher in (
select teacher
from sc inner join cou on cou.cno=sc.cno)
R10-5 插入学生总学分表
本题目要求编写Insert语句,
计算每位同学获得的总学分,并将所有学生的总学分按学号升序排序后一起插入到totalcredit表中。
注意:
1)当某门课程成绩在60分以上时才能合计计入总学分
2)如果某学生尚未选修任何课程时,总学分计为0,并插入到totalcredit表中。
insert into totalcredit
select sno,sum(credit)
from(
selectstu.sno sno,case when sc.grade>=60 then credit else 0 end credit
fromstu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cno
groupby stu.sno,credit,grade) a
group by sno
R10-6 修改女生成绩
本题目要求编写UPDATE语句,
把所有低于75分的女生成绩提高5%;
update sc,stu set grade=grade*1.05
where
stu.sno=sc.sno
and sc.grade < 75
and stu.sex=0
R10-7 修改学生选课成绩
本题目要求编写UPDATE语句,
在SC表中修改‘C001’课程的成绩,若成绩小于70分则提高5%,若成绩在70分以上(含70分)则提高4%
UPDATE
sc
SET
grade = case
WHEN sc.grade < 70 THEN grade* 1.05
WHEN sc.grade >= 70 THEN grade * 1.04
ELSE grade
END
WHERE
cno = 'C001';
R10-8 添加成绩等级rank字段
本题目要求编写UPDATE语句,
填写SC表中的成绩等级rank字段,按60分以下为E,60-69为D,70-79为C,80-89为B,90及以上为A,其它情况为NULL。
UPDATE
sc
SET
rank = case
WHEN sc.grade < 60 THEN 'E'
WHEN sc.grade >= 60 and sc.grade < 70 THEN 'D'
WHEN sc.grade >= 70 and sc.grade < 80 THEN 'C'
WHEN sc.grade >= 80 and sc.grade < 90 THEN 'B'
WHEN sc.grade >= 90 THEN 'A'
ELSE NULL
END
R10-9 计算并填写学生获得的总学分
本题目要求编写UPDATE语句,
计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。
其中,总学分为每个学生通过的选修课程的学分数总和,注意:只有在60分以上的选课成绩才能获得该门课程的学分数,每门课程的学分数在cou表中credit字段。
UPDATE stu,(select sno,sum(credit) SUM
from(
selectstu.sno sno,case when sc.grade>=60 then credit else NULL end credit
fromstu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cno
groupby stu.sno,credit,grade) a
group by sno) B
SET stu.totalcredit = B.SUM
where stu.sno = B.sno
R10-10 删除成绩为空的学生选课记录
本题目要求编写DELETE语句,
在SC表中删除成绩为NULL的学生选课记录。
delete from sc
where grade is null;
R10-11 C1-1新增一个区域
在区域表(region)中添加一条记录:区域编号(RegionID)为5,区域描述(RegionDescription)为Center
提示:请使用INSERT语句作答。
INSERT INTO region
VALUES (5,'Center');
R10-12 C1-2新增订单统计信息
统计订单表(orders)中顾客的订单数量,并插入results表中
提示:请使用INSERT语句作答。
insert into results
selectorders.CustomerID,count(orders.CustomerID) OrderCount
from orders
group by CustomerID
R10-13 C2-1修改订单运费
修改订单表(orders)中的运费,将每单运费(Freight)增加50%
提示:请使用UPDATE语句作答。
UPDATE
orders
SET
Freight =Freight * 1.5;
R10-14 C2-2修改特定职工的订单运费
修改订单表(orders)中员工编号(EmployeeID)为3和4的员工的订单,将每单运费(Freight)减少5%
提示:请使用UPDATE语句作答。
UPDATE
orders
SET
Freight = Freight * 0.95
WHERE
EmployeeID = 3OR EmployeeID = 4;
R10-15 C2-3根据运费调整订单单价
对于运费(Freight)超过30.00的订单,将其相关的订单详情表(orderdetails)中产品的单价(UnitPrice)提高15%
提示:请使用UPDATE语句作答。
update orderdetails set UnitPrice=UnitPrice*1.15
where OrderID in (select OrderID fromorders
where Freight >30.00
)
R10-16 C2-4修改订货数量最少的产品单价
对于订单详情表(orderdetails)中订货数量最少的产品,将其单价下调1元
提示:请使用UPDATE语句作答。
Warning:本题可能涉及mysql中有关You can't specify target table for update in FROM clause的错误,需要适当调整语句写法
update orderdetails set UnitPrice=UnitPrice-1
order by Quantity asc
limit 1
R10-17 C3-1删除特定城市的顾客信息
删除顾客表(customers)中城市(City)为London的顾客信息
提示:请使用DELETE语句作答。
delete
from customers
where City='London'