SQL备忘录

xiaoxiao2022-08-12  83

SQL备忘录:

SQL 函数   AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合) 

 

UNION 指令的目的是将两个 SQL 语句的结果合并起来。

 

UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。

UNION ALLUNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。 和 UNION 指令类似,

INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTERSECT 则比较像 AND ( 这个值要存在于第一句和第二句才会被选出)。 UNION 是联集,而 INTERSECT 是交集

MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。

 

而我们要找出哪几天有店面交易和网络交易。要达到这个目的,我们用以下的 SQL 语句:

假设我们有以下的两个表格,

 

Store_Information 表格

store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1999

 

Internet Sales 表格 Date Sales Jan-07-1999 $250 Jan-10-1999 $535 Jan-11-1999 $320 Jan-12-1999 $750

 

 

SELECT Date FROM Store_InformationINTERSECTSELECT Date FROM Internet_Sales

结果:

 

DateJan-07-1999

 

请注意,在 INTERSECT 指令下,不同的值只会被列出一次。

 

而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:

SELECT Date FROM Store_InformationMINUSSELECT Date FROM Internet_Sales

结果:

 

DateJan-05-1999Jan-08-1999

 

 

有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:

MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: +

CONCAT() 的语法如下:

CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。

来看几个例子。假设我们有以下的表格:

Geography 表格

region_namestore_nameEastBostonEastNew YorkWestLos AngelesWestSan Diego

 

例子1:

MySQL/Oracle: SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';

结果:

'EastBoston'

例子2:

Oracle: SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston';

结果:

'East Boston'

例子3:

SQL Server: SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston';

结果:

'East Boston'

 

SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:

MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING()

最常用到的方式如下 (在这里我们用SUBSTR()为例):

SUBSTR(str,pos): 由<str>中,选出所有从第<pos>位置开始的字元。请注意,这个语法不适用于SQL Server上。

SUBSTR(str,pos,len): 由<str>中的第<pos>位置开始,选出接下去的<len>个字元。

假设我们有以下的表格:

Geography 表格

region_namestore_nameEastBostonEastNew YorkWestLos AngelesWestSan Diego

 

例1:

SELECT SUBSTR(store_name, 3) FROM Geography WHERE store_name = 'Los Angeles';

结果:

's Angeles'

例2:

SELECT SUBSTR(store_name,2,4) FROM Geography WHERE store_name = 'San Diego';

结果:

'an D'

 

 

LIKE 是另一个在 WHERE 子句中会用到的指令。基本上,LIKE 能让我们依据一个套式 (pattern) 来找出我们要的资料。相对来说,在运用 IN 的时候,我们完全地知道我们需要的条件;在运用 BETWEEN 的时候,我们则是列出一个范围。 LIKE 的语法如下:

SELECT "栏位名" FROM "表格名" WHERE "栏位名" LIKE {套式}

{套式} 经常包括野卡 (wildcard). 以下是几个例子:

 

'A_Z': 所有以 'A' 起头,另一个任何值的字原,且以 'Z' 为结尾的字串。 'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。

 

'ABC%': 所有以 'ABC' 起头的字串。举例来说,'ABCD' 和 'ABCABC' 都符合这个套式。

 

'%XYZ': 所有以 'XYZ' 结尾的字串。举例来说,'WXYZ' 和 'ZZXYZ' 都符合这个套式。

 

'%AN%': 所有含有 'AN' 这个套式的字串。举例来说, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个套式。

我们将以上最后一个例子用在我们的 Store_Information 表格上:

Store_Information 表格

store_name Sales Date LOS ANGELES $1500 Jan-05-1999 SAN DIEGO $250 Jan-07-1999 SAN FRANCISCO $300 Jan-08-1999 BOSTON $700 Jan-08-1999

 

我們就打入,

SELECT * FROM Store_Information WHERE store_name LIKE '%AN%'

 

 

 

相关资源:vc++ SqlServer 公司备忘录系统
转载请注明原文地址: https://www.6miu.com/read-4974467.html

最新回复(0)