SQL 知识量:22 - 44 - 129
拼接字段就是在查询中将不同的列数据联结到一起,成为单个字段。
例如:查询学生姓名和年龄,并用一句话来表述。
select concat(name,' is ',age,' years old.') from student;
结果:
+---------------------------------------+ | concat(name,' is ',age,' years old.') | +---------------------------------------+ | Susan is 11 years old. | | Jame is 12 years old. | | Bob is 11 years old. | | Robot is 10 years old. | | Jen is 11 years old. | | Toney is 10 years old. | | Jack is 13 years old. | | Alice is 10 years old. | | Bonnie is 11 years old. | | Ella is 12 years old. | +---------------------------------------+
如上所示,当使用MySQL进行这个查询时,使用concat()函数进行拼接。
如果使用Access和SQL Server时,应当使用“+”进行拼接,SQL语句为:
select name+' is '+age+' years old.' from student;
如果使用DB2、Oracle、SQLite等时,应当使用“||”进行拼接,SQL语句为:
select name||' is '||age||' years old.' from student;
如果结果中存在多余的空格,可以使用rtrim()、ltrim()和trim()函数去除这些空格。
从上面的拼接字段查询结果可以看到,查询的结果列名是concat(name,' is ',age,' years old.'),也就是SQL语句的查询字段部分,也就是说,查询结果其实没有名字,它只是一个值而已。问题是,一个未命名的列是不能被客户端应用程序引用的,需要给拼接的字段起一个名字。
为了解决这个命名问题,SQL使用as关键字给指定的列设置别名。别名就是一个字段或值的替换名。
例如:查询学生姓名和年龄,并用一句话来表述,将结果列命名为introduce。
select concat(name,' is ',age,' years old.') as introduce from student;
结果:
+-------------------------+ | introduce | +-------------------------+ | Susan is 11 years old. | | Jame is 12 years old. | | Bob is 11 years old. | | Robot is 10 years old. | | Jen is 11 years old. | | Toney is 10 years old. | | Jack is 13 years old. | | Alice is 10 years old. | | Bonnie is 11 years old. | | Ella is 12 years old. | +-------------------------+
这样,客户端应用程序就可以使用introduce来引用这个拼接字段了,就像真的查询了一个叫introduce的表列一样。
注意:
在多数DBMS中,as关键字是可选的,但是最好总是使用它。
别名除了给未命名列命名外,还可以替换任何正常列名,包括替换不合法的字符(如空格)。
别名可以是一个字符串,如果是字符串,记得在命名时使用引号括起来。因为客户端应用程序引用问题,最好不要使用字符串,简单的单词更合适。
别名有时也称为导出列。
算术计算是计算字段另一种常见的用途。
例如:查询学生姓名和5年之后的年龄。
select name,age+5 as after5years from student;
结果:
+--------+-------------+ | name | after5years | +--------+-------------+ | Susan | 16 | | Jame | 17 | | Bob | 16 | | Robot | 15 | | Jen | 16 | | Toney | 15 | | Jack | 18 | | Alice | 15 | | Bonnie | 16 | | Ella | 17 | +--------+-------------+
以上只是一个简单的加法计算,实际上,SQL支持常见的加、减、乘、除计算,分别使用“+”、“-”、“*”、“/”来表示。
select语句通常用于查询数据,如果省略掉from子句后,select语句就可以用于简单的访问和处理表达式了。
例如:计算6*365的结果:
select 6*365;
结果:
+-------+ | 6*365 | +-------+ | 2190 | +-------+
例如:查看当前DBMS的时间:
select now();
结果:
+---------------------+ | now() | +---------------------+ | 2018-05-22 19:29:57 | +---------------------+
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6