首页 > 数据库 > 数据库开发技术 > [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
可在insert或update中显式使用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…values、decode、case等
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博客 ” ,链接:https://blog.itpub.net/8558093/viewspace-1014679/ ,如需转载,请注明出处,否则将追究法律责任。