4.3 数据表操作实训

4.3 数据表操作实训

SQL语句可以分为两部分:一部分用来创建数据库对象,另一部分用来操作这些对象,本项目详细介绍了数据表的基本操作,包括插入表数据、修改表数据、删除表数据、查询表数据。通过本项目的介绍,读者可以了解到SQL中的查询语言的强大功能,用户可以根据需要灵活使用。下面的“数据表操作实训”将回顾这些SQL语句。

本实训以学生管理信息系统数据库(stuMIS)为例进行操作。

1)stuMIS数据库中数据表的结构参考第3.4.1节。

2)向对应的表中插入数据。

向部门/系部表插入数据,数据如图4-1所示。

图4-1 向部门/系部表插入数据

向班级表插入数据,数据如图4-2所示。

图4-2 向班级表插入数据

向课程表插入数据,数据如图4-3所示。

图4-3 向课程表插入数据

向学生表插入数据,数据如图4-4所示。

图4-4 向学生表插入数据

向成绩表插入数据,数据如图4-5所示。

图4-5 向成绩表插入数据

3)根据stuMIS数据库中的表进行如下操作。

①修改表中数据。

修改学号为1611101的学生的总学分为55分。

修改学号为1621102的学生的学分为60分,生日为1990-8-5(一次改变多字段的值)。

修改王超的性别为女。

修改计算机系王超的性别为男(多个条件)。

②查询单表中部分字段。

查询所有学生的学号和姓名。

查询所有学生的姓名和家庭住址。

查询所有系部的名称和联系电话。

查询所有课程名称和该课程授课教师信息。

查询所有班级名称和班长信息。

③重命名检索得到的字段:要求用汉字作为字段名。

查询所有学生的姓名和性别。

查询所有学生的姓名、年龄和家庭住址。

查询所有系部的名称和办公室信息。

查询所有课程名称、授课时间和该课程授课教师信息。

查询所有班级名称和班长信息。

④返回结果集中的部分行。

返回学生成绩表中前10条数据。

返回课程表中前8条数据的课程名称和选课人数。

返回系部表中的第1条数据。

返回科目表中的第5~8条数据。

⑤消除重复行。

返回学生表所有不重复的班级编号,字段名使用汉字显示。

返回班级表中所有不重复的系部编号,字段名使用汉字显示。

返回成绩表中不重复的课程编号,字段名使用汉字显示。

返回课程表中不重复的授课时间,字段名使用汉字显示。

返回课程表中不重复的课程所属类别,字段名使用汉字显示。

返回学生表中每个班级的年龄信息。

⑥条件查询。

班级编号为20080101的所有学生信息。

生源地为武汉的所有学生信息。

生源地为荆门的学生的姓名、性别、年龄和生源地。

性别为女的所有学生信息。

课程类别为工程技术的所有课程信息。

学生密码和学号相同的学生信息。

班级编号为20080101且生源地为武汉的学生姓名、生源地信息。

性别为女、生源地为荆门的所有学生信息。

20岁的男生班级编号、姓名和生源地。

周四第1~2节上课的计算机类的课程信息。

报名人数下限为30的计算机类课程信息。

班级编号为20080101或者生源地为武汉的学生全部信息。

工程技术类和管理类的所有课程。

20080101和20080102所有班级学生信息。

生源地为黄冈和孝感的所有信息。

院系编号为2和3的所有班级信息。

显示所有大于18岁的学生信息。

显示所有不是18岁和20岁的学生信息。

显示所有不能正常开课的课程信息。

显示所有不及格的学生成绩。

报名人数大于等于30人,并且小于等于36人的课程信息。

年龄为17、19、21的所有学生信息。

黄冈、孝感、宜昌所有18岁女学生的学号、姓名、年龄和家庭住址。

计算机和工程技术类的所有课程信息。

年龄在18~20之间的学生的班级编号和姓名。

年龄在18~20之间的黄冈所有学生信息。

年龄在18~20之间的所有学生信息和孝感的所有学生信息。

年龄不是18~20之间的所有学生信息(两种方法)。

⑦模糊查询like。

院系表中电话带有98两个连续数字的院系信息。

院系表中主任中姓王的院系信息。

课程表中课程名中带有“计算机”三个字的所有课程信息。

课程表中课程编号以3开头的所有课程信息。

所有第3、4节上课的课程信息。

学生表中学生班级编号中有01的所有学生信息(学生表中不重复的班级信息)。

课程表中所有周二上课的课程名称、上课教师和详细的上课时间。

学生表中姓金的女生信息。

课程表中第1、2节上课的计算机类课程信息。

姓名中带有“超”字的学生信息。

查询姓孙的授课教师的开课信息。

所有周一开课的课程信息。

所有名字是两个字的学生信息。

姓赵和姓王的所有学生信息。

系主任不姓赵和吴的所有系部信息。

办公室不是A和B开头的所有系部信息。

学生姓名第三个字是“英”的所有学生的姓名和班级编号。

姓名的第二个字不是“文”的所有学生的学号和姓名信息。

密码中带有字母b或数字7的所有学生信息。

⑧排序练习。

检索course表的课程名称、授课教师、最低限制开班人数和报名人数,要求检索结果按照最低限制开班人数的升序排列;最低限制开班人数相同时,则按照报名人数的降序排列。

检索student表的学号、姓名、性别、年龄,要求检索结果按照年龄升序排列。年龄相同的,按女生在前、男生在后排列(降序)。

检索sc表的信息,要求按照课程编号升序排列,课程编号相同的,按照成绩降序排列。

检索student表的信息,要求按照班级升序排列,班级相同的,按照学号升序排列。

检索成绩表的信息,要求按照课程编号升序排列,课程编号相同的,按照成绩降序排列,成绩相同的,按照学号升序排列。

课程表中所有信息,要求按照报名人数从多到少的顺序显示。

⑨聚合函数。

检索student表中最小的年龄。

检索student表中最大的年龄。

检索student表中平均年龄。

检索course表中每个学生的总成绩。

检索class表中一共有多少个班级。

查询15112班级有多少个学生。

查询学号为1511101的学生的总成绩。

查询成绩表中有多少个学生选择课程编号为30106的课程。

查询最低限制开班人数和报名人数之差最大的课程信息。

检索student表中最小的年龄、最大的年龄和平均年龄。

检索课程编号为30106的最高分、最低分和平均分。

检索学号为1511101的学生的最高分、最低分和总分。

检索student表中来自荆门的学生的最小年龄、最大年龄和平均年龄。

⑩group by having分组查询。

统计各个系部班级数量。

统计各个班级男女生人数。

统计课程表中各类课程的数量。

统计成绩表中各科考试人数。

按生源地分类统计各个生源地学生的平均年龄。

按班级分类统计各个班级的学生的平均年龄。

按课程编号分类统计不同课程编号的学生的平均分数。

按学号分类统计各个学生的总分。

查询15112班级男生与女生人数。

统计各个学生的平均分。

查询平均成绩高于80的学生的学号和成绩。

统计成绩表中各科考试人数,并且考试人数大于5人的。

统计各个班级男女生人数,返回人数大于3人的。

○1 case when。

显示学生成绩表中的所有信息,要求使用“及格”或者“不及格”显示成绩。

显示所有学生的姓名和年龄,要求使用“成年”或者“未成年”显示年龄。

○12 in的应用(子查询)。

查询计算机系所有班级信息。

查询计算机系和经管系所有班级。

查询“汽修一班”所有学生信息。

查询系部主任是“孙丰伟”的所有班级信息。

查询系主任姓吴的系部的所有班级。

查询来自武汉的同学信息。

查询“管理”类课程的成绩。

查询来自武汉和荆门的学生的考试成绩信息。

查询参加“计算机应用基础”和“数据库技术及应用”考试的学生成绩信息。

○13多表联合查询。

显示系部编号、系部名称和班级名称、班长。

显示所有学生的班级编号、班级名称、学生姓名。

○14通过计算获得新列。

将成绩表中100分制成绩使用满分为120分的成绩。显示所有字段。

○15删除表中数据。

删除所有性别为女的学生信息。

删除经管系男生信息。

删除第4、5、6三个学期开课的课程信息。