sql非一般写法记录

sql特殊写法记录一、集合的并、交、差(select 查询语句1) UNION 【ALL】 (select 查询语句2)(select 查询语句1)

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<ALL><ANY>(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 <TABLENAME> [(<列名序列>)]VALUES(<元组值>)

(2)多元组的插入

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

(3)查询结果的插入

    INSERT INTO <TABLENAME> [(<列名序列>)]<SELECT 查询语句>

        (4)表的插入

    INSERT INTO <TABLENAME> [(<列名序列>)] TABLE <基本表名2>