sql特殊写法记录

一、集合的并、交、差

(select 查询语句1) UNION 【ALL】 (select 查询语句2)

(select 查询语句1) INTERSECT 【ALL】 (select 查询语句2)

(select 查询语句1) EXCEPT 【ALL】 (select 查询语句2)

上述操作中不带关键字ALL时,返回结果消除了重复元组,而带ALL时,返回结果中为消除重复元组

二、字符串的匹配操作

条件表达式中字符串匹配操作符是“LIKE”。在表达式中可使用两个通配符:

百分号(%):与零个或多个字符组成的字符串匹配

下划线(_):与单个字符匹配

为了使字符串中暴汗特殊字符(即%和_),SQL允许定义转义字符。转义字符紧靠特殊字符并放在它面前,表示该特殊字符将被当成普通字符。在LIKE比较重使用 ESCAPE关键字来定义转义符。如果使用反斜线(\)作为转义符,那么:

LIKE ‘ab\%cd%’ ESCAPE '\'      匹配所有以“ab%cd”开头的字符串

LIKE 'ab\\cd%' ESCAPE '\'  匹配所有以“ab\cd”开头的字符串

三、集合成员的算术比较

形式如下:

SELECT * FROM S WHERE id = SOME(SELECT SCORE FROM SC WHERE id='123');

ALL操作表示左边那个元组与左边集合中的每一个元组满足“=”运算

SOME操作表示左边那个元组与右边集合中至少一个元组满足“=”运算

ANY与SOME同义

四、WITH子句和临时视图

SQL3允许用户用WITH子句定义一个临时视图(即子查询),置于SELECT语句的开始处。例:

with
cte1 as
(
select * from table1 where name like 'abc%'
),
cte2 as
(
select * from table2 where id > 20
),
cte3 as
(
select * from table3 where price < 100
)
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id

五、INSERT

(1)单元组的插入

     INSERT INTO [(<列名序列>)] VALUES(<元组值>)

(2)多元组的插入

    INSERT INTO [(<列名序列>)] VALUES(<元组值>),(<元组值>),(<元组值>),...,(<元组值>)

(3)查询结果的插入

    INSERT INTO  [(<列名序列>)]