单表查询(一)
数据查询是数据库操作中使用做多,最重要的内容。为什么这么说呢?因为我们不仅仅要对数据进行存储,我们还要时不时的把不同的信息“翻出来”为我们所用。MySQL
为我们提供了功能强大的语句来实现这些操作。
文章主要介绍如何使用SELECT
语句查询数据表中的如何使用SELECT
语句查询数据表中的一列或多列数据、使用SELECT
语句和关键字进行范围查询。
基本查询语句
任务描述
- 用
SELECT
语句检索数据表中指定字段的数据; - 用
SELECT
语句检索数据表中所有字段的数据。
相关知识
为了完成本关任务,你需要掌握:
1.如何获取数据表中指定字段的数据;
2.如何获取数据表中的所有数据。
查询数据表中指定字段的内容
MySQL
从数据表中查询数据的基本语句为SELECT
语句。
SELECT
语句的可选参数比较多,让我们先从最简单的开始,带大家一步一步的深入SELECT
语句的使用。
SELECT 基本语法规则为: SELECT 字段名 FROM 表名;
。
举个例子
假设我们现在有一张表Mall_products
,内容如下:
我们需要从数据表中查询所有商品的名称,你们想想该怎么写?
查询代码如下:
1 |
|
结果为:
查询过程如下:
分析:
在该例子中,我们使用了SELECT
语句从Mall_products
表中获取名称为prod_name
字段下的所有产品名称,字段名称需要紧跟在SELECT
关键字之后。
然而事实上,我们查询数据的时候,往往需要同时查询多个字段
下的内容。这时,我们只需要在字段之间
加入逗号,
即可。
语法规则为: SELECT 字段名1, 字段名2 FROM 表名;
。
举个例子
假设我们现在有一张表Mall_products
,内容与上例相同。我们需要从数据表中查询所有商品的名称和价格,你们想想该怎么写?
查询代码如下:
1 |
|
结果为:
小提示: MySQL
中的 SQL
语句对关键字的大小写不敏感, SELECT
和 select
是一样的。 但是许多开发者更喜欢将关键字大写,表名和字段名使用小写,养成这种习惯,以后写出来的脚本就更容易阅读和维护了。
查询数据表中的所有内容
如果我们不记得字段名字了,我们还可以查看整张表的内容。这时候,只需要我们用星号*
来代替字段的名字,就会得到一整张表的内容。
语法规则为: SELECT * FROM 表名;
举个例子
假设我们现在有一张表Mall_products
。一开始我们并不知道表里都有什么,所以想要查看整张数据表的内容,你们想想该怎么写?
查询代码如下:
1 |
|
结果为:
小提示: 虽然使用星号 *
看起来是一件很方便的事情,但是建议大家在不想获取整张表的情况下,还是使用字段名来进行查询。因为很显然,它会降低查询的效率。
好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码:
我们为你新建了一个数据表tb_emp
,结构如下:
- 请你查询字段
Name
和Salary
的内容; - 请你查询整张表的内容。
测试说明
我会对你编写的代码进行测试,若与预期输出一致则算通关。
我的代码
1 |
|
带 IN 关键字的查询
任务描述
本关任务:使用IN
关键字检索数据表中指定的数据内容。
相关知识
为了完成本关任务,你需要掌握:如何使用关键字IN
提取数据表中的指定数据内容。
带IN
关键字的查询
IN
关键字被用在WHERE语句的后边,用来过滤你所需要查询的内容。更形象的说,IN
关键字的使用情形就像点名,点到谁谁就要站出来。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 IN (n1,n2,n3,...);
。
其中,括号内的数字必须为INT格式的数字。被“点到名”的这些括号里数字对应的内容,都要乖乖的站到前边来展示给大家看。
举个例子
假设我们现在有一张表Mall_products
,内容如下:
我们会使用IN
关键字检索出所有国家代码为1
、86
和39
的商品信息。
查询代码如下:
1 |
|
结果为:
查询过程如下:
Oopes! 貌似我们刚才输入了三个数字,为什么只查询到了国家代码为1
和39
的数据内容,87
去哪里了?
因为国家代号87
的内容就压根没存在过啊,仔细看看表Mall_products
就知道了。
带NOT IN
关键字的查询
聪明的小伙伴一看NOT
就知道了,我们是要取反了。刚才我们是在查询括号中出现的内容,加了NOT
取反后,就意味着,我们要查询的是除了括号中出现内容外的所有内容。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 NOT IN (n1,n2,n3,...);
。
举个例子
我们还使用刚才的表Mall_products
。现在我们想要查询除了国家代码为86
的所有国家的产品内容。
查询代码如下:
1 |
|
结果为:
好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码:
我们为你新建了一个数据表tb_emp
,结构如下:
- 请你查询当
Id
不等于1
时,字段Name
和Salary
的内容;
测试说明
我会对你编写的代码进行测试,最终结果会如下图所示:
我的代码
1 |
|
带 BETWEEN AND 的范围查询
任务描述
本关任务:使用BETWEEN AND关键字检索数据表中指定的数据内容。
相关知识
为了完成本关任务,你需要掌握:如何使用关键字BETWEEN AND
提取数据表中的指定数据内容。
带BETWEEN AND
关键字的查询
我们已经学会了如何用IN
关键字精确查询数据表中的内容,但是在很多时候,我们仅仅是想知道在某一范围内有多少符合条件的数据,这就不得不使用到关键字BETWEEN AND
了。
BETWEEN AND
需要两个参数支持,一个是范围的开始值,另一个就是结束值了。如果字段值满足指定的范围查询条件,就返回这些满足条件的数据内容。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN n1 AND n2;
。
举个例子
假设我们现在有一张表Mall_products
,内容如下:
我们将使用BETWEEN AND
关键字检索出所有国家代码为1~50
的商品的信息。
查询代码如下:
1 |
|
结果为:
查询过程如下:
可以看到,返回结果包含了国家代码从1~50之
间的字段值。尤其值得注意的是,端点值1
也包含在返回结果中。
带NOT BETWEEN AND
关键字的查询
像上一关介绍的关键字IN
一样,我们还可以对关键字BETWEEN AND
进行取反,表示查询指定范围之外的值。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 NOT BETWEEN n1 AND n2;
。
举个例子
我们依然使用表Mall_products。现在我们想要查询除了国家代码为1~50的所有国家的产品内容。
查询代码如下:
1 |
|
结果为:
由结果可以看出,返回的结果只有大于国家代码50
的内容。
怎么样?简单吧!好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码:
我们为你新建了一个数据表tb_emp
,结构如下:
- 请你查询当字段
Salary
范围在3000~5000
时,字段Name
和Salary
的内容。
测试说明
我会对你编写的代码进行测试,最终结果会如下图所示:
我的代码
1 |
|