MySQL速学篇第三课

一、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条数据;

今天就先讲到这里吧!

原文地址:https://www.cnblogs.com/cynthia006/p/6925214.html