
1、查询所有
:
select
*
from
表名
2、条件查询:
select
*
from
表名
where
字段=条件
3、插入数据更新表
:
insert
into
表(字段1、字段2、字段3...)
values(值1、值2、值3...)
4、更新原有数据:
update
表
set
(字段1=值1、字段2=值2...)
where
字段=条件
5、统计每个班数据库课程的平均成绩select 班级,avg(成绩)as 平均成绩 from 学生,选课 where 选课.课号in (select 课程.课号 from 课程 where 课程名='数据库') and学生.学号=选课.学号 group by 班级假如本题数据库的课号只有一个,则不加上如上加粗的部分也可以得到正确结果,但是这个运算过程是有问题的,会导致运算的效率降低。本题应该将学生表与选课表关联,若数据库的课号多于一个,那么也会返回正确的结果
7、求每个同学目前获得的总学分select 姓名,sum(学分) as 总学分 from 学生,课程 where 学生.学号in (select 选课.学号from 选课where 课程.课号=选课,课号)group by 姓名
本题应该将三个表关联起来之后,直接group by即可,而且这道题的毛病与第5题一样,你可以实际运算一下,你的写法得出的结果,要比我下面给出的结果,每个人的总学分要多很多。
select 姓名, sum(学分) as 总学分 from 学生,课程 where 学生.学号 = 选课.学号 and 选课.课号 = 课程.课号 group by 学生.姓名
若是考虑到重名的情况,
select 学号,姓名, sum(学分) as 总学分 from 学生,课程 where 学生.学号 = 选课.学号 and 选课.课号 = 课程.课号 group by 学生.姓名,学生.学号
8、查询每个同学的平均分select 姓名,avg(成绩) as 平均分 from 学生,选课 where 学生.学号=选课.学号 group by 姓名
这道题也是,要是考虑到重名的话,最好将学号和姓名一起作为group by的条件,同第7题,你的逻辑是对的。
9、查询学生学号、姓名、课程名、成绩
这道题不需要使用子查询【即在where条件中,增加XXX in(select。。from。。。)】,通常情况下,子查询会降低查询效率。直接进行表关联即可。
select 学生.学号,学生.姓名,课程.课程名,选课.成绩 from 学生,课程,选课 where 学生.学号 = 选课.学号 and 选课.课号 = 课程.课号
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)