哈罗,各位小伙伴大家好,又见面了,我还是那个不吃饱不干活的小尘,欢迎来到本期的SQL语言基础查询之细节说明部分,让我们一起进入知识的海洋吧~  

上节我们讲解了SQL语言的基础查询,接下来我们需要做一些细节补充,还不知道的小伙伴可要跟紧了哦!

一、为字段起别名

上节我们说过了一些简单查询,在查询常量、表达式、函数的时候,我们会发现,最后的字段名是它本身的样子。有的时候,不太容易理解。

mysql给查询结果取别名 sql查询结果起别名_MySQL

那我们是不是可以给它起一个别名呢?

第一种方式

使用AS

使用“ as ”关键字   +   别名

比如:

SELECT 100%98 AS 结果;

mysql给查询结果取别名 sql查询结果起别名_数据库_02

再比如,我们去查询表中的字段:

SELECT last_name AS 姓,

SELECT first_name AS 名

FROM employees;

mysql给查询结果取别名 sql查询结果起别名_sql_03

我们可以看到,这样取别名明显提高了程序的可读性。

便于我们理解每个字段的意思。

这是起别名的第一个好处

还有一个好处,现在还体会不出来,等我们学到链接查询的时候,会发现,如果要查询的字段有重名的情况,使用别名可以区分开来。 

第二种方式

使用空格

比如,上面第二个例子,可以这样来写:

SELECT last_name 姓,first_name 名 FROM employees;

mysql给查询结果取别名 sql查询结果起别名_MySQL_04

注:

特殊情况

 比如:

我想查询工资(salary),显示结果为 out put (别名)

那应该怎么写嘞?

SELECT salary AS out put FROM employees;

自我感觉非常良好,然后一运行:

mysql给查询结果取别名 sql查询结果起别名_sql_05

啊啊啊啊,它竟然报错了!!! 

好吧,他应该没有问题,那是什么原因?

细心地小伙伴应该发现了,我们起的别名的 out 变成了大写?

这是什么迷惑行为?

因为out是关键字啊!!!

而且别名有特殊符号,“out put”中间有个空格!!!

所以,如果我们的别名中有特殊符号,比如空格( )和井号(#)

这个时候,建议大家把别名加上双引号“ ”,单引号' '也是可以的。

但是MySQL里面建议大家写双引号。

mysql给查询结果取别名 sql查询结果起别名_sql_06

当然,这里加着重号也是可以的:

mysql给查询结果取别名 sql查询结果起别名_sql_07

二、去重

 现在我们想做一个案例,去查询员工表中,涉及到的所有部门编号。

显然让我们去查的是“部门编号”。

若你忘记部门编号是哪个字段了,可以去看一下:

mysql给查询结果取别名 sql查询结果起别名_数据库_08

所以这个如何查询?

SELECT department_id FROM employees; 

这时候再去执行,就都出来了:

mysql给查询结果取别名 sql查询结果起别名_字段_09

这时候我们会发现,有很多员工的部门编号是重复的!!! 

mysql给查询结果取别名 sql查询结果起别名_mysql给查询结果取别名_10

那现在我们没有必要全都知道,只想知道哪些部门被用到了,这时候我们就要用到“去重” ,

即重复一遍就行了。

只需要在字段名的前面加上一个关键字“DISTINCT”。

即:

SELECT DISTINCT  department_id FROM employees;

mysql给查询结果取别名 sql查询结果起别名_字段_11

三、加号 

现在我们想做一个案例,查询员工名和姓,连接成一个字段。

并显示为:姓名

正常情况下,我们应该这样写:

SELECT last_name+first_name AS 姓名 FROM employees;

mysql给查询结果取别名 sql查询结果起别名_sql_12

 我们可以看到,虽然执行没有报错,但并没有我们想要的那种情形。

这说明,这个加号和我们想的不一样!!!

我们先来回顾一下,在java中,加号的作用:

1、运算符

两个操作数都为数值型

2、连接符(拼接符)

只要有一个操作数为字符串

加号在MySQL中仅仅只有一个功能:运算符

(1)左右两边都是数值型

做加法运算!!!

比如:SELECT 100+90;

 

mysql给查询结果取别名 sql查询结果起别名_字段_13

(2)其中一方为字符型

 <1>有可能会试图将字符型转换为数值型

若转换成功,则继续做加法运算

比如:SELECT '123'+90;

mysql给查询结果取别名 sql查询结果起别名_数据库_14

<2>既然有转换成功的,那不就有转换失败的?

如果转换失败,则将字符型数值转换成0,再做加法运算。

比如:SELECT 'john'+90; 

mysql给查询结果取别名 sql查询结果起别名_mysql给查询结果取别名_15

(3)其中一方为NULL

只要其中一方为NULL,那么结果肯定为NULL。

mysql给查询结果取别名 sql查询结果起别名_MySQL_16

(4)补充

好,我们现在再回到最开始那个没有成功的拼接。

看了上面加号的作用,我们应该明白在这儿加号就不好使了。

那我们要做拼接怎么办呢?

在MySQL里面做拼接,就不应该用加号了,而是用到了一个函数:CNOCAT( )

 在之后还会讲解常用函数的,在这里大家可以先看看。

当我们打出CONCAT(  的时候,会出现参数列表,发现可以有多个。

mysql给查询结果取别名 sql查询结果起别名_sql_17

 

那我们先试试,简单的打几个字符看看:

我们可以看到,此时三个字符都连接上了。 

mysql给查询结果取别名 sql查询结果起别名_MySQL_18

 当然,像这样的最好起别名。

比如我们起个别名叫“结果”。

mysql给查询结果取别名 sql查询结果起别名_MySQL_19

好啦,让我们梦回春秋,再次去解决那个问题:

这时候,问题就变得豁然开朗啦!

SELECT CONCAT('last_name','first_name') AS 姓名 FROM employees;

然后我们去执行看看:

mysql给查询结果取别名 sql查询结果起别名_sql_20

 

好啦,这次的分享就到这儿了。

欢迎各位路过的大佬评论留言,互相学习进步,咱们下次不见不散~

mysql给查询结果取别名 sql查询结果起别名_数据库_21