哈罗,各位小伙伴大家好,又见面了,我还是那个不吃饱不干活的小尘,欢迎来到本期的SQL语言基础查询之细节说明部分,让我们一起进入知识的海洋吧~
上节我们讲解了SQL语言的基础查询,接下来我们需要做一些细节补充,还不知道的小伙伴可要跟紧了哦!
一、为字段起别名
上节我们说过了一些简单查询,在查询常量、表达式、函数的时候,我们会发现,最后的字段名是它本身的样子。有的时候,不太容易理解。
那我们是不是可以给它起一个别名呢?
第一种方式
使用AS
使用“ as ”关键字 + 别名
比如:
SELECT 100%98 AS 结果;
再比如,我们去查询表中的字段:
SELECT last_name AS 姓,
SELECT first_name AS 名
FROM employees;
我们可以看到,这样取别名明显提高了程序的可读性。
便于我们理解每个字段的意思。
这是起别名的第一个好处
还有一个好处,现在还体会不出来,等我们学到链接查询的时候,会发现,如果要查询的字段有重名的情况,使用别名可以区分开来。
第二种方式
使用空格
比如,上面第二个例子,可以这样来写:
SELECT last_name 姓,first_name 名 FROM employees;
注:
特殊情况
比如:
我想查询工资(salary),显示结果为 out put (别名)
那应该怎么写嘞?
SELECT salary AS out put FROM employees;
自我感觉非常良好,然后一运行:
啊啊啊啊,它竟然报错了!!!
好吧,他应该没有问题,那是什么原因?
细心地小伙伴应该发现了,我们起的别名的 out 变成了大写?
这是什么迷惑行为?
因为out是关键字啊!!!
而且别名有特殊符号,“out put”中间有个空格!!!
所以,如果我们的别名中有特殊符号,比如空格( )和井号(#)
这个时候,建议大家把别名加上双引号“ ”,加单引号' '也是可以的。
但是MySQL里面建议大家写双引号。
当然,这里加着重号也是可以的:
二、去重
现在我们想做一个案例,去查询员工表中,涉及到的所有部门编号。
显然让我们去查的是“部门编号”。
若你忘记部门编号是哪个字段了,可以去看一下:
所以这个如何查询?
SELECT department_id FROM employees;
这时候再去执行,就都出来了:
这时候我们会发现,有很多员工的部门编号是重复的!!!
那现在我们没有必要全都知道,只想知道哪些部门被用到了,这时候我们就要用到“去重” ,
即重复一遍就行了。
只需要在字段名的前面加上一个关键字“DISTINCT”。
即:
SELECT DISTINCT department_id FROM employees;
三、加号
现在我们想做一个案例,查询员工名和姓,连接成一个字段。
并显示为:姓名
正常情况下,我们应该这样写:
SELECT last_name+first_name AS 姓名 FROM employees;
我们可以看到,虽然执行没有报错,但并没有我们想要的那种情形。
这说明,这个加号和我们想的不一样!!!
我们先来回顾一下,在java中,加号的作用:
1、运算符
两个操作数都为数值型
2、连接符(拼接符)
只要有一个操作数为字符串
加号在MySQL中仅仅只有一个功能:运算符
(1)左右两边都是数值型
做加法运算!!!
比如:SELECT 100+90;
(2)其中一方为字符型
<1>有可能会试图将字符型转换为数值型
若转换成功,则继续做加法运算
比如:SELECT '123'+90;
<2>既然有转换成功的,那不就有转换失败的?
如果转换失败,则将字符型数值转换成0,再做加法运算。
比如:SELECT 'john'+90;
(3)其中一方为NULL
只要其中一方为NULL,那么结果肯定为NULL。
(4)补充
好,我们现在再回到最开始那个没有成功的拼接。
看了上面加号的作用,我们应该明白在这儿加号就不好使了。
那我们要做拼接怎么办呢?
在MySQL里面做拼接,就不应该用加号了,而是用到了一个函数:CNOCAT( )
在之后还会讲解常用函数的,在这里大家可以先看看。
当我们打出CONCAT( 的时候,会出现参数列表,发现可以有多个。
那我们先试试,简单的打几个字符看看:
我们可以看到,此时三个字符都连接上了。
当然,像这样的最好起别名。
比如我们起个别名叫“结果”。
好啦,让我们梦回春秋,再次去解决那个问题:
这时候,问题就变得豁然开朗啦!
SELECT CONCAT('last_name','first_name') AS 姓名 FROM employees;
然后我们去执行看看:
好啦,这次的分享就到这儿了。
欢迎各位路过的大佬评论留言,互相学习进步,咱们下次不见不散~