查询课程表的全部信息。
-
course(课程表)
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式) G001 线性代数 3 48 考试 R003 数据结构 3 48 考试 R009 离散数学 3 48 考试 S023 嵌入式系统与编程实验 1 32 考察 G012 大学物理 4 64 考试
SELECT * FROM course;
第2关:查询选定列
查询各位教师的工号、姓名和性别。
-
teacher(教师表)
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-15
SELECT tno,tname,sex FROM teacher;
第3关:去重查询
通过班级表查询数据库中有哪些学院。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37
SELECT DISTINCT dept FROM class;
第4关:比较大小
查询职称为副教授的教师的工号和姓名。
-
teacher(教师表)
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-15
SELECT tno,tname FROM teacher WHERE title = '副教授';
第5关:多重条件
查询1980年1月1日之后出生的女教师信息。
-
teacher(教师表)
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-15
SELECT * FROM teacher WHERE birthday >= 1980-01-01 AND sex = '女';
第6关:确定范围
查询 1970年 - 1980年
之间出生的教师信息。
-
teacher(教师表)
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-15
SELECT * FROM teacher WHERE EXTRACT(YEAR FROM birthday) BETWEEN 1970 AND 1980;
第7关:确定集合
查询17级和19级的班级信息。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37
SELECT * FROM class WHERE grade IN('17级','19级');
第8关:模糊查询
查询17级和19级的班级信息。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37
SELECT tno,tname,title FROM teacher WHERE tname LIKE '杨%';
第9关:求和、最大最小值
查询全校课程最高的学分数。
查询软件学院学生的总数。
-
course(课程表)
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式) G001 线性代数 3 48 考试 R003 数据结构 3 48 考试 R009 离散数学 3 48 考试 S023 嵌入式系统与编程实验 1 32 考察 G012 大学物理 4 64 考试
SELECT MAX(credit) FROM course;
SELECT SUM(gnum) FROM class WHERE dept = '软件';
第10关:计数
统计软件学院的班级数量。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37
SELECT COUNT(gname) FROM class WHERE dept = '软件';
第10关:计数
统计软件学院的班级数量。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37
SELECT COUNT(gname) FROM class WHERE dept = '软件';
第11关:Group by子句使用
查询每个教师的工号及其任课的班级数。
-
teaching(教师授课表)
cno(课程号) tno(工号) gno(班级号) term(开课学期) classroom(教室) G001 0078 0211903 1 A101 G001 0078 0131901 1 A101 R003 0118 0211801 2 S001 R009 0213 0211903 2 S002 S023 0193 0211801 1 S001 G012 0030 0131901 2 B003
SELECT tno,COUNT(*) FROM teaching GROUP BY tno;
第12关:Having子句使用
查询人数超过70人(大于70)的学院的名称和人数。
查询第1学期授课数量多于1门(大于1)的教师工号和数量。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37 -
teaching(教师授课表)
cno(课程号) tno(工号) gno(班级号) term(开课学期) classroom(教室) G001 0078 0211903 1 A101 G001 0078 0131901 1 A101 R003 0118 0211801 2 S001 R009 0213 0211903 2 S002 S023 0193 0211801 1 S001 G012 0030 0131901 2 B003
SELECT dept,SUM(gnum) FROM class GROUP BY dept HAVING (SUM(gnum)>70);
SELECT tno,COUNT(tno) FROM teaching GROUP BY tno HAVING (COUNT(tno)>1);
第13关:单因素排序
查询软件学院班级的班号、班级名和人数,并按人数升序排列。
-
class(班级表)
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数) 0211801 软件18级1班 18级 软件 37 0211903 软件19级3班 19级 软件 35 0131901 机械19级1班 19级 机械 37 SELECT gno,gname,gum FROM class WHERE dept = '软件' ORDER BY gnum ASC;
第14关:多因素排序
查询教师授课情况,结果先按学期升序排列,再按工号降序排列。
-
teaching(教师授课表)
cno(课程号) tno(工号) gno(班级号) term(开课学期) classroom(教室) G001 0078 0211903 1 A101 G001 0078 0131901 1 A101 R003 0118 0211801 2 S001 R009 0213 0211903 2 S002 S023 0193 0211801 1 S001 G012 0030 0131901 2 B003 SELECT * FROM teaching ORDER BY term ASC,tno DESC;