第1关:比较大小
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
在使用 SELECT 语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。
单一条件查询语句如下:
SELECT <字段名1>,<字段名2>,…,<字段名n> FROM <表名> WHERE <字段名> 运算符 <值>;
运算符 描述
= 等于
<> 或 != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN AND 选取介于两个值之间的数据范围,相当于>=并且<=
编程要求
查询职称为副教授的教师的工号和姓名。
注意:查询结果列顺序为工号在前姓名在后,行顺序默认
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
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
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
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT tno,tname FROM teacher WHERE title = '副教授';
---------- END ----------
第2关:多重条件
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
在使用 SELECT 语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。
多重条件查询:
SELECT * FROM <表名> WHERE <字段名> 运算符 <值> AND <字段名> 运算符 <值>;
运算符 描述
= 等于
<> 或 != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN AND 选取介于两个值之间的数据范围,相当于>=并且<=
编程要求
查询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
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
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
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT * FROM teacher WHERE birthday>'1980-1-1' AND sex='女';
---------- END ----------
第3关:确定范围
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
在使用 SELECT 语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。
确定范围条件查询:
SELECT * FROM <表名> WHERE <字段名> BETWEEN <值> AND <值>;
运算符 描述
= 等于
<> 或 != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN AND 选取介于两个值之间的数据范围,相当于>=并且<=
编程要求
查询 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
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
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
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT * FROM teacher WHERE birthday BETWEEN 1970 AND 1981;
---------- END ----------
第4关:确定集合
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
在使用 SELECT 语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。
确定集合条件查询:
SELECT * FROM <表名> WHERE <字段名> IN (<值>,<值>);
运算符 描述
= 等于
<> 或 != 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN AND 选取介于两个值之间的数据范围,相当于>=并且<=
编程要求
查询17级和19级的班级信息。
注意:查询结果行列皆为默认。
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
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
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
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT * FROM class WHERE grade IN ('17级','19级');
---------- END ----------
第5关:模糊查询
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
在使用 SELECT 语句时,可以使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。
模糊查询语句
一般模糊语句语法如下:
SELECT <字段> FROM <表> WHERE <某字段> Like <条件>;
其中关于条件,SQL 提供了四种匹配模式:
1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符。
SELECT * FROM <表> WHERE u_name LIKE '%三%';
将会把 u_name 为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。另外,如果需要找出 u_name 中既有“三”又有“猫”的记录,请使用 AND 条件:
SELECT * FROM <表> WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%';
若使用
SELECT * FROM <表> WHERE u_name LIKE '%三%猫%';
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
2、_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
SELECT * FROM <表> WHERE u_name LIKE '_三_';
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
SELECT * FROM <表> WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3、[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
SELECT * FROM <表> WHERE u_name LIKE '[张李王]三';
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde 之类的)则可略写为“0-4”、“a-e”
SELECT * FROM <表> WHERE u_name LIKE '老[1-9]';
将找出“老1”、“老2”、……、“老9”;
4、[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
SELECT * FROM <表> WHERE u_name LIKE '[^张李王]三';
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等。
SELECT * FROM <表> WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……
编程要求
查询姓杨的老师的工号、姓名和职称。
注意:查询结果列顺序为工号、姓名、职称,行顺序为默认。
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
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
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
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT tno,tname,title FROM teacher WHERE tname Like '杨_';
---------- END ----------
1205

被折叠的 条评论
为什么被折叠?



