数据库与MySQL实验二

您所在的位置:网站首页 mysql查询总分大于200的学生 数据库与MySQL实验二

数据库与MySQL实验二

2024-07-13 15:49| 来源: 网络整理| 查看: 265

实验内容

1.基本查询

(1)查询学生表中全体学生的所有信息。

T-SQL语句:

SELECT * FROM Student;

(2)检索全体学生的学号、姓名。

T-SQL语句:

SELECT Sno,Sname FROM Student;

2.查询时改变列标题的显示

检索全体学生的学号、姓名、性别信息,并分别加上“学号”、“姓名”、“性别”的别名信息。

T-SQL语句:

SELECT Sno 学号,Sname 姓名,Ssex 姓别 FROM Student;

3.条件查询

(1)查询成绩大于90分的学生的学号及课程号、成绩。

T-SQL语句:

SELECT Sno,Cno,Grade FROM SC WHERE Grade > 90;

(2)查询成绩介于85~90分的学生的学号及课程号、成绩。

T-SQL语句:

SELECT Sno,Cno,Grade FROM SC WHERE Grade BETWEEN 85 AND 90;

(3)查询选修了课程号为“2”,且成绩大于88的学生的学号。

T-SQL语句:

SELECT Sno FROM SC WHERE Cno = '2' AND Grade > 88;

4.基于IN子句的数据查询

从课程表中查询出“数学”、“PASCAL语言”的所有信息。

T-SQL语句:

SELECT * FROM Course WHERE Cname IN('数学','PASCAL语言');

5.基于Like子句的查询

(1)从学生表中分别检索出姓张的所有同学的资料;检索名字的第二个字是“红”或“虹”的所有同学的资料。

T-SQL语句:

SELECT * FROM Student WHERE Sname LIKE '张%'; SELECT * FROM Student WHERE Sname LIKE '_红%' OR Sname LIKE '_虹%';

(2)如果用户查询的匹配字符串本身就含有%或_,比如在课程表中,添加一门课程为Visual_Basic,其它相关信息自取。若要查询名为Visual_Basic的课程的学分,则T-SQL语句为:

(提示:使用ESCAPE短语,MySQL转义字符不能用“\”)

INSERT INTO Course VALUES('8','Visual_Basic',NULL,NULL); SELECT Ccredit FROM Course WHERE Cname LIKE 'Visual/_Basic' ESCAPE '/';

6.查询部分数据

分别从课程表中检索出前5个的课程信息。(提示:MySQL使用limit)

T-SQL语句:

SELECT * FROM Course LIMIT 0,5;

7.消除重复行

检索出学生已选课程的课程号,要求显示的课程号不重复。

T-SQL语句:

SELECT DISTINCT Cno FROM SC;

8.查询经过计算的值

查询全体学生的姓名及其出生年份,要求为计算值取别名“出生年份”。(提示:用系统函数获取当前的年份减去年龄即为出生年份。MySQL中取系统时间函数为now()。)

T-SQL语句:

SELECT Sname,year(now())-Sage 出生年份 FROM Student;

9.使用ORDER BY语句对查询的结果进行排序

升序的关键字是ASC,降序的关键字是DESC,系统默认的是升序排列。

显示所有学生的基本信息,并按学生的年龄的升序排列。

T-SQL语句:

SELECT * FROM Student ORDER BY Sage ASC;

10.使用Group子句进行查询

如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要使用Group BY子句并使用集合函数。

(1)汇总总分大于200分的学生的学号及总成绩。

T-SQL语句:

SELECT Sno,sum(Grade) FROM SC GROUP BY Sno HAVING sum(Grade) > 200;

(2)查询各个课程号相应的选课人数。

T-SQL语句:

SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;

11.使用聚合函数

(1)查询学生总人数。

SELECT COUNT(*) FROM Student;

(2)计算“2”号课程的学生平均成绩、最高分、最低分。

T-SQL语句:

SELECT AVG(Grade),MAX(Grade),MIN(Grade) FROM SC WHERE Cno = '2';

12.查询比“王敏”年纪大的男学生信息。

T-SQL语句:

SELECT * FROM Student WHERE Ssex = '男' AND Sage > (SELECT Sage FROM Student WHERE Sname = '王敏');

13.检索所有学生的选课信息。(提示:使用外连接)

T-SQL语句:

SELECT student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM student LEFT OUTER JOIN sc ON(student.Sno = sc.Sno);

14.查询已选课学生的学号、姓名、课程名、成绩。(提示:连接查询)

T-SQL语句:

SELECT sc.Sno,Sname,Cno,Grade FROM sc LEFT OUTER JOIN student ON(student.Sno = sc.Sno);

15.查询选修了“信息系统”的学生的学号和姓名。

T-SQL语句:

SELECT student.Sno,Sname FROM Course,SC,Student WHERE student.Sno = sc.Sno AND Sc.Cno = Course.Cno AND course.Cname = '信息系统';

16.查询与“刘晨”在同一个系的学生学号、姓名、性别。

子查询T-SQL语句:

SELECT Sno,Sname,Ssex FROM student WHERE Sdept IN(SELECT Sdept FROM student WHERE Sname = '刘晨');

连接查询T-SQL语句:

SELECT S1.Sno,S1.Sname,S1.Ssex FROM student S1,student S2 WHERE s1.Sdept = s2.Sdept AND S2.Sname = '刘晨';

17.查询其他系中比计算机科学系任一学生年龄大的学生的学号、姓名。

带有ANY或ALL谓词的子查询语句:

SELECT Sno,Sname FROM student WHERE Sage > ANY (SELECT Sage FROM student WHERE Sdept = 'CS') AND Sdept 'CS';

用聚合函数实现:

SELECT Sno,Sname FROM student WHERE Sage > (SELECT MAX(Sage) FROM student WHERE Sdept = 'CS') AND Sdept 'CS';

18.检索选修3门以上课程的学生的学号、总成绩。

T-SQL语句:

SELECT Sno,sum(Grade) FROM SC GROUP BY Sno HAVING COUNT(Sno) > 3;

19.检索多于2名学生选修的课程号及平均成绩。

T-SQL语句:

SELECT Cno,AVG(Grade) FROM SC GROUP BY Cno HAVING COUNT(Cno) > 2; 实验思考

1. 查询所有没有选修课程的学生的学号、姓名。

SELECT Sno,Sname FROM student WHERE Sno NOT IN (SELECT Sno FROM sc);

2. 查询选修课程的人数。

SELECT COUNT(DISTINCT Sno) FROM SC;

3. 查询选课人数大于等于3人的课程编号、课程名称、人数。

SELECT sc.Cno,Cname,COUNT(sc.cno) FROM sc,course WHERE sc.Cno = course.Cno GROUP BY sc.Cno HAVING COUNT(sc.cno) >= 3;

4. 在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分别是什么?

三种方式内连接(INNER JOIN)、外连接(LEFT OUTER JOIN、RIGHT OUTER JOIN、)和交叉连接(CROSS JOIN)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3