MySQL数据库 - 单表查询(二)

第1关:带 LIKE 的字符匹配查询
任务描述
本关任务:使用通配符%检索数据表中指定字段的数据。
相关知识
为了完成本关任务,你需要掌握:如何使用通配符%模糊匹配数据内容。
在前面的检所操作中,我们讲述了如何进行比较查询或者是范围查询,但如果我们想查找所有包含字符ir的内容该么办呢?用之前的方法好像行不通了。在这里,我们需要用通配符进行匹配查找。而执行匹配查找的关键字就是LIKE。
SQL语句支持很多种通配符,其中可以和LIKE一起搭配使用的就是通配符%和_了。
使用通配符%模糊匹配数据内容
百分号通配符%可以匹配任意长度的字符,甚至包括零字符。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘字符%’; 。 其中 % 的位置可以根据需要在字符间变化。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
我们将使用LIKE关键字和通配符%检索出所有商品名称带ir的商品信息。
查询代码如下:
SELECT *
FROM Mall_products
WHERE prod_name LIKE ‘%ir%’;
结果为:
在这里插入图片描述
分析:
该语句查询的结果返回所有商品的名字中间带ir字符的所有信息。通配符%告诉MySQL,返回字符串中间带ir字符的记录,不管ir前面和后面分别有多少字符。
通配符%可以放在不同的位置以满足你查询的需要,仔细想想,如果我们想要查找商品名称以B开头的所有记录,%应该放在哪里?
查询过程如下:
在这里插入图片描述
使用通配符_模糊匹配数据内容
下划线通配符_与百分号通配符%类似,也用于模糊匹配。但是区别在于下划线通配符_只能模糊匹配1个字符。如果你执意想用下划线通配符_匹配多个字符,那只能多用几个_咯!
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE 字符_; 。 其中_的位置可以根据需要在字符间变化。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
我们将使用LIKE关键字和通配符_检索出所有商品名称以r结尾,且前边有9个字母的商品信息。
查询代码如下:
SELECT *
FROM Mall_products
WHERE prod_name LIKE ‘_________r’;
结果为:
在这里插入图片描述
看到查询结果中prod_name对应的Teddy bear,大家可能注意到了,我们把空格也当成了一个字符来计算。
查询过程如下:
在这里插入图片描述
好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器Begin-End处补充代码;
我们为你新建了一个数据表tb_emp,结构如下:
在这里插入图片描述
请你查询所有Name以字母C为起始的员工的Name和Salary的内容;
测试说明
我会对你编写的代码进行测试,最终结果会如下图所示:
在这里插入图片描述
开始你的任务吧,祝你成功!
参考代码:

USE Company;
######### Begin #########
SELECT Name,Salary
FROM tb_emp
WHERE Name LIKE 'C%';
######### End #########

第2关:查询空值与去除重复结果
任务描述
本关任务:使用关键字IS NULL检索数据表中指定的字段的空值;使用关键字DISTINCT检索数据表中指定的不重复的内容。
相关知识
为了完成本关任务,你需要掌握:
1.如何使用关键字IS NULL检索数据表中的空值,
2.使用关键字DISTINCT检索数据表中不重复的内容。
查询空值
在数据表创建之初,创建者可以指定某个字段是否为空值NULL。注意了,这个NULL既不代表0,也不代表空字符,而是代表一种未知的状态,比如不适用或者放着等将来有合适数据了再添加进去。
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 IS NULL; 。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
我们将使用IS NULL关键字检索出所有prod_country字段为NULL的商品信息。
查询代码如下:
SELECT *
FROM Mall_products
WHERE prod_country IS NULL;
结果为:
在这里插入图片描述
查询过程如下:
在这里插入图片描述
可以看到,结果成功显示了prod_country字段为NULL的商品信息。与关键字IS NULL查询结果相反的是关键字IS NOT NULL,我们来看看实际操作的效果。
查询代码如下:
SELECT *
FROM Mall_products
WHERE prod_country IS NOT NULL;
结果为:
在这里插入图片描述
查询过程如下:
在这里插入图片描述
可以看到,查出来了prod_country字段的非NULL记录。
去除重复结果
有的时候,出于对数据分析的要求,分析人员需要消除数据表中重复的数据,那么如何消除呢?别担心,SQL语句也贴心的为你准备好了消除重复数据的关键字DISTINCT。
语法规则为: SELECT DISTINCT 字段名 FROM 表名; 。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
可以从表中看到,除了字段ID没有重复项,剩下的字段里都出现了重复项。
我们将使用DISTINCT关键字去除prod_name字段中的重复数据。
查询代码如下:
SELECT DISTINCT prod_name, prod_country, prod_price
FROM Mall_products;
结果为:
在这里插入图片描述
查询过程如下:
在这里插入图片描述
可以看到,使用了关键字DISTINCT后,我们返回的记录都不再有重复值。
编程要求
根据提示,在右侧编辑器Begin-End处补充代码:
我们为你新建了一个数据表tb_emp,内容如下:
在这里插入图片描述
使用关键字IS NULL返回数据表中字段DeptId为NULL的所有字段的内容,注意,返回的是指定行所有字段的内容;
使用关键字DISTINCT返回数据表中字段Name不重复的内容,注意,只需返回字段Name的内容。
测试说明
我会对你编写的代码进行测试,最终结果会如下图所示:
在这里插入图片描述
开始你的任务吧,祝你成功!
参考代码:

USE Company;
######### Begin #########
SELECT * FROM tb_emp WHERE DeptId IS NULL;
######### End #########
######### Begin #########
SELECT DISTINCT Name FROM tb_emp;
######### End #########

第3关:带 AND 与 OR 的多条件查询
任务描述
本关任务:使用关键字AND检索数据表中指定的字段的内容;使用关键字IN检索数据表中指定的字段的内容。
相关知识
为了完成本关任务,你需要掌握:
1.如何使用关键字AND检索数据表中指定的字段的内容,
2.使用关键字IN检索数据表中指定的字段的内容。
带AND关键字的多条件查询
大家在前两章使用WHERE关键字限定查询内容的时候,有没有注意到我们使用的都是单一条件查询。有没有同学曾经在检索的时候觉得力不从心:“我需要的结果只用单一条件查询是得不到的呀!”
比如,我既想要成熟苹果中直径大于5cm的苹果的品种,又想要成熟苹果果色为黄色的苹果的品种。这两个条件如何综合在一起进行检索呢?
MySQL在WHERE子句中使用AND操作符限制只有满足所有条件的查询才会被返回。可以使用AND连接两个甚至更多个查询条件,多个条件表达式之间用AND分开。
语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 AND 表达式2; 。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
我们想要查询表中哪些商品不仅商品名中带有toy字符,单价又同时大于5,并列出他们的商品信息。
查询代码如下:
SELECT *
FROM Mall_products
WHERE prod_name LIKE ‘%toy%’ AND prod_price > 5;
结果为:
在这里插入图片描述
查询过程如下:
在这里插入图片描述
分析:
在这个例子中,WHERE子句中的条件分为了两部分,AND关键字指示MySQL返回所有同时满足两个条件的内容。单独满足带toy字符后者单独满足价格大于5都得不到我们想要查询的结果。
小提示: 可以同时添加多个过滤条件,增加条件的同时只需增加一个 AND 关键字。
带OR关键字的多条件查询
与AND相反,在WHERE声明中使用OR关键字表示只需满足两个条件中的其中一个条件即可返回结果。
语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 OR 表达式2; 。
举个例子
假设我们现在有一张表Mall_products,内容如下:
在这里插入图片描述
我们想要查询表中商品ID为BNBG01或BR01的名称和单价。
查询代码如下:
SELECT ID, prod_name, prod_price
FROM Mall_products
WHERE ID = ‘BNBG01’ OR ID = ‘BR01’;
结果为:
在这里插入图片描述
查询过程如下:
在这里插入图片描述
分析:
在这个例子里,关键字OR告诉MySQL只需要满足其中一个条件就可以返回结果,恩,很幸运的是它两个条件都能满足,所以返回了所有条件的结果。这里我们如果使用关键字AND,将不会得到任何结果。
小提示: OR 可以和 AND 一起使用。但是 AND 的优先级要高于 OR 的优先级!
在这里我们不得不提到关键字IN,它能实现与OR相同的功能。
比如以下代码的功能和该例中的代码功能是一样的:
SELECT ID, prod_name, prod_price
FROM Mall_products
WHERE ID IN(‘BNBG01’, ‘BR01’);
小提示: 虽然两种写法功能一样,但是我们更推荐使用 IN 关键字。因为它不仅逻辑清晰,执行的速度也会快于 OR 关键字。更重要的是,使用 IN 关键字,我们以后可以执行更加复杂的嵌套语句。
好了,下面轮到你们来上手试试了!
编程要求
根据提示,在右侧编辑器Begin-End处补充代码:
我们为你新建了一个数据表tb_emp,内容如下:
在这里插入图片描述
结构如下:
在这里插入图片描述
使用关键字AND返回数据表中字段DeptId为301并且薪水大于3000的所有字段的内容,其中DeptId的倒数第二个字母为i的大写;
使用关键字IN返回数据表中字段DeptId为301和303的所有字段的内容。
测试说明
我会对你编写的代码进行测试,最终结果会如下图所示:
在这里插入图片描述
开始你的任务吧,祝你成功!
参考代码:

USE Company;
######### Begin #########
SELECT * FROM tb_emp WHERE DeptId=301 AND Salary>3000;
######### End #########
######### Begin #########
SELECT * FROM tb_emp WHERE DeptId=301 OR DeptId=303;
######### End #########
  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当你需要从MySQL数据库查询单个表格的数据时,你可以使用SELECT语句。SELECT语句的基本语法如下: ``` SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件; ``` 其中,列名是指要查询的表格的列,可以是一个或多个,用逗号隔开。表名是指要查询的表格的名称。WHERE子句是可选的,用于指定查询条件,可以根据需要添加。 例如,如果要查询名为"users"的表格中年龄大于等于18岁的用户的姓名和年龄,可以使用以下语句: ``` SELECT name, age FROM users WHERE age >= 18; ``` 这将返回一个包含所有符合条件的用户姓名和年龄的结果集。 ### 回答2: MySQL数据库是一种功能强大的关系型数据库管理系统,被广泛应用于各种Web应用,尤其是对于大型数据集的理。在MySQL中,单表查询是一种非常基本的操作,也是我们在日常开发中最常见的操作之一。 单表查询主要包括以下几种方式:选择数据、排序数据、分组数据、聚合数据、过滤数据等。 选择数据是指根据需单表中选择需要的数据,可以使用SELECT语句进行查询。SELECT语句的基本语法为SELECT column_name1,column_name2,...FROM table_name WHERE condition;,其中column_name表示需要查询的列名,table_name表示需要查询的表名,condition表示查询条件。例如:SELECT name,age FROM student WHERE age>=18; 排序数据是指根据某个列的值进行排序,可以使用ORDER BY语句进行排序。ORDER BY语句的基本语法为ORDER BY column_name1,column_name2,...[ASC|DESC];,其中ASC表示升序排列,DESC表示降序排列。例如:SELECT name,age FROM student WHERE age>=18 ORDER BY age DESC; 分组数据是指将相同属性值的行放在一起,可以使用GROUP BY语句进行分组。GROUP BY语句的基本语法为GROUP BY column_name1,column_name2,...;,其中column_name表示需要分组的列名。例如:SELECT COUNT(*) AS num,age FROM student WHERE age>=18 GROUP BY age; 聚合数据是指在数据集合上进行特定的计算,可以使用聚合函数进行计算。常见的聚合函数包括COUNT、SUM、AVG、MAX、MIN等。例如:SELECT COUNT(*) AS num FROM student WHERE age>=18; 过滤数据是指根据某个条件从单表中筛选出需要的数据,可以使用WHERE语句进行过滤。WHERE语句的基本语法为WHERE condition;,其中condition表示筛选条件。例如:SELECT name,age FROM student WHERE age>=18 AND gender='男'; 除了以上基础查询方式,MySQL还提供了更多高级查询方式和函数,包括多表查询、子查询、连接查询、索引等,可以根据具体需进行使用。 的来说,单表查询MySQL中最基础、最常见的查询操作之一。掌握了单表查询的基本语法和常用函数,可以让我们更高效地从单表查询理数据,提高我们的开发效率。 ### 回答3: MySQL是一种关系型数据库管理系统,它可以执行各种数据库操作,包括单表查询。在单表查询中,我们可以通过使用MySQL中的SELECT语句查询单个表格中的数据。在MySQL中,我们可以使用SELECT语句来实现以下操作: 1. 查询所有记录:我们可以使用SELECT * FROM table_name;语句来查询一个表中的所有记录。这将返回一个包含所有记录的结果集。 2. 查询指定列:如果我们只需要查询一部分列,可以使用SELECT column1, column2 FROM table_name;语句来查询指定列。这个语句将只返回包含指定列的结果集。 3. 条件查询:我们可以使用WHERE子句来限制SQL语句只查询符合条件的记录。例如,SELECT column1, column2 FROM table_name WHERE condition;。 4. 排序:我们可以使用ORDER BY子句对查询结果进行排序。例如,SELECT column1, column2 FROM table_name ORDER BY column1 ASC;将按升序排列列1的值。 5. 分组:我们可以使用GROUP BY子句将结果集按照指定列进行分组。例如,SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;将结果集按照列1进行分组,并计算每组中列2的计数。 6. 连接查询:如果我们需要在多个表格之间进行查询,可以使用JOIN子句将多个表格进行关联。例如,SELECT column1, column2 FROM table_name1 JOIN table_name2 ON table_name1.column1 = table_name2.column1;将使用列1将表格1和表格2进行关联,并将所有匹配的记录返回给结果集。 7. 子查询:我们可以在另一个查询的WHERE子句中使用子查询来执行条件查询。例如,SELECT column1, column2 FROM table_name1 WHERE column1 IN (SELECT column1 FROM table_name2 WHERE condition);将在一个表格中搜索具有满足条件的列1的所有记录。 综上所述,MySQL数据库提供了多种灵活的单表查询功能,可以帮助我们快速高效地查询数据库中的数据。我们可以根据自己的需选择并组合这些功能实现各种复杂的查询任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值