10.简单查询

数据查询是我们工作中必须掌握的技能,这里我们首先给大家介绍一下如何来查询单张表内容,这是我们查询操作的基础,希望大家认真对待。

查询基础

如何来查询一张数据表中的内容呢?我们可以按照如下的语法格式来查询:

SELECT 列名 [AS] [别名] , 列名 [AS] [别名] FROM 表名;

在这里,我们先不给大家解释什么是别名,我们省略掉别名相关的内容,直接查询user表中的username、password两个列的内容,具体执行情况如下所示:

大家可以看到,执行这条命令我们查询出来用户表中所有的用户名和用户密码,这时候,我们希望查询显示的结果的第一行不是所查询的列名,而是我们指定的内容,如何实现呢?这时候我们就可以用别名来实现这个操作,具体执行如下:

大家可以看到,这个查询结果显示的非常清晰,大家可以看到具体每个列的数据代表的含义,这就是别名的用处,当然在这里我们也可以省略掉AS关键字,直接在查询的列名后边设置别名就好,如下所示:

在这里,我们需要注意一个问题,在查询的时候指定别名的话,可能遇到的情况是别名中间有空格,比如在上边的例子中,我们想要让“用户密码”这个别名以“用户 别名”来显示,这时候如果你仍然按照我们上边的方法来执行的话是会出现错误的,这时候我们可以为这个别名添加一个引号包括起来,如下所示:

这样就可以实现这个目的了,在开发中这是一个比较容易忽略的地方,所以对于这点在这里给大家列举出来,希望大家多多注意。

好的,到这里为止,和最简单的查询方法相对应的内容已经给大家介绍完了,不过有两点还需要向大家说明一下。

首先,我们可以按照SELECT * FROM表名的方法来查询数据表中所有的内容,非常方便,但是这种方法需要系统内部做相应的处理,所以查询方面花费的时间会比较长一点,所以并不建议大家使用。

第二点,在查询的结果中是可能存在重复的数据的,比如在我们的user表中可能存在多个相同名称的用户,这时候我们可以使用distinct关键字来去除重复的项,但是在实际开发过程中,这种方式也不建议大家使用,因为它去除重复项针对的全部查询的列,这里我们不妨来看下如下这个例子:

大家可以看到,在我们第一次查询的时候,大家可以看到在user表中有两个相同名称的用户 李四,,在第二次查询的时候我们使用distinct关键字,大家可以看到查询出来的用户只有一个 李四了,最后我们同时查询了用户名和密码,大家可以看到,两个相同名称、密码不同的用户同时显示出来,这就是distinct关键字在应用中实际的效果,并不是很好,所以不建议大家使用。对于如上两点内容,虽然在开发中并不建议大家使用,但是作为一个技术人员来说,我们必须知道为什么不被建议使用。

数据过滤

通过上一节的学习,大家已经可以查询数据表的内容了,但是我们查询的是数据表中指定的内容,是否有一些方法可以让我们只查询数据表中某一条或者某些行的内容呢?答案当然是肯定的,主要需要在查询语句的后边添加一个WHERE关键字来实现,具体的方法如下:

SELECT 列名 [AS] [别名] , 列名 [AS] [别名] FROM 表名 WHERE 条件;

下边我们就通过这个命令来查询下user表中username值为 张三 的用户信息,具体执行情况如下所示:

多条件

通过刚才的演示,大家已经掌握了如何来设置查询条件,但是刚才给大家介绍的这种方法,我们只能在查询语句中设置一个查询条件,在实际开发中我们可能需要设置多个查询条件,如何来实现这种操作呢?这时候我们需要用到AND或者OR关键字来拼接查询条件,首先,我们来看下使用AND拼接条件的话,查询结果有什么特点,我们在用户表中有两条用户名为李四的用户信息,这里我们查询用户名为李四,密码为123456的用户信息,执行情况如下:

大家可以看到,使用AND关键字,我们拼接了两个条件,然后过滤掉了用户密码和我们需要的不匹配的用户李四,那么如果相同的语句使用OR关键字的话,得到的结果有什么不同呢?如下是具体的执行情况:

大家可以看到,它将用户名为李四以及用户密码为123456的用户全部呈现出来,这就是AND和OR关键字的使用,其中AND关键字表示多个条件并列成立的情况,OR关键字表示只要符合设置其中一个条件就显示对应的数据。

操作符

前边我们学习了设置查询条件的方法,但是我们都是采用的等值判断的形式,在实际工作中并不只有等值的情况才可以设置查询条件,比如我们可以设置不等、大于、小于,类似这种情况如何实现呢?主要是通过如下操作符来实现的:

在这里我们以查询user表中用户名不是李四的用户名、密码为例,给大家做相应的演示,具体执行情况如下:

大家可以看到,我们利用 不等于的操作符就可以查询出用户表中不是 李四 的用户信息,这就是操作符的妙用,大家也可以多做一些假设,来练习下关于这些操作符的使用。

Null和空字符串

到这里为止,和查询条件设置相关的内容已经给大家介绍的差不多了,但是这里存在最后一个问题,就是关于NULL值和空字符串的比较,这是一个我们最容易产生错误的地方,接下来我们就来针对它们给大家做相应的解释。

首先,我们需要明白,NULL值表示的是什么也没有,而空字符串表示的是存在在这条数据中的这一列内容是一个空字符串,也就是说这两者并不是相同的概念,这点我们必须牢记于心,千万不要认为它们是相同的概念,这里我们不妨来看一下在数据库中这两个值查询出来的结果是什么样子?

大家可以看到,名为王五的用户生日存储的是空字符串,而马六的用户没有存储任何内容,所以查询出来的结果是NULL。针对这两种情况,如果我们想要查询出用户表中用户生日为空字符串的用户信息,我们需要按照如下方法来实现:

而我们要查询出用户表中用户生日为NULL的用户信息,我们则需要按照如下方法执行:

大家注意,在这里我们查询列值为NULL的情况,使用的是IS NULL而不是等号,这就是我们判断列值是否为NULL的时候最容易忽视的地方,千万不要使用等号来判断,同时可以告诉大家,如果我们想要查询出数据表中列值不是NULL的情况,我们可以按照如下方法执行:

好的,到这里为止,我们已经掌握了单表查询的所有内容,也给大家总结了一些在工作中最容易出现错误的地方,希望大家可以设置一些场景自由练习,当然如果遇到问题的话,也可以通过公众号或者交流群和我联系。

PS:关于数据表简单查询相关的操作到这里为止已经为大家介绍完了,下一次我们将为大家介绍分组和排序查询相关的操作。如果您感觉这些内容对您的学习或者工作有所帮助的话,欢迎转发给您周围的同事或者朋友,感谢您的支持和帮助。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181213G09JTX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券