回复3楼的--1 select Sname,Ssex,Class from Student --2 select distinct depart from teacher --3 select * from Student --4 select * from Score where degree between '60' and '80' --5 select * from Score where degree='85' or degree='86' or degree='88' --6 select * from Student where class='95031' or ssex='女' --7 select * from Student order by class desc --8 select * from score order by Cno asc,degree desc --9 select count(*) from Student where class='95031' --10 select sno,cno from score where degree= (select max(degree) from score) --11 select avg(degree) from score where cno='3-105' --12 select avg(degree) from score where (select count(cno) from score) >='5' and left(cno,1)='3' --13 select sno from score group by sno having min(degree) >= '70' and max(degree)<='90' --14 select a.Sname,b.Cno,b.Degree from from student a,score b where a.sno=b.sno --15 select a.Sno,b.Cname,a.Degree from score a,course b where a.cno=b.cno --16 select a.Sname,b.Cname,c.Degree from student a,course b,score c where a.sno=c.sno and b.cno=c.cno --17 select avg(b.degree) from student a,score b where a.sno=b.sno and a.class='95033' group by cno --18、假设使用如下命令建立了一个grade表: /* create table grade(low int,upp int,rank varchar(1)) insert into grade values(90,100,'A') insert into grade values(80,89,'B') insert into grade values(70,79,'C') insert into grade values(60,69,'D') insert into grade values(0,59,'E') */ select a.Sno,a.Cno,b.rank from score a,grade b where a.degree between low and upp --19 select * from score where cno='3-105' and degree>(select degree from score where cno='3-105' and sno='109') --20 select * from score where degree not in (select max(degree) from score group by cno) and (select count(*) from score)>1 --21 select * from score where degree>(select degree from score where cno='3-105' and sno='109' ) --22 select Sno,Sname,Sbirthday from student where year(sbirthday)=(select year(sbirthday) from student where sno='108') --23 select c.degree from teacher a,course b,score c where a.tname='张旭' and a.tno=b.tno and b.cno=c.cno --24 select a.tname from teacher a,(select cno,count(cno) as cc from score group by cno) b, course c where b.cc>'5' and a.tno=c.tno and c.cno=b.cno --25 select a.*,b.* from student a,score b where a.sno=b.sno and (a.class='95033' or a.class='95031') --26 select distinct cno from score group by cno,degree having degree>'85' --27 select c.* from teacher a,course b,score c where a.depart='计算机系' and a.tno=b.tno and b.cno=c.cno --28 select distinct tname,prof from teacher --29 select Cno,Sno,Degree from score where cno='3-105' and degree>(select max(degree) from score where cno='3-245') order by Degree desc --或者 select a.Cno,a.Sno,a.Degree from (select * from score where cno='3-105') a,(select * from score where cno='3-245') b where a.degree>b.degree and a.sno=b.sno order by Degree desc --题目意思不是很懂,理解有问题,做了2个出来了 --30 我搞不清楚和29题有什么区别了,脑袋转不过来了,分辨不出来 --31 select sname as name,ssex as sex,sbirthday as birthday from student union select tname as name,tsex as sex,tbirthday as birthday from teacher --32 select sname as name,ssex as sex,sbirthday as birthday from student where ssex='女' union select tname as name,tsex as sex,tbirthday as birthday from teacher where tsex='女' --33 select a.* from score a,(select cno,avg(degree) as degree from score group by cno) b where a.degree>b.degree and a.cno=b.cno --34 select a.tname,a.depart from teacher a,course b where a.tno=b.tno and b.cno in (select distinct cno from score) --35 select a.tname,a.depart from teacher a,course b where a.tno=b.tno and b.cno not in (select distinct cno from score) --36 select class from (select class,count(*) as sl from student where ssex='男' group by class ) t where t.sl>=2 --37 select * from student where left(ltrim(sname),1)<>'王' --38 select sname,datediff(yy,sbirthday,getdate()) as 年龄 from student --39 select datediff(d,min(sbirthday),max(sbirthday)) as 日期差 from student --40 select * from student order by class desc,sbirthday desc --41 select a.tname,b.cname from teacher a,course b where a.tsex='男' and a.tno=b.tno --42 select Sno,Cno,Degree from score where degree=(select max(degree) from score) --43 select sname from student where ssex=(select ssex from student where sname='李军') --44 select sname from student where ssex=(select ssex from student where sname='李军') and class=(select class from student where sname='李军') --45 select a.sname,c.* from student a,course b,score c where a.sno=c.sno and b.cno=c.cno and a.ssex='男' and b.cname='计算机导论' --46 select distinct a.* from student a,score b where a.sno=b.sno and a.sno=(select sno from score where degree=(select max(degree) from score)) --47 select * from student where sno in (select sno from score group by sno having avg(degree)>'80')把第一题做了
回复3楼的第二题答案--创建学生表 create table student ( --学号 sno varchar(3) not null primary key, --姓名 sname varchar(4) not null, --性别 ssex varchar(2) not null, --出生年月 sbirthday datetime, --年龄 sage varchar(5), --所在系 sdept varchar(7) ) --创建课程表 create table course ( --课程号 cno varchar(5) not null primary key, --课程名称 cname varchar(10) not null, --选项课号 cpno varchar(3) , --学分 ccredit varchar(3) ) --创建学生选课表 create table sc ( --学号 sno varchar(3) not null, -- 课程号 cno varchar(5) not null , --成绩 grade decimal(4,1) primary key (sno,cno) ) --1 select sno,sname from student --2 select sno,sname,sdept from student --3 select * from student --4 select sname,Sbirthday from student --5 select sname,Sbirthday,lower(sdept) from student --6 select sname as 姓名,Sbirthday as 出生日期,sdept as 所在系 from student --7 select distinct sno from sc --8 select * from student where sdept='计算机系' --9 select sname,sage from student where sage>'20' --或者 select sname,sage from student where datediff(yy,sbirthday,getdate())>'20' --10 select distinct sno from sc where grade<'60' --11 select sname,sage,sdept from student where sage between '20' and '30' --12 select sname,sage,sdept from student where sage <= '20' and sage >= '30' --13 select sname,ssex from student where sdept in ('信息系','数学系','计算机系') --14 select sname,ssex from student where sdept not in ('信息系','数学系','计算机系') --15 select * from student where left(ltrim(sno),5)='95001' --或者 select * from student where substring(ltrim(sno),1,5)='95001' --16 select sno,sname,ssex from student where left(ltrim(sname),1)='刘' --17 select sname from student where left(ltrim(sname),2)='欧阳' and len(ltrim(sname))='3' --18 select sno,sname from student where substring(ltrim(sname),2,1)='阳' --19 select sname from student where left(ltrim(sname),1)<> '刘' --20 select cno,ccredit from coures where left(ltrim(cpno),1)='C' --21 select cno,ccredit from coures where left(ltrim(cpno),1)='H' and left(right(rtrim(cpno),3),1)='T' --22 select sno,cno from sc where Grade is null --23 select sno,cno from sc where Grade is not null --24 select sname from student where sdept='计算机系' and sage<'20' --25 select sname,ssex from student where sdept='计算机系' or sdept='数学系' or sdept='信息系' --26 select sno,grade from sc where cno='3' order by grade desc --27 select * from student order by sdept asc,sage desc --28 select count(*) from student --29 select count(*) from (select distinct sno from sc) t --30 select avg(grade) from sc where cno='1'
这个是我做的答案,求三楼的看下,其中有四个题目不知道 --1、 查询Student表中的所有记录的Sname、Ssex和Class列。 select Sname,Ssex,Class from student --2、 查询教师所有的单位即不重复的Depart列。 select distinct(depart) from teacher --3、 查询Student表的所有记录。 select * from student --4、 查询Score表中成绩在60到80之间的所有记录。 select * from score where degree Between 60 and 80 --5、 查询Score表中成绩为85,86或88的记录。 select * from score select * from score where degree = 85 or degree = 86 or degree = 88 --6、 查询Student表中“95031”班或性别为“女”的同学记录。 select * from student select * from student where Ssex = '女' or class = 95031 --7、 以Class降序查询Student表的所有记录。 select * from student select * from student order by class desc --8、 以Cno升序、Degree降序查询Score表的所有记录。 select * from score order by degree desc select * from score order by cno Asc --9、 查询“95031”班的学生人数。 select * from student select count(class) as 人数 from student where class = '95031' --10、查询Score表中的最高分的学生学号和课程号。 select * from score declare @max int select @max = max(degree) from score select sno as '学号',cno as '课程号' from score where degree = @max /*另一种方法不知道玩*/ --11、查询‘3-105’号课程的平均分。 select * from score select avg(degree) as '平均分' from score where cno = '3-105' --12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。 select avg(degree) as '平均分' from score where charindex('3',cno)=1 group by cno having count(cno)>=5 --13、查询最低分大于70,最高分小于90的Sno列。 select * from score select sno from score where degree >70 or degree <90 --14、查询所有学生的Sname、Cno和Degree列。 select student.sname , score.cno , score.degree from student inner join score on student.sno = score.sno --15、查询所有学生的Sno、Cname和Degree列。 select student.sno , course.cname , score.degree from student inner join score on student.sno = score.sno inner join course on score.cno = course.cno --16、查询所有学生的Sname、Cname和Degree列。 select student.sname , course.cname , score.degree from student inner join score on student.sno = score.sno inner join course on score.cno = course.cno --17、查询“95033”班所选课程的平均分。 select * from score select * from student select avg(score.degree) from student inner join score on student.sno = score.sno where student.class = '95033' group by score.cno --18、假设使用如下命令建立了一个grade表: /*create table grade(low int,upp int,rank varchar(1)) insert into grade values(90,100,'A') insert into grade values(80,89,'B') insert into grade values(70,79,'C') insert into grade values(60,69,'D') insert into grade values(0,59,'E')*/ --现查询所有同学的Sno、Cno和rank列。 select * from grade select * from score select score.sno , score.cno , grade.rank from score,grade where degree>low and degree<upp --19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。//无关子查询declare @num int select @num = degree from score where sno = '109' and cno = '3-105' select * from score where cno = '3-105' and degree > @num--20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。 select * from score select * from score group by sno,cno,degree having degree < max(degree) /*不会做*/ --21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 select * from score wheredegree > (select degree from score where sno ='109' and cno ='3-105') --22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 select * from student select sno,sname,sbirthday from student where datepart(year,sbirthday) = (select datepart(year,sbirthday) from student where sno = '108') --23、查询“张旭“教师任课的学生成绩。 select * from teacher select * from student select * from score select * from course select score.degree from teacher inner join course on teacher.tno = course.tno inner join score on course.cno = score.cno group by tname,degree having teacher.tname = '张旭' --24、查询选修某课程的同学人数多于5人的教师姓名。 select teacher.tname from teacher inner join course on teacher.tno = course.tno inner join score on course.cno = score.cno group by teacher.tname,score.cno having count(score.cno)>5 --25、查询95033班和95031班全体学生的记录。 select * from student where class = '95033' or class = '95031' --26、查询存在有85分以上成绩的课程Cno. select distinct(cno) from score group by cno,degree having degree > 85 --27、查询出“计算机系“教师所教课程的成绩表。 select score.sno,score.cno,score.degree from teacher inner join course on teacher.tno = course.tno inner join score on course.cno = score.cno where teacher.depart = '计算机系' --28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 /*不理解*/ --29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245” --的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 select cno,sno,degree from score where cno = '3-105' and degree > (select min(degree) from score where cno = '3-245') --30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. select cno,sno,degree from score where cno = '3-105' and degree > (select max(degree) from score where cno = '3-245') --31、查询所有教师和同学的name、sex和birthday. /*如何进行上下相加*/ --32、查询所有“女”教师和“女”同学的name、sex和birthday.--33、查询成绩比该课程平均成绩低的同学的成绩表。 select * from score group by sno,cno,degree having degree < (select avg(degree) from score group by degree) --34、查询所有任课教师的Tname和Depart. select tname,depart from teacher --35 查询所有未讲课的教师的Tname和Depart. select teacher.tname,teacher.depart from course inner join teacher on teacher.tno = course.tno where course.cno not in (select cno from score) --36、查询至少有2名男生的班号。 select * from student select class from student where ssex = '男' group by ssex,class having count(ssex)>=2 --37、查询Student表中不姓“王”的同学记录。 select * from student where left(sname,1) != '王' --38、查询Student表中每个学生的姓名和年龄。 select * from student select sname,datediff(year,sbirthday,getdate()) from student --39、查询Student表中最大和最小的Sbirthday日期值。 select * from student select min(datepart(day,sbirthday)),max(datepart(day,sbirthday)) from student --40、以班号和年龄从大到小的顺序查询Student表中的全部记录。 select * from student order by class desc,datediff(year,sbirthday,getdate()) desc, datediff(month,sbirthday,getdate()) desc,datediff(day,sbirthday,getdate()) desc --41、查询“男”教师及其所上的课程。 select * from teacher select * from course select course.cname from course inner join teacher on teacher.tno = course.tno where teacher.tsex = '男' --42、查询最高分同学的Sno、Cno和Degree列。 select sno,cno,degree from score where degree = (select max(degree) from score) --43、查询和“李军”同性别的所有同学的Sname. select * from student select sname from student where ssex = (select ssex from student where sname = '李军') --44、查询和“李军”同性别并同班的同学Sname. select * from student select sname from student where ssex = (select ssex from student where sname = '李军') group by sname , class having class = (select class from student where sname = '李军')--45、查询所有选修“计算机导论”课程的“男”同学的成绩表。 select * from teacher select * from student select * from score select * from course select score.sno,score.cno,score.degree from student inner join score on student.sno = score.sno inner join course on course.cno = score.cno where course.cname = '计算机导论' and student.ssex = '男' --46、查询score表中分数最高的学生的信息。//多层嵌套 select * from student inner join score on score.sno = student.sno where score.degree = (select max(degree) from score) --47、查询score表中的平均分在80分以上的学生信息。//相关查询。无关查询 select * from student inner join score on score.sno = student.sno where score.degree>80
go
use mydb
create table student
(
--学号
sno varchar(3) not null primary key,
--姓名
sname varchar(4) not null,
--性别
ssex varchar(2) not null,
--出生年月
sbirthday datetime,
--所在班级
class varchar(5)
)
create table teacher
(
--教工编号
tno varchar(3) not null primary key,
--教工姓名
tname varchar(4) not null,
--教工性别
tsex varchar(2) not null,
--教工出生日期
tbirthday datetime,
--职称
prof varchar(6),
--所在部门
depart varchar(10)
)create table course
(
--课程号
cno varchar(5) not null primary key,
--课程名称
cname varchar(10) not null,
--教工编号
tno varchar(3) references teacher(tno)
)create table score
(
--学号
sno varchar(3) not null references student(sno),
--课程号
cno varchar(5) not null references course(cno),
--成绩
degree decimal(4,1)
)
insert into student
values('108','曾华','男','1977-09-01','95033')insert into student
values('105','匡明','男','1975-10-02','95031')insert into student
values('107','王丽','女','1976-01-23','95033')insert into student
values('101','李军','男','1976-02-20','95033')insert into student
values('109','王芳','女','1975-02-10','95031')insert into student
values('103','陆君','男','1974-06-03','95031')insert into teacher
values('804','李诚','男','1958-12-02','副教授','计算机系')
insert into teacher
values('856','张旭','男','1969-03-12','讲师','电子工程系')
insert into teacher
values('825','王萍','女','1972-05-05','助教','计算机系')
insert into teacher
values('831','刘冰','女','1958-08-14','助教','电子工程系')insert into course
values('3-105','计算机导论','825')
insert into course
values('3-245','操作系统','804')
insert into course
values('6-166','数字电路','856')
insert into course
values('9-888','高等数学','831')
insert into score
values('103','3-245','86')
insert into score
values('105','3-245','75')
insert into score
values('109','3-245','68')
insert into score
values('103','3-105','92')
insert into score
values('105','3-105','88')
insert into score
values('109','3-105','76')
insert into score
values('101','3-105','64')
insert into score
values('107','3-105','91')
insert into score
values('108','3-105','78')
insert into score
values('101','6-166','85')
insert into score
values('107','6-166','79')
insert into score
values('108','6-166','81')select * from student
select * from teacher
select * from course
select * from score--1、 查询Student表中的所有记录的Sname、Ssex和Class列。
--2、 查询教师所有的单位即不重复的Depart列。
--3、 查询Student表的所有记录。
--4、 查询Score表中成绩在60到80之间的所有记录。
--5、 查询Score表中成绩为85,86或88的记录。
--6、 查询Student表中“95031”班或性别为“女”的同学记录。
--7、 以Class降序查询Student表的所有记录。
--8、 以Cno升序、Degree降序查询Score表的所有记录。
--9、 查询“95031”班的学生人数。
--10、查询Score表中的最高分的学生学号和课程号。
--11、查询‘3-105’号课程的平均分。
--12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
--13、查询最低分大于70,最高分小于90的Sno列。
--14、查询所有学生的Sname、Cno和Degree列。
--15、查询所有学生的Sno、Cname和Degree列。
--16、查询所有学生的Sname、Cname和Degree列。
--17、查询“95033”班所选课程的平均分。
--18、假设使用如下命令建立了一个grade表:
--create table grade(low int,upp int,rank varchar(1))
--insert into grade values(90,100,'A')
--insert into grade values(80,89,'B')
--insert into grade values(70,79,'C')
--insert into grade values(60,69,'D')
--insert into grade values(0,59,'E')
--现查询所有同学的Sno、Cno和rank列。
--19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。//无关子查询
--20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
--21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
--22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
--23、查询“张旭“教师任课的学生成绩。
--24、查询选修某课程的同学人数多于5人的教师姓名。
--25、查询95033班和95031班全体学生的记录。
--26、查询存在有85分以上成绩的课程Cno.
--27、查询出“计算机系“教师所教课程的成绩表。
--28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
--29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
--30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
--31、查询所有教师和同学的name、sex和birthday.
--32、查询所有“女”教师和“女”同学的name、sex和birthday.
--33、查询成绩比该课程平均成绩低的同学的成绩表。
--34、查询所有任课教师的Tname和Depart.
--35 查询所有未讲课的教师的Tname和Depart.
--36、查询至少有2名男生的班号。
--37、查询Student表中不姓“王”的同学记录。
--38、查询Student表中每个学生的姓名和年龄。
--39、查询Student表中最大和最小的Sbirthday日期值。
--40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
--41、查询“男”教师及其所上的课程。
--42、查询最高分同学的Sno、Cno和Degree列。
--43、查询和“李军”同性别的所有同学的Sname.
--44、查询和“李军”同性别并同班的同学Sname.
--45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
--46、查询score表中分数最高的学生的信息。//多层嵌套
--47、查询score表中的平均分在80分以上的学生信息。//相关查询。无关查询练习题二创建以下三个表: 学生表: Student(Sno,Sname,Ssex,Sbirthday,Sage,Sdept)
Student 由学号 (Sno)、姓名 (Sname)、性别 (Ssex)、出生日期 (Sbirthday)、年龄 (Sage),
所在系 (Sdept) 五个属性组成,其中 Sno 为主键. 课程表: Coures(Cno,Cname,Cpno,Ccredit)
Coures 由课程号 (Cno)、课程名 (Cname)、选修课号 (Cpno)、学分 (Ccredit) 四个属性组成,
其中 Cno 为主键. 学生选课表: SC(Sno,Cno,Grade)
SC 由学号 (Sno)、 课程号 (Cno)、 成绩 (Grade) 三个属性组成, 主键为 (Sno,Cno).按照以上三个表来做如下的习题:1.查找全体学生的学号与姓名2.查找全体学生的姓名、学号与所在系3.查找全体学生的详细纪录4.查找全体学生的姓名和其出生日期 5.查找全体学生的姓名、出生日期和所有系,要求用小写字母表示所有系名6.查找全体学生的姓名、出生日期和所有系,要求给这几列起别名7.查找选修了课程的学生学号(不能重复)8.查找计算系全体学生的名单9.查找所有年龄在20岁以下的学生姓名和其年龄(2种做法)10.查找考试成绩有不及格的学生的学号(不能重复)11.查找年龄在20--30岁(包括20岁和23岁)之间的学生的姓名、系别和年龄12.查找年龄不在20--30岁(包括20岁和23岁)之间的学生的姓名、系别和年龄13.查找信息系、数学系和计算机系学生的姓名与性别(用in做)14.查找不是信息系、数学系,也不是计算机系的学生的姓名与性别(用not in做)15.查找学号以为95001开头的学生的详细情况(用2种方法做)16.查找所有以“刘”开头的学生的姓名、学号和性别17.查找以“欧阳”开头的且三个汉字的学生的姓名18.查找名字中第2个字为“阳”字的学生的姓名和学号19.查找所有不以“刘”开头的学生姓名20.查找以“C”开头的课程的课程号和学分21.查找以“H”开头,且倒数第三个字符为“T”的课程的课程号和学分22.某些学生选修课程后没有参加考试,所以有选课纪录,但没有考试成绩。查找缺少成绩的学生的学号和相应
的课程号23.查找除了无成绩的学生的学号和课程号24.查找计算机系年龄在20岁以下的学生姓名25.查找是计算机系 或者是 数学系 或者是 信息系的学生姓名和性别26.查找选修了3号课程的学生的学号与其成绩,其查找结果按分数的降序排列27.查找全体学生情况,查找结果按所在系的系号升序排列,同一系中的学生按年龄降序排列28.查找学生总人数29.查找选修了课程的学生人数30.计算1号课程的学生平均成绩
http://office.microsoft.com/zh-cn/access/HA012242472052.aspx关于设计数据库
http://office.microsoft.com/zh-cn/access/HP051891362052.aspx首次使用数据库的用户的入门方式
http://office.microsoft.com/zh-cn/access/HP051864092052.aspx
select Sname,Ssex,Class from Student
--2
select distinct depart from teacher
--3
select * from Student
--4
select * from Score where degree between '60' and '80'
--5
select * from Score where degree='85' or degree='86' or degree='88'
--6
select * from Student where class='95031' or ssex='女'
--7
select * from Student order by class desc
--8
select * from score order by Cno asc,degree desc
--9
select count(*) from Student where class='95031'
--10
select sno,cno from score where degree= (select max(degree) from score)
--11
select avg(degree) from score where cno='3-105'
--12
select avg(degree) from score where (select count(cno) from score) >='5' and left(cno,1)='3'
--13
select sno from score group by sno having min(degree) >= '70' and max(degree)<='90'
--14
select a.Sname,b.Cno,b.Degree from from student a,score b where a.sno=b.sno
--15
select a.Sno,b.Cname,a.Degree from score a,course b where a.cno=b.cno
--16
select a.Sname,b.Cname,c.Degree from student a,course b,score c where a.sno=c.sno and b.cno=c.cno
--17
select avg(b.degree) from student a,score b where a.sno=b.sno and a.class='95033' group by cno
--18、假设使用如下命令建立了一个grade表:
/*
create table grade(low int,upp int,rank varchar(1))
insert into grade values(90,100,'A')
insert into grade values(80,89,'B')
insert into grade values(70,79,'C')
insert into grade values(60,69,'D')
insert into grade values(0,59,'E')
*/
select a.Sno,a.Cno,b.rank from score a,grade b where a.degree between low and upp
--19
select * from score where cno='3-105' and degree>(select degree from score where cno='3-105' and sno='109')
--20
select * from score where degree not in (select max(degree) from score group by cno) and (select count(*) from score)>1
--21
select * from score where degree>(select degree from score where cno='3-105' and sno='109' )
--22
select Sno,Sname,Sbirthday from student where year(sbirthday)=(select year(sbirthday) from student where sno='108')
--23
select c.degree from teacher a,course b,score c where a.tname='张旭' and a.tno=b.tno and b.cno=c.cno
--24
select a.tname from teacher a,(select cno,count(cno) as cc from score group by cno) b, course c where b.cc>'5' and a.tno=c.tno and c.cno=b.cno
--25
select a.*,b.* from student a,score b where a.sno=b.sno and (a.class='95033' or a.class='95031')
--26
select distinct cno from score group by cno,degree having degree>'85'
--27
select c.* from teacher a,course b,score c where a.depart='计算机系' and a.tno=b.tno and b.cno=c.cno
--28
select distinct tname,prof from teacher
--29
select Cno,Sno,Degree from score where cno='3-105' and degree>(select max(degree) from score where cno='3-245') order by Degree desc
--或者
select a.Cno,a.Sno,a.Degree from (select * from score where cno='3-105') a,(select * from score where cno='3-245') b
where a.degree>b.degree and a.sno=b.sno order by Degree desc
--题目意思不是很懂,理解有问题,做了2个出来了
--30 我搞不清楚和29题有什么区别了,脑袋转不过来了,分辨不出来
--31
select sname as name,ssex as sex,sbirthday as birthday from student
union
select tname as name,tsex as sex,tbirthday as birthday from teacher
--32
select sname as name,ssex as sex,sbirthday as birthday from student where ssex='女'
union
select tname as name,tsex as sex,tbirthday as birthday from teacher where tsex='女'
--33
select a.* from score a,(select cno,avg(degree) as degree from score group by cno) b where a.degree>b.degree and a.cno=b.cno
--34
select a.tname,a.depart from teacher a,course b where a.tno=b.tno and b.cno in (select distinct cno from score)
--35
select a.tname,a.depart from teacher a,course b where a.tno=b.tno and b.cno not in (select distinct cno from score)
--36
select class from (select class,count(*) as sl from student where ssex='男' group by class ) t where t.sl>=2
--37
select * from student where left(ltrim(sname),1)<>'王'
--38
select sname,datediff(yy,sbirthday,getdate()) as 年龄 from student
--39
select datediff(d,min(sbirthday),max(sbirthday)) as 日期差 from student
--40
select * from student order by class desc,sbirthday desc
--41
select a.tname,b.cname from teacher a,course b where a.tsex='男' and a.tno=b.tno
--42
select Sno,Cno,Degree from score where degree=(select max(degree) from score)
--43
select sname from student where ssex=(select ssex from student where sname='李军')
--44
select sname from student where ssex=(select ssex from student where sname='李军') and class=(select class from student where sname='李军')
--45
select a.sname,c.* from student a,course b,score c where a.sno=c.sno and b.cno=c.cno and a.ssex='男' and b.cname='计算机导论'
--46
select distinct a.* from student a,score b where a.sno=b.sno and a.sno=(select sno from score where degree=(select max(degree) from score))
--47
select * from student where sno in (select sno from score group by sno having avg(degree)>'80')把第一题做了
create table student
(
--学号
sno varchar(3) not null primary key,
--姓名
sname varchar(4) not null,
--性别
ssex varchar(2) not null,
--出生年月
sbirthday datetime,
--年龄
sage varchar(5),
--所在系
sdept varchar(7)
)
--创建课程表
create table course
(
--课程号
cno varchar(5) not null primary key,
--课程名称
cname varchar(10) not null,
--选项课号
cpno varchar(3) ,
--学分
ccredit varchar(3)
)
--创建学生选课表
create table sc
(
--学号
sno varchar(3) not null,
-- 课程号
cno varchar(5) not null ,
--成绩
grade decimal(4,1)
primary key (sno,cno)
)
--1
select sno,sname from student
--2
select sno,sname,sdept from student
--3
select * from student
--4
select sname,Sbirthday from student
--5
select sname,Sbirthday,lower(sdept) from student
--6
select sname as 姓名,Sbirthday as 出生日期,sdept as 所在系 from student
--7
select distinct sno from sc
--8
select * from student where sdept='计算机系'
--9
select sname,sage from student where sage>'20'
--或者
select sname,sage from student where datediff(yy,sbirthday,getdate())>'20'
--10
select distinct sno from sc where grade<'60'
--11
select sname,sage,sdept from student where sage between '20' and '30'
--12
select sname,sage,sdept from student where sage <= '20' and sage >= '30'
--13
select sname,ssex from student where sdept in ('信息系','数学系','计算机系')
--14
select sname,ssex from student where sdept not in ('信息系','数学系','计算机系')
--15
select * from student where left(ltrim(sno),5)='95001'
--或者
select * from student where substring(ltrim(sno),1,5)='95001'
--16
select sno,sname,ssex from student where left(ltrim(sname),1)='刘'
--17
select sname from student where left(ltrim(sname),2)='欧阳' and len(ltrim(sname))='3'
--18
select sno,sname from student where substring(ltrim(sname),2,1)='阳'
--19
select sname from student where left(ltrim(sname),1)<> '刘'
--20
select cno,ccredit from coures where left(ltrim(cpno),1)='C'
--21
select cno,ccredit from coures where left(ltrim(cpno),1)='H' and left(right(rtrim(cpno),3),1)='T'
--22
select sno,cno from sc where Grade is null
--23
select sno,cno from sc where Grade is not null
--24
select sname from student where sdept='计算机系' and sage<'20'
--25
select sname,ssex from student where sdept='计算机系' or sdept='数学系' or sdept='信息系'
--26
select sno,grade from sc where cno='3' order by grade desc
--27
select * from student order by sdept asc,sage desc
--28
select count(*) from student
--29
select count(*) from (select distinct sno from sc) t
--30
select avg(grade) from sc where cno='1'
--1、 查询Student表中的所有记录的Sname、Ssex和Class列。
select Sname,Ssex,Class from student
--2、 查询教师所有的单位即不重复的Depart列。
select distinct(depart) from teacher
--3、 查询Student表的所有记录。
select * from student
--4、 查询Score表中成绩在60到80之间的所有记录。
select * from score where degree Between 60 and 80
--5、 查询Score表中成绩为85,86或88的记录。
select * from score
select * from score where degree = 85 or degree = 86 or degree = 88
--6、 查询Student表中“95031”班或性别为“女”的同学记录。
select * from student
select * from student where Ssex = '女' or class = 95031
--7、 以Class降序查询Student表的所有记录。
select * from student
select * from student order by class desc
--8、 以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by degree desc
select * from score order by cno Asc
--9、 查询“95031”班的学生人数。
select * from student
select count(class) as 人数 from student where class = '95031'
--10、查询Score表中的最高分的学生学号和课程号。
select * from score
declare @max int
select @max = max(degree) from score
select sno as '学号',cno as '课程号' from score where degree = @max
/*另一种方法不知道玩*/
--11、查询‘3-105’号课程的平均分。
select * from score
select avg(degree) as '平均分' from score where cno = '3-105'
--12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select avg(degree) as '平均分' from score where charindex('3',cno)=1 group by cno having count(cno)>=5
--13、查询最低分大于70,最高分小于90的Sno列。
select * from score
select sno from score where degree >70 or degree <90
--14、查询所有学生的Sname、Cno和Degree列。
select student.sname , score.cno , score.degree from student
inner join score on student.sno = score.sno
--15、查询所有学生的Sno、Cname和Degree列。
select student.sno , course.cname , score.degree from student
inner join score on student.sno = score.sno
inner join course on score.cno = course.cno
--16、查询所有学生的Sname、Cname和Degree列。
select student.sname , course.cname , score.degree from student
inner join score on student.sno = score.sno
inner join course on score.cno = course.cno
--17、查询“95033”班所选课程的平均分。
select * from score
select * from student
select avg(score.degree) from student
inner join score on student.sno = score.sno where student.class = '95033'
group by score.cno
--18、假设使用如下命令建立了一个grade表:
/*create table grade(low int,upp int,rank varchar(1))
insert into grade values(90,100,'A')
insert into grade values(80,89,'B')
insert into grade values(70,79,'C')
insert into grade values(60,69,'D')
insert into grade values(0,59,'E')*/
--现查询所有同学的Sno、Cno和rank列。
select * from grade
select * from score
select score.sno , score.cno , grade.rank from score,grade
where degree>low and degree<upp
--19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。//无关子查询declare @num int
select @num = degree from score where sno = '109' and cno = '3-105'
select * from score where cno = '3-105' and degree > @num--20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select * from score
select * from score group by sno,cno,degree having degree < max(degree)
/*不会做*/
--21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from score wheredegree > (select degree from score where sno ='109' and cno ='3-105')
--22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select * from student
select sno,sname,sbirthday from student where datepart(year,sbirthday) =
(select datepart(year,sbirthday) from student where sno = '108')
--23、查询“张旭“教师任课的学生成绩。
select * from teacher
select * from student
select * from score
select * from course
select score.degree from teacher inner join course on teacher.tno = course.tno
inner join score on course.cno = score.cno
group by tname,degree having teacher.tname = '张旭'
--24、查询选修某课程的同学人数多于5人的教师姓名。
select teacher.tname from teacher inner join course on teacher.tno = course.tno
inner join score on course.cno = score.cno
group by teacher.tname,score.cno having count(score.cno)>5
--25、查询95033班和95031班全体学生的记录。
select * from student where class = '95033' or class = '95031'
--26、查询存在有85分以上成绩的课程Cno.
select distinct(cno) from score group by cno,degree having degree > 85
--27、查询出“计算机系“教师所教课程的成绩表。
select score.sno,score.cno,score.degree from teacher
inner join course on teacher.tno = course.tno
inner join score on course.cno = score.cno
where teacher.depart = '计算机系'
--28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
/*不理解*/
--29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”
--的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
select cno,sno,degree from score where cno = '3-105' and degree
> (select min(degree) from score where cno = '3-245')
--30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
select cno,sno,degree from score where cno = '3-105' and degree
> (select max(degree) from score where cno = '3-245')
--31、查询所有教师和同学的name、sex和birthday.
/*如何进行上下相加*/
--32、查询所有“女”教师和“女”同学的name、sex和birthday.--33、查询成绩比该课程平均成绩低的同学的成绩表。
select * from score group by sno,cno,degree having degree < (select avg(degree) from score group by degree)
--34、查询所有任课教师的Tname和Depart.
select tname,depart from teacher
--35 查询所有未讲课的教师的Tname和Depart.
select teacher.tname,teacher.depart from course
inner join teacher on teacher.tno = course.tno
where course.cno not in (select cno from score)
--36、查询至少有2名男生的班号。
select * from student
select class from student where ssex = '男' group by ssex,class having count(ssex)>=2
--37、查询Student表中不姓“王”的同学记录。
select * from student where left(sname,1) != '王'
--38、查询Student表中每个学生的姓名和年龄。
select * from student
select sname,datediff(year,sbirthday,getdate()) from student
--39、查询Student表中最大和最小的Sbirthday日期值。
select * from student
select min(datepart(day,sbirthday)),max(datepart(day,sbirthday)) from student
--40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from student order by class desc,datediff(year,sbirthday,getdate()) desc,
datediff(month,sbirthday,getdate()) desc,datediff(day,sbirthday,getdate()) desc
--41、查询“男”教师及其所上的课程。
select * from teacher
select * from course
select course.cname from course inner join teacher on teacher.tno = course.tno
where teacher.tsex = '男'
--42、查询最高分同学的Sno、Cno和Degree列。
select sno,cno,degree from score where degree = (select max(degree) from score)
--43、查询和“李军”同性别的所有同学的Sname.
select * from student
select sname from student where ssex = (select ssex from student where sname = '李军')
--44、查询和“李军”同性别并同班的同学Sname.
select * from student
select sname from student where ssex = (select ssex from student where sname = '李军')
group by sname , class having class = (select class from student where sname = '李军')--45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
select * from teacher
select * from student
select * from score
select * from course
select score.sno,score.cno,score.degree from student inner join score on student.sno = score.sno
inner join course on course.cno = score.cno where course.cname = '计算机导论' and student.ssex = '男'
--46、查询score表中分数最高的学生的信息。//多层嵌套
select * from student inner join score on score.sno = student.sno
where score.degree = (select max(degree) from score)
--47、查询score表中的平均分在80分以上的学生信息。//相关查询。无关查询
select * from student inner join score on score.sno = student.sno
where score.degree>80