分享一些简单的SQL查询面试题
/* 3. 在StudentInfo数据库中,用DDL进行下列查询操作 */ /*--单表查询-- */ --1)查询全体学生的学号、姓名、性别、出生日期及所在系。 USE StudentInfo; SELECT * FROM Student; 2)查询全体学生的选课情况,其成绩列值都加5,并为各列设置中文的别名。 SELECT Sno '学号',Cno '课程号',Grade+5 '成绩' FROM SC; 3)显示所有选课学生的学号,并去掉重复行。 SELECT DISTINCT Sno FROM Student; 4)查询学生选课成绩在80~90分之间的学生的学号、课程号、成绩。 SELECT * FROM SC WHERE Grade between 80 and 90; 5)查找姓名以S开头的所有学生的学号、姓名。 SELECT Sno,Sname FROM Student WHERE Sname like 's%'; 6)查询有考试成绩(即成绩不为空值)的学生的学号、课程号。 SELECT Sno,Cno FROM SC WHERE Grade is not null; 7)查询计算机系(计科0701)年龄在18岁以上的学生的学号、姓名。 SELECT Sno,Sname FROM Student WHERE Sage>18 and Sdept='CS0701'; --8)求选修课程超过2门课的学生学号、平均成绩和选课门数,并按平均成绩降序排列 SELECT Sno,AVG(Grade) AvgGrade,COUNT(cno) '选课门数' FROM SC GROUP BY Sno HAVING COUNT(*)>=2 ORDER BY AvgGrade desc; /*--查询及更新-- */ --9)查询每个学生的学号、姓名、选修的课程名、成绩。(连接查询) SELECT Student.Sno,Sname,Cname,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno and Course.Cno=SC.Cno; --10)查询与Sue在同一个系学习的所有学生的学号和姓名。(嵌套查询) SELECT Sno,Sname FROM Student WHERE Sdept in( SELECT Sdept FROM Student WHERE Sname='Sue' ); --11)查询选修了课程名为English的课程并且成绩大于80分的学生学号、姓名。(可改为嵌套查询) SELECT Student.Sno,Sname FROM Student,Course,SC WHERE Student.Sno=SC.Sno and Course.Cno=SC.Cno and Cname='English' and Grade>80; /* 12)向Student表中添加一个学生记录,学生学号为20010115,姓名为Stefen ,性别为男, 年龄为25岁,所在系为艺术系Art。*/ INSERT INTO Student VALUES('20010115','Stefen','男',25,'艺术系Art'); --13)向SC表中添加一个学生的选课记录,学生学号为20010115,所选的课程号为C2。 INSERT INTO SC(Sno,Cno) VALUES('20010115','C2'); --14)将姓名为Sue的学生所在系改为计算机系。 UPDATE Student SET Sdept='计算机系' WHERE Sdept in( SELECT Sdept FROM Student WHERE Sname='Sue' ); --15)将选了课程名为Database课程的学生成绩加10。 UPDATE SC SET Grade=Grade+10 WHERE Cno in( SELECT Cno FROM Course WHERE Cname='Database' ); --16)删除所有成绩为空值的选修记录。 DELETE FROM SC WHERE Grade is null; --17)删除计算机系选修成绩不及格的学生的选修记录。 DELETE FROM SC WHERE Cno in( SELECT SC.Cno FROM Student,SC WHERE Sdept='计算机' AND Grade<60 AND Student.Sno=SC.Sno );