一、UNION ALL
UNION ALL指令的目的也是将每一笔符合条件的资料都列出来,无论资料有无重复,语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2];
例句:
select name, number from s_info
union all
select name, number from t_info
order by number
二、INTERSECT
和UNION指令类似,INTERSECT也是对两个SQL语句所产生的结果做处理的,不同的地方是,UNION基本上上一个OR(如果这个值存在第一句或是第二句,它就会被选出),而
INTERSECT则比较像AND(这个值要存在于第一句和第二句才会被选出),前者是并集,后者是交集,INTERSECT语法为
[SQL语句 1]
INTERSECT
[SQL语句 2];
很遗憾,mysql并不支持INTERSECT和MINUS函数,但是我们可以用 INNER JOIN 来达到目的;
INNER JOIN三张表语法:
SELECT * FROM (表1 INNER JOIN 表2 on 表1.字段号=表2.字段号 )
INNER JOIN 表3 on 表1.字段号=表3.字段号
三、CONCAT
有时候,我们有需要将不同栏位获得的资料串连在一起,每一种资料库都有提供方法来达到这个目的:
1、MySQL:CONCAT()
2、Oracle:CONCAT(),||
3、SQL Server *
CONCAT()语法如下:
CONCAT(字串1,字串2,字串3...)
将字段1,字段2,字段3等串连在一起,请注意,Oracle只允许两个参数,即只能将两个字串串连起来,不过可以用||来串连多个字段;
来看几个例子。我们要将表t_info中name和number字段结合在一起,用新的字段newname表示
select concat (name,number) as newname from t_info;
四、substring
该函数用语从文本字段中提取字符;
SQL中该函数是用来抓出一个栏位资料中的其中一部分,这个函数的名称在不同的资料库中用法不完全一样:
1、MySQL:SUBSTR(),SUBSTRING()
2、Oracle:SUBSTR()
3、SQL Server:SUBSTRING()
最常用到的方式如下 (在这里我们用 SUBSTR( ) 为例):
SUBSTR (str, pos)
由 <str> 中,选出所有从第 <pos> 位置开始的字元。请注意,这个语法不适用于 SQL Server 上。
SUBSTR (str, pos, len)
由 <str> 中的第 <pos> 位置开始,选出接下去的 <len> 个字元。
例如:
查询表t_info中number信息,不显示第一位字符
select name ,number ,substr(number,2)as num from t_info
用select name ,number ,substr(number,2,3)as num from t_info也可以达到同样效果
五、TRIM
SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:
-
MySQL: TRIM( ), RTRIM( ), LTRIM( )
-
Oracle: RTRIM( ), LTRIM( )
-
SQL Server: RTRIM( ), LTRIM( )
各种 trim 函数的语法如下:
TRIM ( [ [位置] [要移除的字串] FROM ] 字串): [位置] 的可能值为 LEADING (起头), TRAILING (结尾), or BOTH (起头及结尾)。 这个函数将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。
LTRIM(字串): 将所有字串起头的空白移除。
RTRIM(字串): 将所有字串结尾的空白移除。
当录入的number信息存在空格时(如下图红框),有可能是左边,有可能是右边,有可能是中间,我们用trim()可以去掉左右两边的空格(但是不能去除中间的)
select name,number, trim(number) from t_info
另注:limit 0,10
#表示只获取10条数据;
今天就先讲到这里吧!