-
查询年级为的所有学生的名称,按编号升序排列
Select sid,sname
From STUDENTS
Where grade=‘1’
Order by sid; -
查询学生的选课成绩合格的课程成绩,并把成绩换算为积点
Select sid,cid,(score-60)*0.1+1 as jidian
From CHOICES
Where score>=60;–不包括成绩为null的选课记录 -
查询课时是或的课程的名称
Select cname
From COURSES
Where hour=30 or hour=60; -
查询所有课程名中含有“数”的课程编号
Select cid
From COURSES
Where cname Like ‘%数%’; -
查询所有选课记录的课程号(不重复显示)
select distinct cid
from CHOICES; -
统计所有老师的平均工资
Select AVG(salary) as avgSalary
From TEACHERS; -
查询所有学生的编号、姓名和平均成绩,按照总平均成绩降序排列
Select sid,Avg(score) as avgScore
From CHOICES
Group by sid
Order by avgScore Desc; -
统计各个课程的选课人数和平均成绩
Select cid,COUNT(sid) as numOfPerson,AVG(score) as avgScore
From CHOICES
Group by cid; -
查询至少选修了两门课程的学生编号
Select sid
From CHOICES
Group by sid
Having COUNT(sid)>=2; -
查询编号S244157的学生所选择的全部课程的课程名和成绩
Select cname,score
From COURSES,CHOICES
Where COURSES.cid=CHOICES.cid and sid=‘S244157’; -
查询所有选了数据库的学生的编号
Select sid
From CHOICES,COURSES
Where CHOICES.cid=COURSES.cid and cname=‘数据库’; -
求出选择了同一个课程的学生对
Select A.sid as stu1,B.sid as stu2
From CHOICES A,CHOICES B
Where A.cid=B.cid and A.no<B.no; -
求出至少被两名学生选修的课程编号
Select cid
From CHOICES
Group by cid
Having COUNT(*)>=2; -
查询选修了编号S244157的学生所选的某个课程的学生编号(包含S244157这个学生)
Select distinct A.sid–若某学生选修了S244157所选的多门课程,这个学生的学号就会出现多次,故用distinct
From CHOICES A,CHOICES B
Where A.cid = B.cid and B.sid=‘S244157’; -
查询学生的基本信息及选修课程编号和成绩
Select STUDENTS.*,cid,score
From STUDENTS Left Outer Join CHOICES On (CHOICES.sid=STUDENTS.sid); -
查询学号S244157的学生的姓名和选修的课程名称及成绩
Select sname,cname,score
From STUDENTS,CHOICES,COURSES
Where STUDENTS.sid=CHOICES.sid and CHOICES.cid=COURSES.cid
and STUDENTS.sid=‘S244157’; -
查询学号S244157的学生同年级的所有学生的资料
Select A.*
From STUDENTS A,STUDENTS B
Where A.grade=B.grade and B.sid=‘S244157’; -
查询所有的有选课的学生的详细信息
Select *
From STUDENTS
Where sid In(select sid
from CHOICES);
或:
Select distinct STUDENTS.* --如果是查询学号姓名写为(只写一个distinct)
From STUDENTS,CHOICES – distinct STUDENTS.sid,STUDENTS.sname
Where STUDENTS.sid=CHOICES.sid; --利用连接去掉未选课的学生记录 -
查询没有学生选的课程的编号
Select cid
From COURSES
Where cid Not In(
Select cid
From CHOICES); -
查询选修了课程名为C语言的学生学号和姓名
Select STUDENTS.sid,STUDENTS.sname
From STUDENTS,CHOICES,COURSES
Where STUDENTS.sid=CHOICES.sid and CHOICES.cid=COURSES.cid
and cname=‘C语言’; -
找出选修课程成绩最差的选课记录
Select *
From CHOICES
Where score=(
Select MIN(score)
From CHOICES); -
找出选修课程成绩最差的选课记录
Select *
From CHOICES
Where score=(
Select MIN(score) --null与任何数比较大小都返回unknown,所以不是最小值
From CHOICES);
–或
Select *
From CHOICES
Where score<=All(
Select score --查询结果中含null,不存在一个值小于null,
From CHOICES --∴要找到最小值必须去掉null
Where score is not null);
错误:
Select *
From CHOICES
Where score=MIN(score);–聚合不应出现在WHERE 子句中,除非该聚合位于HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用 -
找出和课程”C语言“或课程”操作系统“的课时一样的课程名称(包括两者)
Select cname
From COURSES
Where hour =some(–或将“=some”改成in
Select hour
From COURSES
Where cname=‘C语言’ or cname=‘操作系统’); -
查询所有选修编号C153488的课程的学生的姓名。
Select sname
From STUDENTS,CHOICES
Where STUDENTS.sid=CHOICES.sid and cid=‘C153488’; -
查询选修了所有课程的学生姓名。
Select sname
From STUDENTS
Where Not Exists(
Select *
From COURSES as X
Where Not Exists(
Select *
From CHOICES as Y
Where Y.sid=STUDENTS.sid and Y.cid=X.cid
)
); -
利用集合运算,查询选修课程”数据结构“或课程“数据库”的学生的编号。
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘数据结构’)
Union
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘数据库’); -
实现集合交运算,查询既选修课程”计算机网络“又选修课程”C语言“的学生的编号。
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘计算机网络’)
Intersect
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘C语言’); -
实现集合减运算,查询选修课程C语言而没有选修课程”计算机网络“的学生的编号。
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘C语言’)
Except
Select sid
From CHOICES
Where cid=(
Select cid
From COURSES
Where cname=‘计算机网络’);
数据库———数据查询
猜你喜欢
转载自blog.csdn.net/qq_44378854/article/details/107042048
今日推荐
周排行