[SQL]007学习笔记总结

between…and…

包含两头,必须把lower limit定义在前,否则不会报错但选不出结果。字符串作为边界值也可。

使用Escape可设置一个escape character,用于在字符串中充当转义符。

Where job_id like ‘%SA_%’ ESCAPE ‘’;

to_date函数中Format_model中的fx前缀:保证必须精确匹配。

连接种类

Oracle

Equijoin

where table1.column1=table2.column2

Nonequijoin

Outer join

where table1.column(+)=table2.column

Self join

SQL1999

Cross joins

same with Cartesian product FROM table1 CROSS JOIN table2

Natural joins

FROM table1 NATURAL JOIN table2 必须保证同名的列数据类型也相同,所有名字相同的列都关联。

Using Clause

可以用于关联部分名字相同的列(而不是全部),可用于数据类型不同的情况;与自然连接一样,相关联的列不能使用表名或别名。

Full or two sided outer joins

table1 LEFT OUTER JOIN table2 ON

table1 RIGHT OUTER JOIN table2 ON

table1 FULL OUTER JOIN table2 ON

Arbitrary join conditions for outer joins

join table1 on condition1 join table2 on condition2-可以使用其他条件,但一般建议把连接条件写在此处

Group Fuctions

AVG,COUNT,MAX, MIN, STDDEV, SUM, VARIANCE

count(*)外全部忽略空值,如需考虑空值需要使用相关函数如NVL

使用having子句来对group function的结果进行筛选,可放在group by之前但在之后更易理解

Group function可以嵌套两层

Types of Subqueries

Single-row subquery

Multiple-row subquery

IN, ANY, ALL

NOT IN子查询-如子查询结果中包含空值,则不会返回任何结果

break on column-用于在isql*plus中消除重复的行,必须使用order by才能有效果

Using a Subquery in an INSERT Statement

可使用子查询代替表名,子查询中的列和顺序必须和values相匹配。约束生效。

WITH CHECK OPTION:只能插入限定在子查询范围内的记录。

INSERT INTO (SELECT…WITH CHECK OPTION) VALUES…

Using Explicit Default Values

可在insertupdate中显式使用default赋值

Creating a Table by Using a Subquery Syntax

列定义可包含dafault值,原表的完整性约束不复制到新表

Inline Views-A named subquery

alter sequence无法改变start value

user_tab_privs_made Object privileges granted on the user’s objects

user_tab_privs_recd Object privileges granted to the user

Scalar Subqueries

返回一个标量值,可用于select字句(除group by外)、insert…valuesdecodecase

Correlated Subqueries

在内层查询中用到外层查询的记录值,对于外层查询的每一条记录都执行一遍子查询

使用Exists

一旦子查询中发现符合条件的记录,则子查询不再继续

使用With子句

用于表示在复杂查询中多次被引用的查询块,将结果集存储在临时段中,可提高性能

Connect by-Pruning branches

使用where过滤掉某一个节点(但子节点仍然在结果集中)

使用connect by过滤掉某一个分支(节点和其所有子节点)

Multitable INSERT-多张表同时插入

Unconditional INSERT ALL

INSERT ALL

INTO table1 VALUES(…)

INTO table2 VALUES(…)

SELECT …

Conditional INSERT ALL-多张表满足条件则插入

INSERT ALL

WHEN … THEN

INTO table1 VALUES(…)

WHEN … THEN

INTO table2 VALUES(…)

SELECT …

Conditional FIRST INSERT-插入满足条件的第一张表,同一条记录只插入一张表

INSERT FIRST

WHEN … THEN

INTO table1 VALUES(…)

WHEN … THEN

INTO table2 VALUES(…)

ELSE

INTO table3 VALUES(…)

SELECT ….

Pivoting INSERT

对各种不同的data source(如非关系数据源)进行一些列的转换,从而完成插入

External Tables

不能修改,不能创建索引

Create index with CREATE TABLE statement

Using index (create index …)

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8558093/viewspace-1014679/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8558093/viewspace-1014679/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值