SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()
最常用到的方式如下 ( 在这里我们用SUBSTR()为例):
SUBSTR(str,pos): 由中,选出所有从第位置开始的字元。请注意,这个语法不适用于SQL Server 上。
SUBSTR(str,pos,len) : 由中的第位置开始,选出接下去的个字元。
在MySQL目录中的文章:
SQL入门教程(21) Concatenate
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, …): 将字串1 、字串2 、字串3 ,等字串连在一起。请注意,Oracle
的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle 中,我们可以用’||’来一次串连多个字串。
SQL入门教程(20) MINUS
MINUS 指令是运用在两个SQL 语句上。它先找出第一个SQL 语句所产生的结果,然后看这些结果有没有在第二个SQL
语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个SQL 语句所产生的结果并没有存在于第一个SQL
语句所产生的结果内,那这笔资料就被抛弃。
MINUS 的语法如下:
SQL入门教程(19) INTERSECT
和UNION 指令类似,INTERSECT 也是对两个SQL 语句所产生的结果做处理的。不同的地方是,UNION基本上是一个OR
(如果这个值存在于第一句或是第二句,它就会被选出),而INTERSECT 则比较像AND( 这个值要存在于第一句和第二句才会被选出)。
UNION 是联集,而INTERSECT 是交集。
INTERSECT 的语法如下:
SQL入门教程(18) UNION ALL
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。
UNION ALL 的语法如下:
[SQL 语句 1] UNION ALL [SQL 语句 2]
SQL入门教程(17) UNION
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN
有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL
语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION 这个指令时,我们只会看到不同的资料值 ( 类似 SELECT
DISTINCT) 。
UNION 的语法如下:
SQL入门教程(16) Subquery
我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 WHERE 子句或 HAVING子句中插入另一个
SQL 语句时,我们就有一个 subquery 的架构。 Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候
subquery 是唯一能够连接两个表格的方式。
Subquery 的语法如下:
SQL入门教程(15) 外部连接
之前我们看到的左连接 (left join) ,又称内部连接 (inner
join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没
有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。
SQL入门教程(14) 连接
现在我们介绍连接(join)的概念。要了解连接,我们需要用到许多我们之前已介绍过的指令。我们先假设我们有以下的两个表格
SQL入门教程(13) ALIAS
接下来,我们讨论 alias ( 别名) 在 SQL 上的用处。最常用到的别名有两种:
栏位别名及表格别名。简单地来说,栏位别名的目的是为了让 SQL 产生的结果易读。在之前的例子中, 每当我们有营业额总合时,栏位名都是
SUM(sales)。虽然在这个情况下没有什么问题,可是如果这个栏位不是一个简单的总合,而是一个复杂的计算,那栏位名就没有这么易懂了。若我们用栏
位别名的话,就可以确认结果中的栏位名是简单易懂的。
第二种别名是表格别名。要给一个表格取一个别名,只要在 FROM 子句中的表格名后空一格,然后再列出要用的表格别名就可以了。这在我们要用 SQL 由数个不同的表格中获取资料时是很方便的。这一点我们在之后谈到连接 (join) 时会看到。
我们先来看一下栏位别名和表格别名的语法: