SQL优化(数据库的优化)
1. 尽量使用列名(不用*)
2. where解析顺序: 右--》 左
3. 自连接不适合操作大表
4. 尽量使用多表查询不使用子查询语句
5. 尽量不要使用集合运算
SQL中的null值:
1. 包含null的表达式都为null
2. null永远!=null
3. 如果集合中含有null,不能使用not in; 但可以使用in
4. null的排序(当排序列中有null时,使用 nulls last || nulls first 决定null的位置)
select * from emp order by comm desc nulls last
5.组函数(多行函数)自动滤空,可以嵌套滤空函数 来屏蔽他的滤空功能
伪表:
dual(常使用在from后面,当做一张无数据表使用)
伪列:
level: 层次查询中的层级标号.
ROWNUM: 列的编号:
1. rownum永远按照默认的顺序生成(先于排序生成);
2. rownum只能使用 < <=; 不能使用> >=
3. rowid 行地址 指向数据文件中的位置
临时表:
1. create global temporary table *****
2. 自动创建: order by
特点:当事务或者会话结束的时候,表中的数据自动删除
SQL和SQL*PLUS的区别: SQL没有简写,sql*plus关键字可以被缩写
Oracle是自动开启事务
1. 起始标志:事务中第一条DML语句
2. 结束标志:提交: 显式 commit
隐式 正常退出(exit),DDL,DCL
回滚: 显式 rollback
隐式 非正常退出,掉电,宕机
savepoint a;
rollback to savepoint a;
全局事物(分布式事务): 操作的对象不一定是数据库.
执行其他文件: SQL> @d:\temp\testdelete.sql
管理员登录有: 密码认证, 主机认证/外部认证 三种情况.