文章目录
第1关:选择列查询
相关知识
为了完成本关任务,你需要掌握:
1.如何获取数据表中指定字段的数据;
2.如何获取数据表中的所有数据。
查询数据表中指定字段的内容
MySQL 从数据表中查询数据的基本语句为 SELECT 语句。
SELECT 语句的可选参数比较多,让我们先从最简单的开始,带大家一步一步的深入 SELECT 语句的使用。
SELECT 基本语法规则为: SELECT 字段名 FROM 表名;
分析:
在该例子中,我们使用了 SELECT 语句从 Mall_products 表中获取名称为 prod_name 字段下的所有产品名称,字段名称需要紧跟在 SELECT 关键字之后。
然而事实上,我们查询数据的时候,往往需要同时查询多个字段下的内容。这时,我们只需要在字段之间加入逗号,即可。
语法规则为: SELECT 字段名1, 字段名2 FROM 表名;
小提示: MySQL 中的 SQL 语句对关键字的大小写不敏感, SELECT 和 select 是一样的。 但是许多开发者更喜欢将关键字大写,表名和字段名使用小写,养成这种习惯,以后写出来的脚本就更容易阅读和维护了。
查询数据表中的所有内容
如果我们不记得字段名字了,我们还可以查看整张表的内容。这时候,只需要我们用星号*来代替字段的名字,就会得到一整张表的内容。
语法规则为SELECT *FROM 表名;
小提示: 虽然使用星号 * 看起来是一件很方便的事情,但是建议大家在不想获取整张表的情况下,还是使用字段名来进行查询。因为很显然,它会降低查询的效率。
使用别名
从一个表中查询字段时,想要把查询的字段另外起一个名称,可以通过别名实现。
以上述表 Mall_products 为例,我们想把查询结果的商品名称字段 prod_name 以“商品名称”展示时,可以通过如下方式实现。
SELECT prod_name as ‘商品名称’, prod_price
FROM Mall_products;
上述语句中,关键字 as 也可省略不写。
好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器 Begin-End 处补充代码:
求2000年出生的学生的学号、姓名, 结果列别名为汉字。
-学生情况表 student
答案
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sno '学号', sname as '姓名'
from student
where birthday >= '2000-01-01' && birthday <= '2000-12-31'
-- select * from student;
/**********End**********/
第2关:去除重复结果
任务描述
本关任务:求选修了课程的学生学号,结果表中学号显示唯一。
相关知识
为了完成本关任务,你需要掌握:
如何使用关键字 DISTINCT 检索数据表中不重复的内容。
去除重复结果
有的时候,出于对数据分析的要求,分析人员需要消除数据表中重复的数据,那么如何消除呢?别担心,SQL 语句也贴心的为你准备好了消除重复数据的关键字 DISTINCT。
语法规则为: SELECT DISTINCT 字段名 FROM 表名;
答案
在这里插入代码片 use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select distinct sno from score where grade is not null;
-- select * from score;
/**********End**********/
第3关:范围查询
任务描述
本关任务:使用 BETWEEN AND 或者运算符进行范围查询。
相关知识
为了完成本关任务,你需要掌握:如何使用关键字 BETWEEN AND 提取数据表中的指定数据内容。
带 BETWEEN AND 关键字的查询
在很多时候,我们仅仅是想知道在某一范围内有多少符合条件的数据,这就不得不使用到关键字 BETWEEN AND 了。
BETWEEN AND 需要两个参数支持,一个是范围的开始值,另一个就是结束值了。如果字段值满足指定的范围查询条件,就返回这些满足条件的数据内容。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN n1 AND n2;
带 NOT BETWEEN AND 关键字的查询
我们还可以对关键字 BETWEEN AND 进行取反,表示查询指定范围之外的值。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 NOT BETWEEN n1 AND n2;
答案
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
-- select * from course;
select *
from course
where ctime between 1 and 50;
-- where ctime >= 1 && ctime <= 50
/**********End**********/
第4关:带IN关键字的查询
任务描述
本关任务:求不是计算机系或信息系学生。
相关知识
为了完成本关任务,你需要掌握 MySQL 的运算符及运算符的优先级。。
运算符
MySQL 主要有以下几种运算符:
算术运算符;
比较运算符;
逻辑运算符。
算术运算符
比较运算符
SELECT 语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。
逻辑运算符
逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。
答案
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select *
from student
where sdept not in ('计算机', '信息');
/**********End**********/
第5关:匹配查询
任务描述
本关任务:求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
相关知识
为了完成本关任务,你需要掌握:如何使用通配符 % 模糊匹配数据内容。
在前面的检所操作中,我们讲述了如何进行比较查询或者是范围查询,但如果我们想查找所有包含字符 ir 的内容该么办呢?用之前的方法好像行不通了。在这里,我们需要用通配符进行匹配查找。而执行匹配查找的关键字就是 LIKE。
SQL 语句支持很多种通配符,其中可以和 LIKE 一起搭配使用的就是通配符 % 和 _ 了。
使用通配符 % 模糊匹配数据内容
百分号通配符 % 可以匹配任意长度的字符,甚至包括零字符。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘字符%’; 。 其中 % 的位置可以根据需要在字符间变化
使用通配符 _ 模糊匹配数据内容
下划线通配符 _ 与百分号通配符 % 类似,也用于模糊匹配。但是区别在于下划线通配符 _ 只能模糊匹配 1个 字符。如果你执意想用下划线通配符 _ 匹配多个字符,那只能多用几个 _ 咯!
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘字符_’; 其中_的位置可以根据需要在字符间变化
答案
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select *
from student
where sname like '%马__';
/**********End**********/
第6关:范围查询-练习
任务描述
本关任务:求选修 052501 老师,成绩在 80 至 90 之间,学号为 96xxx 的学生的信息。
相关知识
见第4关
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select *
from score
where tno = '052501' && grade >= 80 && grade <= 90 && sno like '96%';
/**********End**********/
第7关:where子句查询
任务描述
本关任务:求没有成绩的学生的学号和课程号。
相关知识
见之前关卡
答案
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sno, cno
from score
where grade is null;
/**********End**********/