单表查询(一)student表查询

第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**********/


  • 50
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值