---恢复内容开始---
- 1 select 列数 <= group by 列数 (在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中)
- 2 避免select *, 相比select 列名1,列名2,列名3......列名n,后者具有的优点有(
1)性能上较好,select *需要把*进行转换,而把列名全部列出来省了这一步
2)如果后续表字段有增减,在代码上便于修改
- 3 表关联
- 表关联包括左联,右联,内联,全外联,非等值连接
- 左联和右联的效率是低于等值连接的,因为等值连接可以走索引
- 3.1 left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
- 写法:select a.name,b.job from A a left join B b on a.id=b.A_id 等同于 select a.name,b.job from A a , B b on a.id=b.A_id (+)
- 3.2 right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
- 写法:select a.name,b.job from A a right join B b on a.id=b.A_id等同于 select a.name,b.job from A a , B b on a.id(+)=b.A_id
- 3.3 inner join (等值连接):只返回两个表中连接字段相等的行。
- 写法:select a.name,b.job from A a inner join B b on a.id=b.A_id
- 参见百度上与“select a.name,b.job from A a , B b on a.id=b.A_id”两者区别在于:inner join 先过滤数据在联表查询,而联表是取所有数据再过滤。联表查询相对来说内链接速度稍慢。
- 自然连接和等值连接
-
1、自然连接一定是等值连接,但等值连接不一定是自然连接。
2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。 - 4 in/not in里面的数量是有限的(in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000.),效率低
- exists/not exists效率较好,走索引
- 在Oracle中!=相当于(is not null)+(!=)
- 5 NVL( string1, replace_with) 如果string1为NULL,则NVL函数返回replace_with的值,否则返回原来的值。
与SQLserver 中的 ISNULL( string1, replace_with) 一样。
-
NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。
-
6 update 和 delete操作,先用select再改,不要直接写update ,delete
-
---恢复内容结束---