#第6章
#【例6.1】查询student表中所有学生的学号、姓名和专业。
#【例6.2】查询student表中所有列。
#【例6.3】查询student表中所有学生的学生的sno、sname、speciality,并将结果中各列的标题分别修改为学号, 姓名, 专业。
#【例6.4】设student1表的表结构和样本数据与student表相同,且已创建和插入数据;在student1表中,列出学号、学分和增加4分后的学分。
#【例6.5】查询student表中speciality列,消除结果中的重复行。
#【例6.6】查询student表中专业为计算机或性别为女的学生。
#【例6.7】查询score表成绩为92、95的记录。
#【例6.8】查询student表中不在1998年出生的学生情况。
#【例6.9】查询已选课但未参加考试的学生情况。
#【例6.10】查询student表中姓董的学生情况。
#【例6.11】查询含有“系统”或“数字”的所有课程名称。
#【例6.12】求学生的总人数。
#【例6.13】查询通信专业学生的总人数。
#【例6.14】查询1201课程总分。
#【例6.15】查询8001课程的最高分、最低分、平均成绩。
#【例6.16】查询各门课程的最高分、最低分、平均成绩。
use stusys;
select max(grade) as 最高分,min(grade) as 最低分,avg(grade) as 平均成绩
from score
where grade is not null
group by cno
having avg(grade)>80
order by avg(grade) desc
limit 0,3;
#【例6.17】查询平均成绩在90分以上的学生的学号和平均成绩。
#【例6.18】查询至少有5名学生选修且以8开头的课程号和平均分数。
#【例6.19】将计算机专业的学生按出生时间降序排序。
#【例6.20】查询成绩表中成绩前3位学生的学号、课程号和成绩。
#【例6.21】采用交叉连接查询教师和和讲课地点所有可能组合。
use stusys;
select * from teacher,lecture;
select a.tno,a.tname,b.cno,b.location
from teacher a,lecture b
where a.tno=b.tno;
#或者:
select a.*,b.*
from teacher a inner join lecture b on a.tno=b.tno;
use stusys;
select *
from teacher natural join lecture;
#【例6.22】查询每个学生选修课程的情况。
#【例6.23】查询选修了数据库系统课程且成绩在80分以上的学生情况。
use stusys;
select a.sno,sname,cname,grade
from student a,score b,course c
where a.sno=b.sno and b.cno=c.cno and cname='数据库系统' and grade>=80;
use stusys;
select a.sno,sname,cname,grade
from student a join score b on a.sno=b.sno join course c on b.cno=c.cno
where cname='数据库系统'and grade>=80;
#【例6.24】对例6.22进行自然连接查询。
#【例6.25】查询选修了“1201”课程的成绩高于学号为“191002”的成绩的学生姓名。
use stusys;
select a.cno,a.sno,a.grade
from score a,score b
where a.grade>b.grade and a.cno='1201' and b.cno='1201' and b.sno='191002'
order by a.grade desc;
use stusys;
select a.cno,a.sno,a.grade
from score a join score b on a.grade>b.grade
where a.cno='1201' and b.cno='1201' and b.sno='191002'
order by a.grade desc;
#【例6.26】采用左外连接查询教师任课情况。
#【例6.27】采用右外连接查询教师任课情况。
#【例6.28】查询选修了课程号为8001的课程的学生情况。
use stusys;
select * from student
where sno in
(select sno
from score
where cno='8001'
);
#【例6.29】查询选修某课程的学生人数多于4人的教师姓名。
#【例6.30】查询比所有通信专业学生年龄都小的学生。
#【例6.31】查询选修1004课程的学生姓名。
#【例6.32】查询性别为女及选修了课程号为4002的学生。
#(1)课本P116——第四题:应用题1-17
#P116——四
#1.查询score表中学号为196004,课程号为1201的学生成绩
#2.查询student表中姓周的学生情况
#3.查询数学成绩第2-5名的信息
#4.查询通信专业最高学分的学生情况
#5.查询1004课程的最高分,最低分和平均成绩
#6.查询至少有3名学生选修且以4开头的课程号和平均成绩
#7.将计算机专业的学生按出生时间升序排列
#8.查询各门课程最高分的课程号和分数,并按分数降序排列
#9.查询选修3门以上课程且成绩在85分以上的学生情况
#10.查找选修了‘英语’的学生姓名及成绩
#11.查询选修了‘高等数据’且成绩在80分以上的学生情况
#12.查询选修某课程的平均成绩高于85分的教师姓名
#13.查询选学1201号课程或选学1004号课程的学生姓名、性别、总学分
#14.查询每个专业最高分的课程名和分数
#15.查询通信专业的最高分
#16.查询数据库系统课程的任课教师
#17.查询成绩高于平均分的成绩记录
#(2)课本P122——第3题:设计性实验1-8
第9章SQL语言
【例9.1】 使用RAND()函数求3个随机值。
【例9.2】 求3和4的平方根。
【例9.3】 求7.2和-7.2的绝对值。
【例9.4】 求小于或等于-3.5或6.8的最大整数,大于或等于-3.5或6.8的最小整数。
【例9.5】 求8.546小数点后2位的值和四舍五入的整数值。
【例9.6】 求X的ASCII码值。
【例9.7】 将ASCII码值88、89、90组合成字符串。
【例9.8】 求joyful左侧和右侧开始的3个字符。
【例9.9】 查询字符串”计算机网络”的长度。
【例9.10】 将”数据库原理与应用”中的”原理与应用”替换为”技术”。
【例9.11】 返回字符串joyful的从第4个字符开始的3个字符。
【例9.12】 获取当前日期。
【例9.13】 获取当前时间。
【例9.14】 获取当前日期和时间。
【例9.15】 查询成绩表score,如果分数列的值大于或等于80分,则输出”良好”,否则输出”一般, 不及格或空值”。
【例9.16】 使用IFNULL()函数做条件判断。
【例9.17】 获取当前数据库的版本号。
注意:请同学们课外再把上面例题项目在课堂上已经操作的内容独立(不看书)再操作一遍,没有操作的对照课本运行,将过程截图写文案于CSDN。