练习一
题目:
在成绩管理数据库cjgl.accdb中,已经建立了三个表对象,具体结构如下:
Student(Sno,Sname,Ssex,Sage,Sdept)
Course(Cno,Cname,Cpno,Ccredit)
SC(Sno,Cno,Grade)。
以上三个表对应的表名和字段的中文含义分别为:
学生表(学号、姓名、性别、年龄、所在系)
课程表(课程号、课程名、先修课号、学分)
学生选课表(学号、课程号、成绩)
- 查询姓名为三个汉字且姓名中间的字为“燕”的学生详细情况(student的所有字段)。
like通配符
%表示任数量字符,_表示一个字符
select *
from 学生表
where 姓名 like '_燕子_'
- 查询所有不姓“刘”的学生的姓名。
select 姓名
from 学生表
where 姓名 not like '刘%'
- 求各个课程号及相应的最高分、最低分、平均分、选课人数。
select max(成绩),min(成绩),avg(成绩),count(*)
from 学生选课表
group by 课程号
- 查询选修了三门以上课程的学生学号、选课门数。
select 学号,count(*) 选课门数
from 学生选课表
group by 学号
having count(*) >3
练习二
题目:
在数据库"物流管理.accdb"中,已经建立了四个表对象,具体结构如下:
仓库(仓库号、城市、面积)
职工(职工号、仓库号、工资)
订购单(职工号、供应商号、订购单号、订购日期,总金额)
供应商(供应商号、供应商名、地址)
将2008年的订购单记录全部追加到表“订购单_bak”中(订购单_bak和订购单表结构相同)。
- 将订购单中所有的订购日期更改为两年后(增加两年)
update 订购单
set 订购日期=订购日期+2
- 将北京的仓库面积增加100。
update 仓库
set 面积=面积+100
- 给所有低于平均工资的职工工资增加10%。
update 职工
set 工资=工资*110%
where 职工号 in{
select 职工号
from 职工
where 工资<avg(工资)
}
- 删除郑州的供应商记录。
delete from 供应商
where 地址='郑州'
- 删除“职工”表中没有订购记录的职工(指在订购单表中没有该职工的职工号)。
delete from 职工
where 职工号 in{
select 职工.职工号
from 职工 left join 订购单 where 职工.职工号=订购单.职工号
where 订购单.职工号 is null
}
这一部分是接着上一部分的sql查询操作(一)来的,相对上一部分难度稍低
练习二涉及了一部分的更新和删除的操作
码字不易,给个赞再走吧!如有错误请及时指正!
![](https://img-blog.csdnimg.cn/20201218222454145.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J5cmFnb24=,size_16,color_FFFFFF,t_70)